树莓派python gpio 模仿iic_GPIO实现I2C协议模拟(1)

2023-05-16

最近需要用GPIO模拟I2C协议,如果是在Linux下面比较简单,但在Windows下面,是否有没Linux那么简单了。

索性自己对I2C协议还有一些了解,翻了SPEC并结合示波器量出的实际信号分析,总算有些成就,在这里以做记录

I2C是什么,这里不做介绍,网上资料太多.

要用GPIO模拟I2C协议,就是控制GPIO的High与Low,复制出与I2C通信协议一样的波形出来.

由于标准的I2C频率在10K到100kHz之间,所以用GPIO模拟还是需要考虑一个IO动作时间问题.

个人推荐整个模拟动作在驱动里面实现,如果在APP层通过IO驱动提供的IO RW来做,性能上面会慢很多

言归正题

波形的理解.

I2C波形分为开始,发送数据,接收数据, ACK, NACK, STOP这些行为.

SCL为Low时,可以修改SDA的状态,SCL为HIGH时为电平稳定期,同时也是另一端接收时间

开始:     SCL为High的时候,SDA由High变为LOW

ACK:    SCL为High的时候,SDA为Low

NACK:    SCL为High的时候,SDA为High

发送数据:  以8Bit为一个单元,一个BIT一个BIT的发,高位先发,低位后发,

接收数据:  同上

STOP :     SCL为High的时候,SDA由Low变为High

Master每发送一个字节后,都需要读 Slave 的回应,ACK表示执行成功,NACK表示Slave没有响应.

Master接收Slave发送的数据,每接收一个,都需要发一次ACK给SLAVE,然后再接收,接收完成后,需要发NACK及STOP给 Slave

后续请看后面章节描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树莓派python gpio 模仿iic_GPIO实现I2C协议模拟(1) 的相关文章

随机推荐