MTK平台 使用IO口模拟IIC,能够正确读写总线上的GPIO扩展口芯片,但是当读写同一总线上的g——sensor芯片时(软件器件地址没写错),只能读出CHIP-ID寄存器的正确值,但是当读其它寄存器时候,得出的值不是0就是器件地址的值,请问是什么问题
硬件IIC只能接到它固定的管脚上,而且好像只有一两组,另外IO固定有时画板不好布线,有一定的局限性;
模拟I2C随便两个IO口就可以用了,另外同样的代码移值到其他类型的MCU上很方便,重新绑下IO口的就可以了。
建议使用逻辑分析仪排错!
买一个USB口的逻辑分析仪,不到50块钱就能买到,然后抓协议,自动在界面上显示出来,很方便。
不然遇到问题就不知道怎么解决,这样很麻烦的
望采纳!!!
是不是你模拟的时序有问题,I2C要度寄存器的内容,首先有制定寄存器的地址,而你读出来的居然是寄存器地址,建议你查一下,变成编程的逻辑是否有问题
能读出CHIP-ID寄存器的正确值,说明你的IIC基本上对了,再读其他的,发生错误,怀疑你的连续工作时序有问题,尤其是要注意主从设备的ACK问题,一般来说,IIC编程经验比较丰富的,看设备的手册上IIC时序部分,应该能正确编写出连续读写部分,必须特别注意是主控ACK还是被叫ACK。
如果说另外的调试手段嘛,淘宝上30元一个的逻辑分析仪,24MHz 8通道,完全够用了,有这个事半功倍,我用过挺好用的,检测协议部分的利器。
USB 逻辑分析仪