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.

[参考译文] MSP430FR5739:USCI-SPI UCBUSY 故障-勘误表 USCI41和不充分的权变措施。

Guru**** 2524550 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/873089/msp430fr5739-usci-spi-ucbusy-fault---errata-usci41-and-inadequate-workaround

器件型号:MSP430FR5739

此闭合线程中出现了此问题。   https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/555039?FR23xx-eUSCI-bug-in-SPI-mode

下面的权变措施不足以满足我的目的、因为我需要知道传输何时完成(即移位寄存器为空)、而不仅仅是当 TXBUF 为空时。  只有 USBUSY 提供了这种情况、在芯片中此勘误表基本上无用。  该  线程中的用户 Bruce McKenney47378被淋洗到 了_delay_cycles (16*BRW)修复、这对我来说是有道理的、看起来是可行的。 但是,我需要记录/证明这一修正的正确性,并想知道为什么是16个?  找不到任何对清空移位寄存器所需时间的引用。  为什么只使用 BRW?  假设 SPI 的时钟源设置为与 MCLK 相同吗?  希望您能找到 Bruce 的答案?  非常感谢。

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

    我可能应该将其编码为“(8+8)*BRW”。 假设 MCLK=SMCLK (=BRCLK)、这是 SPI 清空保持寄存器(8位)和移位寄存器(8位)所需的 CPU 周期数。

    它估计过高、但如果 BRW 通常很小、这不会浪费太多、因为无论如何、您可能会在 UCBUSY 上旋转。 在上下文中、您可能会对其进行更改、例如、一旦您获得另一个 TXIFG、您就知道暂存寄存器已为空。

    SPI (3线制主器件)具有很强的单一性、并且没有流量控制、因此位计数是可靠的。  

    [编辑:如果 MCLK=SMCLK (=BRCLK)的情况不是这样、您需要引入适当的附加因素。 我不想将其他讨论与这些细节相混。]

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    理解并感谢您的回复。 我的 SMCLK (和 BRCLK)实际上是 MCLK 的一半、这意味着延迟也需要一个 x2系数。 很高兴它可以变得可靠。 这应该被添加到 TI 勘误表中、因为您的权变措施远远不等于 UCBUSY 预期的函数。