板间通信1:IIC
SDA SCL
100K 400K 3.4m
1
SDA 数据在SCL高电平稳定,低电平变化
开始标志:SCL高电平 SDA拉低
结束标志: SCL高电平 SDA拉高
开始和结束标志由主机产生。
总线忙 :开始标志后一段时间
总线空闲:结束标志后一段时间
2
字节格式:必须8bit,每个字节必须加一个ack
第一个传输的是数据的最高位MSB
假如从机要完成其他一些功能后才能接受或者发送下一个字节。
可以使SCL 保持 低电平迫使主机进等待状态。
CBUS不产生响应。(第十章
3
响应:响应的时钟脉冲由主机产生。SCL 八个时钟周期后,又产生第九个ACK时钟周期。
随后开始等待(即SCL保持低电平)。
在第九个ACK时钟周期期间,接收器需将SDA拉低。
使得SDA在ACK期间,稳定低电平。
从机接收端对地址信息也要响应ACK(CBUS地址开头除外 第十章
从机不能响应ACK时,需将SDA保持高电平(无ACK
随后主机产生停止条件或者重复开始条件。
从机响应了地址ACK,有一个数据没有响应ACK。
即从机保持了高电平,主机将产生停止或重复开始条件
从机作为发送端时:
the last byte that was clocked out of the slave。
对于从机时钟输出的最后一个字节,主机将不产生ACK。
这是给从机发送器的数据传输结束的信号。
随后从机发送器必须释放SDA,允许主机产生停止或重复开始条件
4
同步:
所有主机在SCL 线上产生自己的时钟。主机的IIC接口通过线与连接到SCL线上。
SCL高->低,所有的器件开始数低电平周期。
其中一个器件拉高,但是另一个器件仍是低,则SCL保持低。
拉高的那个器件进入高电平等待状态。(等SCL高了之后才开始自己的高电平周期
所有器件数完低电平周期后,SCL低->高。所有器件开始数高电平周期。
最先数完高电平周期的器件将SCL拉低。SCL高->低电平变化
SCL的低电平周期 = 低电平周期最长的器件
SCL的高电平周期 = 高电平周期最短的器件
5
仲裁:
SCL 高: 在SDA上仲裁,有主机SDA发了低,还在发高的主机断开连接。
仲裁可持续多位:
若主机寻找的从机地址相同,则比较数据位。或比较响应位。
仲裁不丢失信息,仲裁失败的主机产生时钟脉冲知道丢失仲裁的该字节末尾。
若主机也结合了从机功能,寻址阶段丢失了仲裁。它可能是赢得仲裁的主机在寻的从机
丢失的主机必须立即切换到从机模式
注:???必须在帧格式相同的位置发送这个重复开始条件或者停止条件
仲裁不能再如下条件进行:
重复开始条件和数据位
停止条件和数据位
重复开始条件和停止条件
从机不被卷入仲裁过程
6 地址格式:
第一个字节的前7位,+一位(0w 1r) (决定 从机是接收器还是发送器
数据传输一般由主机产生停止条件(P)
若主机仍希望继续写通信,它可以重复产生开始条件。(Sr)
... 三种读写格式:
1 传输方向不变 2 传输方向改变 3 复合结构
从机地址由固定 + 可编程部分(硬件电路决定)
广播呼叫地址:寻址连接到每个器件。...
7 起始字节:
两种方式连接到IIC总线:1 硬件IIC接口。可编程为总线请求中断
2 器件没有接口,需要经常软件监控总线。
数据传输前要 传起始字节 00000001