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.

[参考译文] msp432p401r:msp432 UCTXCPTIFG (eUSCI)不能正常工作

Guru**** 2553450 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/594046/msp432p401r-msp432-uctxcptifg-eusci-doesn-t-seem-to-work

器件型号:MSP432P401R

我将 eUSCI (A)作为 UART 运行、以4800波特发送流(1字节时间约为2ms)。  我发送一个数据流、然后要确保在切换波特率之前所有字节都已用完。  根据我在手册、数据表和论坛(e2e)中阅读的所有内容、我应该能够监控 UCTXCPTIFG、当它变为1时、TXBUF 和传出移位寄存器都应该为空。

但它似乎不起作用。  这是风景…  我正在使用 TXIFG 中断将传出流馈送到 eUSCI TXBUF。  这是完美的。  当最后一个字节已经被发送到 TXBUF 时、我忙等待 TXIFG 返回、指示 TXBUF 为空。  然后、TXCPTIFG 上的忙等待完成以指示移位寄存器为空。  但它会立即返回。

如何知道它会立即返回?  嗯、我正在看一个我正在运行的1us ticker。  从最后一个字符输出到 eUSGI 再到 TXIFG 上升的时间为2156 (~2ms、听起来不错、1字节时间@ 4800波特)、此时 TXCPTIFG 已经上升。  增量约为4us、这是指令执行和查看所需的时间。

TXCPTIFG 实际上不像您说的那样工作。  是否可以在 TI 有人对此进行验证?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的。 这是一个已知问题、勘误表中的 USCI42中对此进行了说明。

    是否有解决此问题的计划?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Eric、
    您的观察准确。 TCPTIFG 和 TXIFG 的功能没有区别。 遗憾的是、我们还没有计划在即将进行的修订中修复它。 通过检查 UCBUSY 位(UCAxSTATW.UCBUSY)、尝试跟踪 TXIFG/TXCPTIFG 置位。 我将向我们的设计团队核实这是否是合理的权变措施。

    -Priya
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为什么不等待2-3ms?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 USER="Keith Barkley]为什么不等待2-3ms?

    [/报价]

    是的、您可以这么做。  但在我的世界中、这是相当长的时间。  有关中断的整个问题是避免这种情况。  但是、当它们损坏时、效果不是很好。

    因为它是值得的、这就是我们最终所做的。  正在等待。  如果 CPT 不起作用、实际上没有太多选择。

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

    [引用用户="Priya Thanigai">Eric、
    您的观察准确。 TCPTIFG 和 TXIFG 的功能没有区别。 遗憾的是、我们还没有计划在即将进行的修订中修复它。 通过检查 UCBUSY 位(UCAxSTATW.UCBUSY)、尝试跟踪 TXIFG/TXCPTIFG 置位。 我将向我们的设计团队核实这是否是合理的权变措施。

    -Priya

    [/报价]

    UCBUSY 不起作用。  回到1611天、因为它仅由 TX 侧驱动。  但有时有人决定 UCBUSY 也应该由 RX 端驱动。  因此、如果 TX 端忙或 RX 端忙、UCBUSY 将置为有效、如果您尝试查看 TX 是否已完成、则会出现问题。

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

    [引用用户="Priya Thanigai">Eric、
    您的观察准确。 TCPTIFG 和 TXIFG 的功能没有区别。 遗憾的是、我们还没有计划在即将进行的修订中修复它。 通过检查 UCBUSY 位(UCAxSTATW.UCBUSY)、尝试跟踪 TXIFG/TXCPTIFG 置位。 我将向我们的设计团队核实这是否是合理的权变措施。

    -Priya

    [/报价]

    实际上、我怀疑 TXIFG 和 TCPTIFG 之间存在一些差异。  当 TXBUF 被复制到移位寄存器中时、TXIFG 应该变为高电平、而当停止位被移出时、TXCPT 变为高电平。  如果您从清除的 CPT 开始。  写入第一个 TXBUF 将不会影响 TXIFG (或者它会被剪切、不确定) 一个字节时间后、TXCPT 将被弹出。  

    但是、如果您在数据流内部观察、则看起来 TXIFG 和 TXCPT 会同时发生。

    我们无法实际观察到任何这种情况、因为它们都埋在硅中。

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

    Justo 澄清了、设置两个不同标志背后的意图是指示何时加载移位缓冲器和何时在总线上物理传输数据之间的差异。 该序列应按以下方式工作:
    1、TXIFG 置1
    2.用户移动了 TXBUF 数据
    在 下一个位时钟上、数据从 TXBUF 移动到 TX 移位寄存器
    4.从移位寄存器中移出的数据、包括 STP
    5、如果 TXBUF 没有被载入、TXCPTIFG 被置位

    但是、由于勘误表的原因、这不符合规格要求。

    -Priya