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.

[参考译文] MSPM0G3519:UART 扩展外设的 RXD_NEG_EDGE 中断上的 DMA 传输

Guru**** 2952510 points

Other Parts Discussed in Thread: MSPM0G3519

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1595310/mspm0g3519-dma-transfer-on-rxd_neg_edge-interrupt-of-uart-extend-peripheral

器件型号: MSPM0G3519

你好。  我正在编写软件、以通过 MSPM0G3519 处理器上的 UART 扩展外设与 LIN 总线连接。  介绍了如何操作 LIN 接收 部分 23.2.3.7 本地互联网络 (LIN) 支持 在 技术参考手册中、我能够检测中断字段和同步字节。  在同步字节检测期间、会触发五个中断 ( RXNE ) 以记录每个位 ( LINC0 和 LINC1 寄存器)的位。  为了减少中断次数、我想看看是否可以使用 DMA 外设来保存这些时序。  DMA 传输将发送的值 LINC0 和 LINC1 写入到 RAM 中的缓冲区 RXNE 触发中断。  In 23.2.7.2 DMA 触发发布者 但并未列出 RXNE DMA 支持 UART 外设的中断。  是否有其他可能的策略可以将 RXNE 中断事件路由到 DMA 外设?  也许我可以将中断事件路由到 GENERAL_SUBx_TRIG 通过“事件管理器“触发?  如果是、我将如何做到这一点?  谢谢!

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

    您好,感谢您的提问! 您应该能够使用通用触发器、甚至在 UART 接收到 x 个样本后使用 DMA 进行传输、但这也取决于工程其余部分的设置方式、使其正常工作。 这里有几个选项供您选择:

    • 通过此选项、您可以分配 DMA 通道、将其设置为订阅者、设置所有其他参数、并使用通用外部触发器、或者您也可以选择直接路由到正在使用的 UART 通道。 然后、确保启用 UART 上的中断、以将其连接到 DMA。 您可以在 PUB/SUB 等的“事件“选项卡中进行验证
    • 另一种选择是配置 UART 的 RX 数据寄存器已满 (RXDR) 标志、以直接触发 DMA 通道、完全绕过 CPU 中断以进行数据移动。 为此、请将 DMA 源设置为 UART 的数据寄存器(例如,对于 UART0) EUSCIB0RXBUF 、并将目标设置为内存缓冲区。  RXDR 在器件配置中选择或将事件与 DMA 触发源类似。 此选项允许最高带宽、最低的 CPU 开销、非常适合连续数据流(如高波特率)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提供的信息!  在两个选项中,我真的很喜欢第二个!

    在参考手册和 SDK 中、我没有看到任何有关 RXDR 标志和  EUSCIB0RXBUF UART 数据寄存器的引用。  您能帮助我找到这些信息的位置吗?

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

    抱歉、困惑、对于 M0 器件、UART 模块包含三个事件发布者而没有事件订阅者。 一个事件发布者 (CPU_INT) 通过静态事件路由来管理对 CPU 子系统的 UART 中断请求 (IRQ)。 第二个和第三个事件发布者 (DMA_TRIG_RX、DMA_TRIG_TX) 用于通过 DMA 事件路由设置 DMA 的触发信号。 对于 RXDR、这是接收时 DMA 完成的操作、因此您可以在 UART 配置中将此操作添加为中断、然后确保启用了 UART RX 中断。