This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR5994:用于检查 ACK 的主 SCL 缺失或迟到

Guru**** 2578795 points
Other Parts Discussed in Thread: MSP430FR5994

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/895033/msp430fr5994-master-scl-for-checking-ack-is-missing-or-come-to-late

器件型号:MSP430FR5994

我必须通过 I2C 读取闪存存储器。 MSP430fr5994是主器件。 它发送起始条件和总线地址。 现在、时钟(SCL)保持恒定低电平。 为了发送 ACK 位、从器件将 SDA 线路保持在低电平。 经过很长时间的超时、从器件将 SDA 线保持为高电平、主器件发送一个 SCL 位(从低电平到高电平再到低电平)。 NACKIFG 为1。 但是、如果主器件在第8个时钟位之后不久发送第一个地址字节(定时器控制)、那么主器件发送9个时钟位。 但从器件会将这9个时钟位中的第一个作为检查 ACK 的时钟。 接下来的8位是第一个地址字节、用于检查从器件 ACK 的时钟位缺失、以此类推。 我认为问题是在总线地址之后检查从器件 ACK 所缺少的第一个时钟位。 我有什么需要初始化主器件发送此位比虚拟内核来传输第一个地址字节?

此致
哈迪

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    根据您的描述、您的程序(主器件)花费太长的时间来设置 TXBUF 以响应 TXIFG、从而将时钟拉伸足够长以触发从器件超时;一旦发生这种情况、和/或您收到 NACK、您应该将事务视为失败。 除非这是"轮询繁忙"的情况、否则没有理由相信如果盲目重试、您将会成功。

    了解 I2C 闪存器件的器件型号以及查看处理 TXIFG 的代码可能会有所帮助。

    此外、"(定时器控制)"是什么意思?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的快速回答。

    闪存是来自 ST Microelectronics 的 ST25DV。 它是 NFC 芯片。

    抱歉、写"定时器控制"不好。 我已经进行了一个测试、需要将2个字节分隔为大约2个时钟周期、以查看 ACK 的时钟是在一个字节的末尾还是在下一个字节的开头。 因此、我看到 ACK 的时钟出现在折叠字节的开头。 您可以说它必须是这样还是有问题吗? 我的想法是战争通常在发送下一个字节之前检查 ACK 战争是否是常见的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    ACK 被视为跟随它确认的字节。 如果主发送器在响应 TXIFG 时填充 TXBUF 的速度很慢,I2C 单元将把 SCL 保持在低电平(延长时钟)直到 TXBUF 被填满--通常是几十微秒,但如果需要的话永远保持。 ACK 周期完成后、下一个(Tx)字节将立即继续、这可能会产生您所看到的幻象。

    我建议您学习用户指南(SLAU367O)图32-12、其中给出了主发送器的状态图、尤其是显示"总线停止"的盒子(靠近顶部)、我怀疑这是发生从器件超时(25ms)的地方。 除了您的代码之外、您还需要避免在此状态下出现断点(因为从器件不知道这一点)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Hardy、

    除了 Bruce 的建议、还请考虑我们的主要应用报告、该报告介绍了如何调试 I2C 和与 MSP430的其他串行通信。

    此致

    Peter

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的供应。 现在、我已经实现了读取过程。