您好!
此 MCU 的勘误 表 USCI42中没有 TI 提供的官方解决方法。
这是勘误表
在本论坛中阅读有关其他一些线程的勘误表时、我发现此问题仅在要求 USCI 在半双工模式(即 RS485)下工作时才会生效。 对于全双工模式(即 SPI)、此勘误表不适用、可以忽略。
我想就半双工案提出一种非正式的变通办法。 请告诉我它是否可以工作。
首先、通过观察 USCI 模块的方框图可以看出、传输时它有两个主要组件:发送缓冲器和输出移位寄存器。
发送字节时、该字节首先被加载到 TX 缓冲区、然后传递到实际发送字节的输出移位寄存器。 在此过程中可以观察到两个标志: UCTXIFG 和 UCTXCPTIFG (后一个标志是勘误表中所讨论的标志)。 每当一个字节已从 TX 缓冲区中传输出去时、UCTXIFG 都会被置位、换句话说、当 TX 缓冲区为空时。 当输出移位寄存器已发送所有位并且没有从 TX 缓冲区传输的额外字节时、UCTXCPTIFG 被置位、换句话说、TX 缓冲区和输出移位寄存器都是空的。 我对勘误表的解释是 、在发送每个字节后会错误地设置 UCTXCPTIFG、而不是在 TX 缓冲区和移位寄存器都为空的时刻设置 UCTXCPTIFG。 这使得它的功能是多余的、因为 这基本上就是 UCTXIFG 标志的功能。
我建议的替代方法如下:
首先、确定发送一个字节所需的时间、例如2ms。 如果我们传输10字节、则需要20ms。 在最佳条件下、发送第10个字节后、UCTXCPTIFG 将被发送、控制器可以更改为 RX 模式并准备好接收。 另一种方法是在发送第10个字节后设置计时器、例如、1ms 或我们认为足够长、可以安全地感觉已发送最后一个字节、然后让控制器更改为 Rx 模式的时间。 当然,另一种方式与官方方式不一样,因此它不那么理想。