1、在做一个项目的时候,用到多主一从的硬件I2C,采用总线竞争的方式进行通信。在测试的过程中,有出现过两个主芯片同时收到数据产生竞争,其中一个抢到线的主芯片一直进入I2C中断,但是不会发数据出来,导致“死”在那里了。这样由于总线没有被释放,其它的主芯片也就没办法通信。不知道大家有没有遇到过,是什么原因?
2、I2C通信时,我采用了校验和重发机制。收到停止位后,若数据不全或者校验错误,就用一个引脚用作信号线通知主芯片,让主芯片重发一次。重发正确的数据后就释放这根信号线。不知道这种重发机制正不正确,有没有其它更好一点的方法。 |