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.

[参考译文] MSP430FR6043:建议的 USCI42权变措施

Guru**** 2390755 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1050513/msp430fr6043-proposed-usci42-workaround

器件型号:MSP430FR6043

您好!

此 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 模式的时间。 当然,另一种方式与官方方式不一样,因此它不那么理想。

 

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

    听起来很不流明、效果不如我描述的那么好。

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

    我很确定你可以使用 UCBUSY 来实现这个;问题是你必须对它进行轮询(没有 IFG)。  

    如果您立即开始轮询、则可能需要旋转整个字节时间(如果管道已满、则甚至是2个字节)、 但是、正如您所说的、如果您有一个好的猜测(例如、计时器)、您可以执行其他操作、然后在您希望它变为0的大约时间开始旋转。

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

    尊敬的 David:

    您是否想共享解决方案的链接? 我找不到它。

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

    最简单的(也不是我的想法)是、如果你知道正在发送的字节数量、请对 TXCPT 中断进行计数。 更简单、更准确。

    我的想法(在最近的 USCI42线程中甚至是这样)是使用 TXIFG、TXCPTIFG 和 IV 寄存器的行为。 简而言之、TXIFG 应在 TXCPT 时间清零、直到传输完成。 这取决于在发送停止位时从 TXBUF 发生的传输(未记录)、在停止位完成后发生的 TXCPT 中断、以及读取 IV 寄存器来清除中断和标志。

    或在数据用完时禁用发送中断后对 TXCPT 中断进行计数。 (当您清除 TXIE 时启用 TXCPT 中断将是竞态、因此它可能在低比特率下工作、在较高速率下失败。 或在启用其他中断时随机失败。)

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

    实验室测试是针对这个想法进行的、还是在评估方面未经验证? 不说它不起作用、只是想知道它有多可靠。 如果已经证明它可以正常工作、我在选择此 MCU 时会感觉更好。

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

    您好、Lu、

    我期待您与 David 的讨论。

    您需要使用 TXCPTIFG 来检查最后的数据是否已经通过 USRT 发出、但是有一个勘误表、即使 TXBUF 不为空、这个标志也将被置位。

    对吧?

    也许您可以检查 TXIFG、以及是否设置了时间、以及它是否等于您想要发送的数据长度。 这些数据应完成发送。

    如果我理解正确、这是一个想法。

    谢谢!

    最好的 Regarda

    Johnson