【STM32 CubeMX】I2C层次结构、I2C协议

文章目录

  • 前言
  • 一、I2C的结构层次
    • 1.1 怎样在两个设备之间传输数据
    • 1.2 I2C如何传输数据
    • 1.3 硬件框图
    • 1.4 软件层次
  • 二、IIC协议
    • 2.1 硬件连接
    • 2.2 I2C 总线的概念
    • 2.3 传输数据类比
    • 2.3 I2C信号
    • 2.4 I2C数据的含义
  • 总结


前言

在STM32 CubeMX环境中,I2C(Inter-Integrated Circuit)是一种常用的串行通信协议,广泛应用于连接各种外设和传感器。理解I2C的层次结构、协议和硬件结构对于STM32微控制器的开发至关重要。通过STM32 CubeMX提供的图形化配置工具,我们能够更轻松地理解和配置I2C通信,同时深入了解其层次结构、协议和硬件结构,有助于更高效、可靠地设计嵌入式系统。


一、I2C的结构层次

1.1 怎样在两个设备之间传输数据

在两个设备之间进行数据的传输,我们有两种方式,一种是异步传输,一种是同步传输。
比如串口,他是异步传输。
比如I2C,他是同步传输。

1.2 I2C如何传输数据

在I2C中,他有两个引脚

  • SCL
    SCL为时钟信号,在时钟的同步下,我们就可以进行数据的传输
  • SDA
    SDA进行数据的传输。

I2C是半双工的,因为他只有一条数据线,只能发送完了再接收或者接收完了再发送,而我们的串口可以一边发送一边接收,串口是全双工的。

1.3 硬件框图

比如说oled的硬件框图,里面有一个ssd1306的主控芯片
在这里插入图片描述
如果我们想在屏幕上显示文字,我们只需要编写程序来初始ssd1306芯片
接下来我们把数据通过IIC总线写到ssd1306里面的显存来:
在这里插入图片描述
显存里面就保存着要显示的数据。这个芯片会周而复始的把数据刷到屏幕里面。
在以后,我们只需要初始化好ssd1306,然后把数据写到显存里面来就可以。

1.4 软件层次

在这里插入图片描述

二、IIC协议

2.1 硬件连接

I2C在硬件上的接法如下所示,主控芯片引出两条线SCL,SDA线,在一条I2C总线上可以接很多I2C设备,我们还会放一个上拉电阻(放一个上拉电阻的原因以后我们再说)。
在这里插入图片描述

2.2 I2C 总线的概念

I2C(Inter-Integrated Circuit,又称 IIC)总线是一种由 PHILIPS 公司开发的串行总
线,用于连接微控制器及其外围设备,它具有如下特点:
只有两条总线线路:一条串行数据线(SDA),一条串行时钟线(SCL)。

每个连接到总线的器件都可以使用软件根据它的惟一的地址来识别。

传输数据的设备间是简单的主/从关系。

主机可以用作主机发送器或主机接收器。

它是一个真正的多主机总线,两个或多个主机同时发起数据传输时,可以通过冲
突检测和仲裁来防止数据被破坏。

串行的 8 位双向数据传输,位速率在标准模式下可达 100kbit/s,在快速模式下
可达 400kbit/s,在高速模式下可达 3.4Mbit/s。

片上的滤波器可以增加抗干扰功能,保证数据的完整。

连接到同一总线上的 IC 数量只受到总线的最大电容 400pF 的限制。

对于I2C协议,一个I2C总线可以接多个设备.

2.3 传输数据类比

先说明一些术语,如下所示。
◼ 发送器:发送数据到总线的器件
◼ 接收器:从总线接收数据的器件
◼ 主机:发起/停止数据传输、提供时钟信号的器件
◼ 从机:被主机寻址的器件
◼ 多主机:可以有多个主机试图去控制总线,但是不会破坏数据
◼ 仲裁:当多个主机试图去控制总线时,通过仲裁可以使得只有一个主机获得总线
控制权,并且它传输的信息不被破坏
◼ 同步:多个器件同步时钟信号的过程

比如说:上体育课,一个老师和多个学生:
在这里插入图片描述

发球:
老师:开始了(start)
老师:A!我要发球给你!(地址/方向)
学生A: 到!(回应)
老师把球发出去(传输)
A收到球之后,应该告诉老师一声(回应)
老师: 结束(停止)

接球:
老师:开始了(start)
老师: B!把球发给我!(地址/方向)
学生B:到!
B把球发给老师(传输)
老师收到球之后,给B说一声,表示收到球了 (回应)
老师:结束(停止)

