关于IO口模拟IIC的疑惑
我用普通IO口模拟IIC来对24C04进行读写操作,比如我先向sda线上发送地址 0000 0011,一般程序是用for循环来写这个值的,比如我写到了第二位(将sda置高),与此同时来了一个中断,那么这个时候会进入中断isr,那么sda口上始终是保持高电平的,24c04接收到的也是高电平信号,也就是说24c04接受到的地址信号可能是1111 1111,也可能是其他数,那么这样还能确保读到的数据的正确性吗? 小弟用逻辑分析仪看了一下波形,得到一下启发:1.中断不能太过频繁(给主程序预留一些时间)
2.中断程序执行的时间也不要太长
这样的话模拟iic读写是不太可能出现时序混乱的,不过理论上来说是有可能发生错乱的 同步通信是不会有问题,最多就是通信速度慢了,对异步通信就有问题 che180 发表于 2014-4-10 17:55 static/image/common/back.gif
模拟I2C 的SDA SCL,当SCL为高电平时读取SDA数据,理论上SCL一个脉冲高电平读取SDA一位数据,当在发送 ...
谢谢解惑 LZ还没有搞清楚基本的东西
数据是在时钟边沿被锁存的 读写IIC期间关闭总中断的... 同意楼上 I2C通讯中途被中断多久都无所谓,不会引起错误。 ningling_21 发表于 2014-4-10 19:16
读写IIC期间关闭总中断的...
别误导人家了 同意三楼的说法,IIC通讯属于同步通讯,由于读写数据位的速度是由SCL引脚控制,被中断是不会出现问题的
可以网上搜一些IIC通讯时序参考一下(比如24LC02的IIC时序图)
最后再同意10楼一下 我能不能问一下,怎么往sda线上发送00000011,我都被这个问题难到几个星期了 每天都要吃肉肉 发表于 2020-9-27 16:07
我能不能问一下,怎么往sda线上发送00000011,我都被这个问题难到几个星期了 ...
网上搜一搜模拟I2C的视频就知道了,在SCL的配合下,依次在SDA引脚输出对应的高低电平就好了。
xyz549040622 发表于 2020-9-27 22:17
网上搜一搜模拟I2C的视频就知道了,在SCL的配合下,依次在SDA引脚输出对应的高低电平就好了。
...
好的,谢谢 时钟和校验都可以保证
页:
[1]