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

这篇具有很好参考价值的文章主要介绍了【STM32 CubeMX】I2C层次结构、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的主控芯片
stm32cube 硬件i2c,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c,c++,51单片机,mcu
如果我们想在屏幕上显示文字,我们只需要编写程序来初始ssd1306芯片
接下来我们把数据通过IIC总线写到ssd1306里面的显存来:
stm32cube 硬件i2c,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c,c++,51单片机,mcu
显存里面就保存着要显示的数据。这个芯片会周而复始的把数据刷到屏幕里面。
在以后,我们只需要初始化好ssd1306,然后把数据写到显存里面来就可以。

1.4 软件层次

stm32cube 硬件i2c,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c,c++,51单片机,mcu

二、IIC协议

2.1 硬件连接

I2C在硬件上的接法如下所示,主控芯片引出两条线SCL,SDA线,在一条I2C总线上可以接很多I2C设备,我们还会放一个上拉电阻(放一个上拉电阻的原因以后我们再说)。
stm32cube 硬件i2c,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c,c++,51单片机,mcu

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 传输数据类比

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

比如说:上体育课,一个老师和多个学生:
stm32cube 硬件i2c,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c,c++,51单片机,mcu

发球:
老师:开始了(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切换数据,如下图所示:
stm32cube 硬件i2c,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c,c++,51单片机,mcu
如果说,主机传输完了开始信号,但是数据并没有准备好,那么我们的SCL拉低,等待我们的数据到来,他可以由主机拉低也可以由从机拉低,表示现在没有数据要等一下

2.4 I2C数据的含义

在I2C中,有下面的数据传输:
stm32cube 硬件i2c,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c,c++,51单片机,mcu
第一个8位表示地址和读写标识,但是后面的并未规定他有什么含义

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

如果是读操作:
stm32cube 硬件i2c,从0带你学会如何像人类一样写STM32程序,stm32,嵌入式硬件,单片机,c,c++,51单片机,mcu
在上一次你把存储地址发给设备了,在第二次你发起一个读操作,他就把那个地址上的数据返回给你。
这些数据的含义完全由芯片决定!


总结

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

到了这里,关于【STM32 CubeMX】I2C层次结构、I2C协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【【STM32----I2C通信协议】】

    我们会发现I2C有两根通信线: SCL和SDA 同步 半双工 带数据应答 支持总线挂载多设备(一主多从,多主多从) 硬件电路 所有I2C设备的SCL连在一起,SDA连在一起 设备的SCL和SDA均要配置成开漏输出模式 SCL和SDA各添加一个上拉电阻,阻值一般为4.7KΩ左右 左边的CPU就是主机,他的权

    2024年02月12日
    浏览(13)
  • stm32中的i2c协议

    协议通讯图 I2C上一个总线能挂载多个设备共用信号线,可以连接多个从机 只用了两个总线,一条双向串行数据线(SDA),一条串行时钟线(SCL)。数据线即用来表示数据,时钟线用于数据收发同步。 每个连接到总线的设备都有独立的地址,主机可以通过该地址进行访问 I2C空闲

    2024年01月22日
    浏览(22)
  • STM32配合cubeMX硬件I2C驱动0.96寸OLED

    目录 一、简单介绍 1.1   OLED 1.2   I2C协议 二、实战 2.1 工程配置 2.2 测试工程 2.3 波形分析 三、驱动OLED 3.1 初始化代码 3.2 清屏函数 3.3 设置坐标函数 3.4 显示字符函数 3.5 显示字符串函数 3.6 显示图片函数 附录 驱动代码文件 oled.c oled.h f6x8.h 有机发光二极管 (英语:Organic

    2024年02月08日
    浏览(18)
  • 【STM32】STM32学习笔记-I2C通信协议(31)

    I2C(Inter-Integrated Circuit)总线 是一种由NXP(原PHILIPS)公司开发的两线式串行总线,用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。 串行的 8 位双向数据传输位速率在标准模式下可

    2024年01月23日
    浏览(22)
  • 第五章 stm32 cubemx 软件I2C实验以及EEPROM的使用理论及实验过程

    本章将讲解stm32通讯协议中的IIC协议,利用cubeMX完成软件和硬件IIC的实现,并结合实验数据,给人更为深刻的体验。 我们结合IIC的具体协议和逻辑分析仪得到的具体实验数据理解IIC协议。 I2C通讯协议是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要

    2024年01月21日
    浏览(24)
  • 【STM32学习】——I2C通信协议&MPU6050姿态传感器&软件I2C读写MPU6050

    ​   目录 前言 一、I2C通信协议 1.简介 2.硬件电路设计 3.I2C时序(软件)

    2024年02月16日
    浏览(20)
  • STM32 OLED显示汉字及屏幕滚动(I2C协议)

    理解OLED屏显和汉字点阵编码原理,使用STM32F103的SPI或IIC接口实现以下功能: 显示自己的学号和姓名; 显示AHT20的温度和湿度; 上下或左右的滑动显示长字符。 STM32F103C8T6最小板 AHT20温湿度传感器 ST-LINK 仿真器 4针脚使用I2C通信协议的OLED屏 面包板 杜邦线 KEIL 5 字模软件 可以看

    2024年02月03日
    浏览(20)
  • STM32模拟I2C协议获取HDC1080温度和湿度传感器数据

    HDC1080是一款温湿度传感器,具有如下特点: 其中温度和湿度经过出厂校准。这里介绍STM32模拟I2C总线协议访问HDC1080的HAL库实现范例。 HDC1080的内部原理及电路连接如下: HDC1080具有低功耗特征,每次触发检测转换后进入睡眠状态,另外内部有一个加热电阻,在环境湿度高时,

    2024年02月11日
    浏览(54)
  • STM32模拟I2C协议获取HMC5883L电子罗盘磁角度数据 (HAL)

    HMC5883L 传感器采用霍尼韦尔各向异性磁阻(AMR)技术,应用于罗盘和三轴磁场角度检测领域,常用于水平物体转动的角度识别。HMC5883L 采用I2C总线接口,2.16~3.6V供电范围,带有校准测试功能。 HMC5883L的硬件连接有5个管脚,除了VCC和GND,以及I2C的SCK和SDA,还有一根INT中断线,用于

    2024年02月13日
    浏览(19)
  • STM32 I2C

    目录 I2C通信  软件I2C读写MPU6050 I2C通信外设 硬件I2C读写MPU6050 I2C通信 R/W:0写1读 十轴:3轴加速度,3轴角速度,3轴磁场强度和一个气压强度  软件I2C读写MPU6050 MyI2C.c MPU6050.c MPU6050_Reg.h(寄存器) main.c I2C通信外设 GPIO口需要配置为复用开漏输出模式。复用:就是GPIO的状态是交由

    2024年02月19日
    浏览(18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包