[笔记].I2C札记
数据的有效性
SDA数据线必须在SCL时钟线的高电平周期保持稳定,在SCL时钟线的低电平周期才可改变高低电平。
图1 I2C总线的位传输
起始和停止条件
起始条件(S):SCL时钟线保持高电平时,SDA数据线从高电平向低电平切换;
停止条件(P):SCL时钟线保持高电平时,SDA数据线从低电平向高电平切换。
图2 I2C总线的起始和停止条件
字节格式
发送到SDA数据线的每个字节必须为8位。每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是最高位(MSB)。
图3 I2C总线的数据传输
响应(应答)
数据传输必须带响应。在响应的时钟脉冲期间,发送器释放SDA数据线(高);接收器必须将SDA数据线拉低,使之在这个时钟脉冲的高电平期间保持稳定的低电平。响应位的数据状态遵循“谁接收谁产生”的原则,即总是由接收器产生响应位。此过程必须考虑建立和保持时间。
图4 I2C总线的响应
7位的地址格式
在起始条件(S)后,发送一个从机地址。这个地址共有7位,紧接着的是第八位的数据方向位(R/W’)。数据传输一般由主机产生的停止位(P)终止。如果主机仍希望在总线上通信,它可以产生重复其实条件(Sr)和寻址另一个从机,而不是首先产生一个停止位。
图5 完整的数据传输
可能的数据传输格式有:
1. 主机(发送器)发送到从机(接收器)。传输的方向不会改变。见图6。
2. 在第一个字节后,主机立即读从机。见图7。在第一次响应时,从机(发送器)变成主机(接收器),从机(接收器)变成从机(发送器)。第一次响应仍有从机产生。之前发送了一个不响应信号(A‘)的主机产生停止条件。
3. 复合格式,见图8。传输改变方向的时候,起始条件和从机地址都会被重复。但R/W’位取反。如果主机(接收器)发送一个重起始条件,它之前应该发送一个不响应信号(A‘)。
图6 主机(发送器)用7位地址寻址从机(接收器),传输方向不变
图7 在第一个字节后,主机立即读从机
图8 符合格式
信号连接示意图
图9 I2C总线信号连接示意图
参考
1.Philips Semiconductors, The I2C SPECIFICATION V2.1, 2000.02
2. 周立功单片机, I2C总线概要, 2006.11
3. 周立功单片机, 虚拟I2C汇编程序软件包
4. 何立民, I2C总线应用设计, 1995, 北京航天航空大学出版社
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步