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.

[参考译文] MSPM0G1506:当 SPI TX FIFO 下溢时、会导致接收到错误的数据?

Guru**** 2524550 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1552469/mspm0g1506-when-spi-tx-fifo-underflow-it-will-cause-receive-wrong-data

器件型号:MSPM0G1506


工具/软件:

尊敬的团队:

我的客户使用 M0G1506 作为 SPI 从器件、但在第一次传输时没有填充 TX FIFO。 但是 M0G1507 接收到错误的数据(由 CRC 检查),为什么会发生这种情况?

理论上、从器件可以接收正确的数据。

此致、

Zane

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

    尊敬的 Zane:

    您在此处列出的说明与 TX 发出数据相关、与 RX 数据无关。

    我建议您检查数据不正确的输入数据数组。 以便进一步分析异常行为。

    B.R.

    Sal

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

    尊敬的 Sal:

    我的客户使用 FPGA 实现 SPI 作为控制器、它将控制 64 个 CLK 并使用 FIFO 来接收 64 位。 并使用空闲中断将其读出。

    请查看客户描述:

    e2e.ti.com/.../SPI_EE959898_.docx

    我尝试重现客户的问题。 我使用空闲中断来读取 FIFO 数据、我发现有时它会得到错误的数据。

    我发送 0x8888 (1000 1000 1000 1000)、但有时我收到 0x4444(0100 0100 0100)、似乎换档效果不佳。

    我连接了工程、这可以很容易重现此问题、但将 NRST 引脚推入控制器中、并可以在从服务器调试窗口中查看 Rxdata。 请帮助找到它,谢谢!

    e2e.ti.com/.../8244.spi_5F00_controller_5F00_multibyte_5F00_fifo_5F00_poll_5F00_LP_5F00_MSPM0G3507_5F00_nortos_5F00_ticlang.zipe2e.ti.com/.../spi_5F00_peripheral_5F00_multibyte_5F00_fifo_5F00_poll_5F00_LP_5F00_MSPM0G3507_5F00_nortos_5F00_ticlang.zip

    此致、

    Zane

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

    尊敬的 Zane:

    我将根据您在此处的描述进行一些测试。 希望我能在下一个星期一上对其进行更新。

    B.R.

    Sal

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

    尊敬的 Zane:

    我根据您的反馈进行了一些测试、如果用户填写或未填写数据、我认为不会产生影响。

    我甚至没有将任何数据填充到 TXDATA、所有数据看起来都很好。

    在我看来、使用空闲中断不是一个好主意、因为当 SPI BUSY 变为低电平时会设置空闲状态。

    如果 TX FIFO 中有数据、SPI BUSY 不会变为低电平。  数据处理可能存在风险、然后会丢失一些 Rx 数据。

    如果您只有 4 个 16 位数据、建议使用 RX 中断或 Rx FULL;请参阅我验证它在 1MHz 模式下工作而没有任何问题的示例。

    LP_MSPM0G3507_SPI_RX_TEST.ZIP

    LP_MSPM0G3507_SPI_TX_Master.ZIP

    我发送 0x8888 (1000 1000 1000 1000 1000)、但有时我收到 0x4444(0100 0100 0100)、似乎移位效果不好。

    请检查您 CS 信号、因为 CS 信号正常工作、然后在 CS 保持非活动状态时、移位器寄存器计数器将自动清除。 虽然 CS 信号存在一些限制:

    B.R.

    Sal

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

    尊敬的 Zane:

    更新了测试项目以供参考: rx_test_new_ZIP

    当 TXFIFO 中没有数据(仅在第一次发送中显示)时、此工程还会创建 RX 接收数据错误。

    看起来、CSCLR 功能需要设置为 0h、以便在 CS 处于非活动状态时启用自动清除移位器寄存器。 详情请参阅电子邮件。

    B.R.

    Sal

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

    很抱歉中断、但“CSCLR 函数需要设置为 0h 才能启用 [...]“表示 CSCLR 的运行方式与 TRM 的说明相反? 或者这只是空 TX FIFO 情况的干扰吗?

    我使用 CSCLR,但这不是经常行使,所以我想确保我正确设置它.

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

    您好 Bruce、

    这是我在内部检查的内容、我发现它看起来与 TRM 相反。

    在与内部团队确认后、将更新到此主题。

    B.R.

    Sal

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

    您好 Bruce、

    在附加 测试后、TRM 描述应该正确。 设置 CSCLR=1 应启用移位器计数器的自动清除功能。

    SPI_ERR_03 说明可能需要修复。

    B.R.

    Sal

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

    好的、感谢您的检查。