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.

[参考译文] RM46L852:有选择地抑制 MibSPI RX 溢出

Guru**** 2393725 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/785276/rm46l852-selectively-suppressing-mibspi-rx-overrun

器件型号:RM46L852

我正在尝试使 RX 溢出中断保持启用状态、只需忽略第一个传输组发出的返回数据即可。  在 mibspiGroupNotification()中,如果我执行以下操作,则不会发生 RX 溢出:

uint16_t dummy_value;
(void) mibspiGetData (mibspi、group、&dummy_value); 

但是、如果我这么做、我仍然会得到 RX 溢出:

mibspi->FLG |= 0x0100U; 

(或对0xFFFFFFU 执行相同操作。)

我缺少什么?  技术参考似乎表明、这应该实现同样的目的。  我看到了与 RXEMPTY 相关的勘误表、但这一点看起来根本不相关。  谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    尝试清除(写入1) SPIFLG 寄存器中的 RXOVRNINTFLG 标志。

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

    感谢您的快速响应。  我仍然得到 RX 超支执行此操作;还有其他想法吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您能否添加您的项目、以便我可以调试这种情况?

    此致、
    米罗
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我无法包含实际项目、但我创建了一个示例项目、我将尝试直接向您发送该项目。 密钥代码位于 notification.c 中的 mibspiGroupNotification()中,并反映到目前为止的线程。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    首次发送后、仅生成 TG 完成中断。 如果在 RX RAM 中保留数据的同时尝试第二次发送、则会产生 RX 溢出(如果启用)-多缓冲器接收缓冲寄存器(RXRAM)中的 RXOVR 位将置位、并且 RXOVRNINTFLG 也将置位。 您应该读取数据字段 RXDATA 以清除 RXOVR 位。 清零 RXOVRNINTFLG 不会清零 RXOVR。

    此致、
    米罗
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从 RXRAM 说明表(SPNU514C 的表27-57、2018年3月)中:
    在读取 RXDATA 之前、先将 RXINTFLG 位写清零表示接收到的数据被忽略。 相反、RXINTFLG 可以通过读取 RXRAM 的 RXDATA 域(或整个寄存器)来清零。

    也许我缺少一些东西、或者第一句实际上只有在不处于多缓冲模式时才有意义? 在任何情况下、我都可以读取一个虚拟值。 但是、由于 SPI 文档似乎过于困难、尤其是与 SPI 与 MibSPI 相关、我认为提出这个问题最终可能会对其他人有用。

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

    在多缓冲模式下、如果一个特定的 RXRAM 位置在一个新传输完成后被 MibSPI 序列发生器逻辑写入、并且该位置已经包含有效数据、那么在数据被写入时、RX_OVR 位将被设定为1。 RXOVRN_BUF_ADDR 寄存器捕获发生接收器溢出情况的 RXRAM 位置的地址。

    请尝试多缓冲 RAM 发送数据寄存器(TXRAM)的不同缓冲模式。