您好,
我正在使用一个自制驱动程序在MSP430 (F5659)µC作为主芯片和另一个芯片之间进行I2C通信。
大多数情况下都很好,但在数据表无法解释的情况下,我感到很惊讶。
该错误发生在可能的CEM从测试台干扰到I2C线路之后,但一旦I2C periphal处于这种状态,我每次启动传输时都会重现它,并在每个环路上看到相同的东西(不会出现进一步的峰值)。
我处于主模式。 总线以正确的状态启动,SDA和SCLK均为高。 我的驱动程序尝试发送的操作如下:
-设置从属地址
-设置传输模式(UCTR = 1)
-发送开始(STT = 1)
-等待Tx标志
然后,剩下的是重复的开始和读取,但即使在这里有一个断点,我也已经感到奇怪了:
发送起始地址,但不按规定后跟从属地址,而是由MSP发送数据缓冲区TX缓冲器的内容
我想我在这个序列之前已经设法将I2C状态机设置为错误的状态,但我看不到总线上的启动没有后面跟着从属地址的任何情况。
是否有任何可能的情况?
如果MSP认为它只是发送另一个字节,它是否会通过降低SDA并使用高时钟来发送总线上的启动?
下面是我的示波器在运行序列时看到的内容。
06是TXBUFF的内容,当I2CSA中的从属地址为0x044时,调试器前后都已确认。
很明显,从属设备不能识别地址并且不能确认,所以我的驱动程序发送了一个停止。 然后我可以反复再现它。

