您的位置:首页 > 其它

i2c驱动--i2c总线接口

2017-09-05 17:17 281 查看

i2c总线协议

i2c总线的物理结构:



通过控制SCL(串行时钟线)和SDA(串行数据线)高低电平时序,进行数据的传输。

总线空闲状态,上拉电阻拉高SCL和SDA,保持高电平。

i2c总线上的设备既可以作为主设备,也可以作为从设备。每一个设备都会对应一个唯一的地址,主从设备之间就通过这个地址来确定与哪个器件进行通信。

i2c总线信号类型:

开始信号(s):SCL为高电平,SDA由高电平向低电平跳变。

结束信号(p):SCL为高电平,SDA由低电平向高电平跳变。

响应信号(ack):接收到8位数据,在第九个时钟周期,拉低SDA电平。



主设备在SCL线上产生每个时钟脉冲的过程中将在SDA线上传输一个数据位,当一个字节按数据位从高位到低位的顺序传输完后,紧接着从设备将拉低SDA线,回传给主设备一个应答位, 此时才认为一个字节真正的被传输完成。



i2c总线数据传输格式:

发送到SDA线上的每个字节必须为8位,每次传输可以发送的字节数量不受限制,每个字节后必须跟一个响应位。

首先传输的是数据的最高位MSB。

如果从机要完成一些其他功能后,例如一个内部中断服务程序才能接收或发送下一个完整的数据字节,可以使时钟线SCL保持低电平迫使主机进入等待状态。当从机准备好接收下一个数据字节并释放时钟线SCL后数据传输继续 。



启动传输,主机先发出S信号,然后发八位数据。

八位数据,前七位是从机地址,第八位是传输方向。

从机发响应信号,然后传输字节和下一次的响应信号。

最后主机发送结束信号 P。

i2c总线控制器



IICDS:SDA线上的数据从IICDS发出或者传入IICDS

IICADD:从机地址

IICCON、IICSTAT:控制和标识各种状态。









i2c主机发送器的工作流程



(1)配置GPE15、GPE14用于SDA,SCL。

设置IICCON寄存器选择I2C发送时钟,设置IICSTAT[4]为1(使能接收/发送功能),为写IICDS准备。



(2)从机地址写入IICDS,用于寻址。

(3)IICSTAT中写入0xf0,参考寄存器说明可知,设置为主机发送器、发出S信号、使能接收/发送功能。

(4)发出S信号,IICDS中从机信号被发出,寻址,即找要写入的地址。

(5)在(1)中已经设置了IICCON[4]为1,响应周期后发生中断,I2c传输停止。

(6)没有数据要写入,跳转(10)。否则跳转到(7)。

(7)将要发送的数据写入IICDS。

(8)IICCON[4]写入0,恢复传输。

(9)IICDS寄存器中的数据一位一位发出。八位数据发送完毕,再经过一个SCL周期(第九周期ACK响应信号),中断再次发生,跳转到(5)。

(10)IICSTAT中写入0xd0,参考寄存器说明可知,设置为主机发送器、发出P信号、使能接收/发送功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: