2398263_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2398263_zh-CN

2398263_zh-CN

S32K314 上使用 DMA 的 UART 功能无法正常工作

你好,

我们目前正在尝试配置 LPUART0 通道以使其与 DMA 配合使用。UART 通道需要以 1Mbps 的比特率工作。

我们目前的 UART 和 DMA 配置如下所示。

CosminSbera_0-1784803400829.pngCosminSbera_0-1784803400829.png

CosminSbera_1-1784803453733.pngCosminSbera_1-1784803453733.pngCosminSbera_2-1784803479911.pngCosminSbera_2-1784803479911.pngCosminSbera_3-1784803495720.pngCosminSbera_3-1784803495720.png

CosminSbera_4-1784803522819.pngCosminSbera_4-1784803522819.pngCosminSbera_5-1784803539872.pngCosminSbera_5-1784803539872.png

MCU 中时钟已启用,缓冲区在不可缓存区域内声明,DMA ISR 的优先级低于 LPUART。

我们的问题是,我们无法看到 RX 缓冲区中的数据,或者数据不完整。

我们的工作流程如下(类似于LIN通信)。
准备接收缓冲区 -> 异步接收
将头部信息发送到从设备 -> AsyncSend
等待下一个周期从从设备接收到数据(我的函数运行时间为 1 毫秒)。

如果我在 AsyncSend 执行后设置断点,我可以看到从设备发送的所有数据都在 RX 缓冲区中。
如果我让它运行,要么什么都没有,要么运行不完整。
我的假设是 DMA 中断稍后发生。

您能否提供一些关于配置中哪里出了问题的线索,或者我接下来应该检查哪些方面?

谢谢!

科斯明


Re: Uart using DMA is not working correct on S32K314

@CosminSbera

1.不要忘记启用DMA请求选项。

Senlent_0-1784861937675.pngSenlent_0-1784861937675.png


2.不要忘记在“平台”组件中启用 LPUART0_IRQn 中断。

“平台”->“LPUART0_IRQn --LPUART_UART_IP_0_IRQHandler“




Tags (1)
No ratings
Version history
Last update:
‎07-24-2026 02:38 AM
Updated by: