stm32中IIC通讯协议

参考资料:大部分均引用b站江协科技课程、GPT及网络资料

什么是IIC(i2C)通讯协议?

关键字:SCL、SDA、半双工、同步、串行。

IIC(Inter-Integrated Circuit),也称为I2C(Inter-Integrated Circuit),是一种由Philips公司(现为NXP)开发的用于在集成电路之间进行短距离通信的串行总线协议 。IIC协议非常适合低速 设备之间的数据传输,具有简单、低成本和易于实现的特点。

其中有几个问题:为什么是短距离?什么是串行总线?这个等学完概念后再进行解答。

概念:

IIC总线基本特性
  1. 双线结构:IIC总线采用两根双向线路进行通信:

    • SCL(串行时钟线):由主设备产生的时钟信号,用于同步数据传输。
    • SDA(串行数据线):用于传输数据,数据在时钟信号的控制下进行传输。
  2. 多主从结构 :支持总线挂载多设备(一主多从、多主多从 )。每个设备都有一个唯一的地址

  3. 地址分配IIC设备使用7位或10位地址来唯一标识每个设备 。在传输数据时,主设备通过地址帧选择目标从设备

  4. 同步,半双工

数据传输
  • 数据帧 :每次传输的数据帧由8位数据组成,从高位(MSB)到低位(LSB)传输
  • 应答位(Acknowledge Bit):在每个数据帧传输之后,由接收方发送一个应答位。若应答位为低电平,表示接收成功;若应答位为高电平,表示接收失败。
数据读写过程
  1. 写操作

    • 主设备发送起始条件。
    • 主设备发送从设备地址以及读写控制位(0表示写,1表示读)。
    • 从设备发送应答位。
    • 主设备发送要写入的数据。
    • 从设备发送应答位。
    • 重复数据传输和应答,直到所有数据传输完毕。
    • 主设备发送停止条件。
  2. 读操作

    • 主设备发送起始条件。
    • 主设备发送从设备地址以及读写控制位。
    • 从设备发送应答位。
    • 主设备切换到接收模式,读取数据。
    • 主设备发送应答位。
    • 重复数据读取和应答,直到所有数据读取完毕。
    • 主设备发送停止条件。

IIC时序:

1.起始和终止

起始条件:SCL高电平期间,SDA从高电平切换到低电平

终止条件:SCL高电平期间,SDA从低电平切换到高电平

2.发送和接收

发送一个字节: SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位 ,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节

接收一个字节: SCL低电平期间,从机将数据位依次放到SDA线上(高位先行),然后释放SCL,主机将在SCL高电平期间读取数据位 ,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA)

3.应答

发送应答:主机在接收完一个字节之后,在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答

接收应答:主机在发送完一个字节之后,在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA)

了解了这些基本知识,再回到开头,IIC其只需要两根线控制,一根时钟线(SCL)控制同步,一根数据线(SDA)传输数据,因为只有一根数据线,数据逐个传输,因此是串行通讯。

其中还提到了半双工,这里来解释下:

半双工:数据可以在两个方向上传输,但不能同时进行,如iic,rs485

全双工:数据可以在两个方向上同时进行传输。发送和接收可以同时进行,不会互相干扰,

如RS-232。

**单工:**数据只能在一个方向上传输。发送方只能发送,接收方只能接收,如电视广播。

iic在长距离的环境中,容易受到干扰造成电平跳变,会严重影响数据的准确性,且IIC协议依赖于时钟线(SCL)和数据线(SDA)的同步工作。长距离可能导致信号延迟不一致,因此其适合短距离通讯。

相关推荐
fie888921 小时前
基于51单片机的航模遥控器6通道接收机程序
单片机·嵌入式硬件·51单片机
bu_shuo21 小时前
嵌入式硬件工程师VS单板硬件工程师
嵌入式硬件·电子工程师·单板硬件
llilian_1621 小时前
选择北斗导航卫星信号模拟器注意事项总结 北斗导航卫星模拟器 北斗导航信号模拟器
功能测试·单片机·嵌入式硬件·测试工具·51单片机·硬件工程
为何创造硅基生物1 天前
ESP32S3的RGB屏幕漂移问题
网络
Yyq130208696821 天前
MH2457,‌国产 32 位屏驱 MCU‌芯片,支持‌1080P 高清显示‌与‌以太网通信‌,广泛应用于两轮车仪表盘及工控屏等领域
单片机·嵌入式硬件
好运的阿财1 天前
process 工具与子agent管理机制详解
网络·人工智能·python·程序人生·ai编程
周杰伦fans1 天前
C# required 关键字详解
开发语言·网络·c#
洛水水1 天前
深入理解网络编程核心:Reactor、IOCP 与异步 IO 模型详解
网络·iocp
爱分享的阿Q1 天前
STM32现代化AI开发环境搭建:从Keil到VSCode+AI的范式转移
人工智能·vscode·stm32
favour_you___1 天前
epoll惊群问题与解决
服务器·网络·tcp/ip·epoll