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.

[参考译文] TMS320F280045:DSP RXFFOVF 设置为 FIFO 模式

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/958026/tms320f280045-dsp-rxffovf-set-in-fifo-mode

器件型号:TMS320F280045

我们遇到了 SPI 问题、在该问题中我们会遇到溢出错误。 我们正在使用控制器 TMS570LS0332 使用 Mibspi 进行通信、并将主器件配置如下:

// WDELAY = 0 ->等待延迟=(0+2) Vclk = 25 nsec
// PARPOL =偶数
// PARITYENA =禁用
// WAITENA =禁用
// SHIFTDIR = MSB 优先
//极性= SPI CLK 低电平无效
//相位=无 SPI CLK 延迟
//预分频= 39 ->波特= Vclk/(39+1)= 2.0MHz
// CHARLEN = 16位

  在寄存 器 SPIFFRX 中的 TMS320F280045技术参考手册中、有 RXFFOVF 字段的说明(如果"在 FIFO 中接收到的字数超过16个"、则应置位)。 我们在 DSP 控制器中的 SPI 对主机 SPI 的字格式使用相同的配置、并且 FIFO 模式有效、可接收16个16位的字符。 如果我们在未考虑此错误的情况下接收到数据、我们会发现我们在主器件中发送的内容在从器件中正确接收、我们还使用示波器检查了字符数量、时钟周期以及所有内容似乎都正确。  但是、我们将设置该 RXFFOVF 错误标志。 在什么条件下会设置该误差?

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

    奥马尔

    在 F280045中、SPI 具有16级深度 RX FIFO 缓冲器。 当 SPI RX FIFO 溢出时、SPIFFRX.RXFFOVF 位将被置位。

    1. 您是否启用了 SPI 环回选项? 如果是、您需要禁用此模式。
    2. 在 SPIRXFIFO 中断时、确保读取所有 FIFO 内容并确保 SPIRX FIFO 为空。 否则、在下一个 SPIRXFF 中断周期、FIFO 缓冲区中将有新的16个字+旧的 SPI 数据。 这将导致溢出情况。

    此致、

    曼诺伊

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

    此问题是否已解决? 我可以关闭此主题吗?

    -Manoj

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

    您好、Manoj、

    很抱歉、回复时间长、我现在没有时间检查这个问题、

    我们没有启用环回。 我们不使用中断、我需要对此进行说明、因为我希望避免引用中断示例。

    我们要做的是填充 TX 缓冲区一次、然后以512Hz 的速率检查是否已接收到主 SPI 消息。 主器件 SPI 将以256Hz 的速率进行通信、因此从器件将始终在主器件发送消息之前填充缓冲器、而从器件将在检测到接收到主器件消息后再次填充缓冲器、在我看来、没有任何去同步的方法。

    我们始终读取我们发送的最大字节数、即16个半字(每个16位、32个字节)、如果我们忽略 SPIFFRX.RXFFOVF 错误、那么我们在主器件中发送的数据是正确的、这与我们发送的数据完全相同、但标志仍然被设置。 似乎缺少信息、我们仍然不知道其他什么可能导致设置此标志。 我们甚至使用示波器进行了检查、并且字节数恰好为32。

    谢谢、

    Omar

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

    奥马尔

    我没有足够的信息来了解这里发生的问题。 您是否尝试将 FIFO 级别降低为8个字、并查看您是否正在接收额外的字?

    此致、

    曼诺伊

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

    Manoj、

    我们终于找到了问题所在、似乎从站缓冲器更新为主任务速度的两倍是不够的、有某种去同步会使主站在完成填充之前读取从站缓冲器、从而数据损坏、 我们只是通过提高从器件更新速度来解决。 由于这个问题会发生一些时间、我们不会仅仅通过检查 OSC 或在我们接收数据的位置设置 BP 来看到它、这并不是很容易捕捉到的。

    感谢您抽出宝贵的时间与合作、

    Omar