i2c使用规则(浅聊I2C通信)
i2c使用规则(浅聊I2C通信)图二I2C信号时序本次项目中使用的是M24128-BFMC6,由于单片机的资源紧张,依然使用软仿模拟I2C通信。测试中也遇到了一点问题,延时不准确的情况下会出现写数据不成功,或者读数据出现错位等等,延时修改为定时器延时之后这些问题得到解决。图三软仿I2C驱动
I2C(Inter-Integrated Circuit BUS) 集成电路总线,该总线由NXP(原PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短等特性。
I2C总线只有一根串行数据线SDA和一根是串行时钟线SCL,I2C是半双工通信,渡河写不能同时进行。I2C是真正的多主机总线,但是任意时刻只能有一个主机。传输速率在标准模式下可以达到100kb/s 快速模式下可以达到400kb/s。每个连接到总线的器件都可以通过唯一的地址和其它器件通信。连接到总线的IC数量只是受到总线的最大负载电容400pf限制。
图一I2C多机硬件连接
I2C协议层,由主机产生起始信号和停止信号。起始信号逻辑:当SCL为高电平期间,SDA由高到低的跳变;停止信号逻辑:当SCL为高电平器件,SDA由低到高的跳变;起始信号和停止信号是电平跳变信号。在时钟信号SCL为高电平时,数据线SDA上的数据必须保持稳定,非“1”即“0”,因为时钟信号SCL为低电平时,SDA数据无效,一般在这个时候SDA进行电平切换,为下一次表示数据做好准备。当主机向从机发送完一个字节的数据,主机总是需要等待从机给出一个应答信号,以确认从机是否成功接收到了数据,应答出现在第9个时钟周期,低电平0表示应答,1表示非应答。
图二I2C信号时序
本次项目中使用的是M24128-BFMC6,由于单片机的资源紧张,依然使用软仿模拟I2C通信。测试中也遇到了一点问题,延时不准确的情况下会出现写数据不成功,或者读数据出现错位等等,延时修改为定时器延时之后这些问题得到解决。
图三软仿I2C驱动