① 老师说开始了,表示开始信号(start)
② 老师提醒某个学生要发球,表示发送地址和方向(address/read/write),发送的第一个字节前7位表示发送的地址,最后一位表示是写还是读,0位读,1为写。
③ 老师发球/接球,表示数据的传输
④ 到球要回应:回应信号(ACK),传输完一位后,主机会拉高SDA,如果找到了从机,从机会把SDA拉低,表示有这个设备
⑤ 老师说结束,表示 IIC 传输结束§

2.3 I2C信号

在SCL为高电平的期间,SDA数据要保持稳定(对方就是在SCL为高电平期间来读取SDA数据的),如果你想修改下一位数据,你需要把SCL拉低,保持SCL为低电平,在SCL为低电平期间,SDA切换数据,如下图所示:
在这里插入图片描述
如果说,主机传输完了开始信号,但是数据并没有准备好,那么我们的SCL拉低,等待我们的数据到来,他可以由主机拉低也可以由从机拉低,表示现在没有数据要等一下

2.4 I2C数据的含义

在I2C中,有下面的数据传输:
在这里插入图片描述
第一个8位表示地址和读写标识,但是后面的并未规定他有什么含义

如果说,你要去访问一个存储芯片,你确定地址之后,你就可以发送数据
如果你想写,你肯定先要确定写地址,后面的就是存储数据

如果是读操作:
在这里插入图片描述
在上一次你把存储地址发给设备了,在第二次你发起一个读操作,他就把那个地址上的数据返回给你。
这些数据的含义完全由芯片决定!


总结

在STM32 CubeMX环境中,对I2C的深入理解对于嵌入式系统的开发至关重要。I2C的层次结构、协议和硬件结构直接影响了通信的效率和可靠性。通过使用STM32 CubeMX的图形化配置工具,我们能够更便捷地进行I2C通信的配置,提高了开发效率。总体而言,对于STM32微控制器开发者而言,深入了解I2C的各个方面,有助于更好地利用该通信协议,构建出稳定可靠的嵌入式系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/686161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开年炸裂-Sora/Gemini

最新人工智能消息 谷歌的新 Gemini 模型 支持多达 1M的Token,可以分析长达一小时的视频 1M Token可能意味着分析700,000 个单词、 30,000 行代码或11 小时的音频、总结、改写和引用内容。 Comment:google公司有夸大的传统,所以真实效果需要上…

鸿蒙语言ArkTS(更好的生产力与性能)

ArkTS是鸿蒙生态的应用开发语言 ArkTS提供了声明式UI范式、状态管理支持等相应的能力,让开发者可以以更简洁、更自然的方式开发应用。 同时,它在保持TypeScript(简称TS)基本语法风格的基础上,进一步通过规范强化静态检…

qt-C++笔记之打印所有发生的事件

qt-C笔记之打印所有发生的事件 code review! 文章目录 qt-C笔记之打印所有发生的事件1.ChatGPT问答使用 QApplication 的 notify 方法使用 QObject 的 event 方法 2.使用 QObject 的 event 方法3.使用 QApplication 的 notify 方法 1.ChatGPT问答 在Qt C中,若要打…

老兵(11)

百度文心一格,大约是一年前上线并免费向用户开放的。其实也不是免费,而是“电量”比较好获得,白送的就16/每天,如果只是好奇玩玩的话也算够吧。 当时就很开心,因为一直想着把一些文案图像化,做成漫画的形式…

从被“大V”忽悠到自主开发投资分析系统:我在基金投资中的跌宕起伏与转变

从被“大V”忽悠到自主开发投资分析系统:我在基金投资中的跌宕起伏与转变 回顾我初次涉足基金投资的经历,那是一段由盲目跟从、亏损惨重到痛定思痛、自我提升的曲折历程。起初,我深受某些财经“大V”的影响,他们凭借看似精准的市…

算法刷题:复写零

复写零 .习题链接题目描述算法原理初始值步骤1步骤2我的答案: . 习题链接 复写零 题目描述 给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 注意:请不要在超过该数组长度的位置写入元素…

LEETCODE 164. 破解闯关密码

class Solution { public:string crackPassword(vector<int>& password) {vector<string> password_str;for(int i0;i<password.size();i){password_str.push_back(to_string(password[i]));}//希尔排序int gappassword.size()/2;while(gap>0){for(int i…

Eclipse Version: 2023-03 (4.27.0) JDK19 Tomcat10.2

Eclipse Version: 2023-03 (4.27.0) JDK19 Tomcat10.2

C语言学习day15:数组强化训练

题目一&#xff1a; 称体重&#xff1a;分别给10个值&#xff0c;来获得最大值 思路&#xff1a; 定义数组&#xff0c;给数组内赋10个值第一个下标的值与第二个下标的值进行比较定义max&#xff0c;将比较得来的较大的值赋值给max一直比较直到比较到最后一个下标&#xff0…

Redis篇----第三篇

系列文章目录 文章目录 系列文章目录前言一、缓存雪崩**二、缓存穿透三、缓存预热四、缓存更新五、缓存降级 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女…

【plt.scatter绘制散点图】:从入门到精通,只需一篇文章!【Matplotlib】

【plt.scatter绘制散点图】&#xff1a;从入门到精通&#xff0c;只需一篇文章&#xff01;【Matplotlib】&#xff01;&#x1f680; 利用Matplotlib进行数据可视化示例 &#x1f335;文章目录&#x1f335; 一、plt.scatter入门&#xff1a;轻松迈出第一步 &#x1f463;二、…

后端学习:Maven模型与Springboot框架

Maven 初识Maven Maven:是Apache旗下的一个开源项目&#xff0c;是一款用于管理和构建java项目的工具。 Maven的作用1.依赖管理2.统一项目结构3.项目构建依赖管理&#xff1a;方便快捷的管理项目依赖的资源(jar包)&#xff0c;避免版本冲突问题   当使用maven进行项目依赖…

太炸了!Sora深夜发布!网友:我要失业了

2022年末&#xff0c;OpenAI聊天机器人ChatGPT的面世无疑成为了引领人工智能浪潮的标志性事件&#xff0c;宣告了新一轮科技革命的到来。无论是聊天娱乐、教育学习&#xff0c;还是工作生产、医疗健康等领域&#xff0c;人工智能正以前所未有的速度渗透到我们生活的方方面面。 …

[NSSRound#16 Basic]Web

1.RCE但是没有完全RCE 显示md5强比较&#xff0c;然后md5_3随便传 md5_1M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&md5_2M%C9h%FF%0E%E3%5C%20%95r%D4w…

【FPGA开发】HDMI通信协议解析及FPGA实现

本篇文章包含的内容 一、HDMI简介1.1 HDMI引脚解析1.2 HDMI工作原理1.3 DVI编码1.4 TMDS编码 二、并串转换、单端差分转换原语2.1 原语简介2.2 原语&#xff1a;IO端口组件2.3 IOB 输入输出缓冲区2.4 并转串原语OSERDESE2 笔者在这里使用的开发板是正点原子的达芬奇开发板&…

【HarmonyOS】hdc 环境变量设置

hdc&#xff08;HarmonyOS Device Connector&#xff09;是 HarmonyOS 为开发人员提供的用于调试的命令行工具&#xff0c;通过该工具可以在 windows/linux/mac 系统上与真实设备或者模拟器进行交互。 hdc 工具通过 HarmonyOS SDK 获取&#xff0c;存放于 /Huawei/Sdk/openhar…

简单DP算法(动态规划)

简单DP算法 算法思想例题1、01背包问题题目信息思路题解 2、摘花生题目信息思路题解 3、最长上升子序列题目信息思路题解 题目练习1、地宫取宝题目信息思路题解 2、波动数列题目信息思路题解 算法思想 从集合角度来分析DP问题 例如求最值、求个数 例题 1、01背包问题 题目…

基于requests框架实现接口自动化测试项目实战

requests库是一个常用的用于http请求的模块&#xff0c;它使用python语言编写&#xff0c;在当下python系列的接口自动化中应用广泛&#xff0c;本文将带领大家深入学习这个库&#xff0c;Python环境的安装就不在这里赘述了&#xff0c;我们直接开干。 01、requests的安装 wi…

创新技巧|迁移到 Google Analytics 4 时如何保存历史 Universal Analytics 数据

Google Universal Analytics 从 2023 年 7 月起停止收集数据&#xff08;除了付费 GA360 之外&#xff09;。它被Google Analytics 4取代。为此&#xff0c;不少用户疑惑&#xff1a;是否可以将累积&#xff08;历史&#xff09;数据从 Google Analytics Universal 传输到 Goog…

智能传感器阅读笔记-智能传感器的发展历程、发展趋势及方向

智能传感器的发展历程 第一代智能传感器 第一代智能传感器是数字式传感器&#xff0c;指改造A/D转换模块&#xff0c;并采用数字技术进行信号处理&#xff0c;使输出信号为数字信号&#xff08;或数字编码&#xff09;的传感器&#xff0c;主要由放大器、A/D转换模块、微处理…