IIC总线:
- 半双工通信,一条串行数据线SDA,一条串行时钟线SCL
- 每个连接到总线的器件都可以使用软件根据它的惟一地址来识别
- 传输数据的设备之间是简单的主从关系
信号类型:
- 开始信号(S):SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据
- 结束信号(P):SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据
- 响应信号(ACK):接收器在接收到8位数据后,在第9个时钟周期,拉低SDA电平
SDA上传输的数据必须在SCL为高电平期间保持稳定,SDA上的数据只能在SCL为低电平时发生变化
写:
红色代表从机,黑色代表主机
开始S | 从机地址 | 方向R/W | 响应ACK | 数据 | 响应ACK | 结束P |
读:
开始S | 从机地址 | 方向R/W | 响应ACK | 数据 | 响应ACK | 结束P |
设备地址为7位,高位先传。把设备地址和方向位看作一组数据。
2440的IIC控制器:
涉及的寄存器:
PCLK为50M,设置IICCON,设置时钟。IICSTAT发出信号(三种信号发出)。
上图中,ACK后产生中断,SCL被拉低,直到请中断。
发送模式下,发送完一个数据就拉低SCL,直到中断程序完成,IIC继续工作。
接收模式下,接收数据,产生中断,SCL被拉低,中断程序里判断各种情况,之后执行相应操作,IIC继续工作,继续接收下一个数据。