最近在做一个项目用到I2C协议,用的是msp430f5328单片机芯片,想用通用的IO口来模拟I2C协议,可在IO输入输出转换的时候波形老是不对,是有类似的程序或者源代码供小弟参考一下,谢谢了
灰小子:
看看这个代码,希望对你有帮助http://wenku.baidu.com/link?url=l4JKHN2HGu9WrIrbuFAaWLX_EWHzs9–XfkU7qObNZc1aZLRKhy_bX_FLgpajVuzyXRmACpoeL_FkruNvBWSW7QyEGS6ZqibUrPzKIZzAda
Delta:
针对I2C设计的一些通用建议:
如果对I2C不熟悉,且对方是标准的I2C,建议还是用硬件的I2C做,不然以后有兼容性问题。
如果用软件做,也需要准备一个外部第3方的串口I2C分析器,或者逻辑分析仪,或者带I2C信号分析功能的示波器。这样就指导你模拟出的波形哪里不标准。
如果你现在的波形有问题,主要是通过示波器把总线上的波形抓下来,看是哪个信号不对,卡在那里了。
Lion chang:
回复 Delta:
明天把时序图给你发过去,你帮忙给看看
Lion chang:
回复 灰小子:
谢谢,这个代码可以用,已经能够读取寄存器的值了,虽然不对,还有待调整,等待后续更新
Lion chang:
回复 Lion chang:
我现在秒和年寄存器写进去了,读出来也是对的,可时、分、天、月都不对,并且我发现当秒计数到60时、分钟的寄存器的值也不会加一,一直没有变化
Lion chang:
回复 Lion chang:
现在秒寄存器和年寄存器已经可以写进去并且读出来了,可分钟、小时、月等寄存器的值能读出来,但是写不进去,下面的图片是写分钟寄存器的时序图,请帮忙看一下时序是否有问题,我快疯了,为什么同样的写程序,有的能写进去,有的写不进去
其中只有高电平一半的脉冲冒失是接收到的ACK信号
并且我还发现一个问题:当秒计数到60时分钟寄存器的值也是不变的,是不是芯片坏了啊,还是需要通过irqn信号来重新写寄存器啊