你好,
我们目前正在尝试配置 LPUART0 通道以使其与 DMA 配合使用。UART 通道需要以 1Mbps 的比特率工作。
我们目前的 UART 和 DMA 配置如下所示。
CosminSbera_0-1784803400829.png
CosminSbera_1-1784803453733.png
CosminSbera_2-1784803479911.png
CosminSbera_3-1784803495720.png
CosminSbera_4-1784803522819.png
CosminSbera_5-1784803539872.png
MCU 中时钟已启用,缓冲区在不可缓存区域内声明,DMA ISR 的优先级低于 LPUART。
我们的问题是,我们无法看到 RX 缓冲区中的数据,或者数据不完整。
我们的工作流程如下(类似于LIN通信)。
准备接收缓冲区 -> 异步接收
将头部信息发送到从设备 -> AsyncSend
等待下一个周期从从设备接收到数据(我的函数运行时间为 1 毫秒)。
如果我在 AsyncSend 执行后设置断点,我可以看到从设备发送的所有数据都在 RX 缓冲区中。
如果我让它运行,要么什么都没有,要么运行不完整。
我的假设是 DMA 中断稍后发生。
您能否提供一些关于配置中哪里出了问题的线索,或者我接下来应该检查哪些方面?
谢谢!
科斯明
1.不要忘记启用DMA请求选项。
Senlent_0-1784861937675.png
2.不要忘记在“平台”组件中启用 LPUART0_IRQn 中断。
“平台”->“LPUART0_IRQn --LPUART_UART_IP_0_IRQHandler“