器件型号: MSPM0G3107-Q1
您好:
我想先介绍一下、我使用 FreeRTOS 来管理多个任务。 我有一个专用于与外部 IC 进行通信的任务。
我正在研究一个使用 UART 外设定期与外部 IC 通信的工程。 我已经创建了一个 UART 驱动程序、用于我的应用。 创建驱动程序时引用了 uart_rx_multibyte_fifo_dma_interrupt 示例工程。 当驱动程序工作时、我现在正在尝试确保可以捕获代码的任何问题、并采取适当的措施来处理该问题。
例如、下面是我的写入函数的屏幕截图。

启动写入时、软件需要等待 DMA 将所有数据字节移动到 UART TX FIFO 中、然后等待 UART 外设完成在总线上输出数据。 这两个方面(理论上)可能会失败。 为了缓解这种情况、我在每个 while 循环中都添加了超时。 我已经测量了 DMA 和 TX UART 完成所需的时间。 需要~223us 来触发 DMA 完成和 UART 完成中断。 因此、我将超时设置为~3ms。
我的问题是:如果 TX DMA 从未触发和/或 UART 以某种方式未完成数据传输、应该执行什么纠正措施。 现在、我只是禁用 TX DMA 通道。 这是否足够? 此外、是否有办法让软件触发这些错误、以便我可以全面测试该行为?
在同一个注意事项,现在在接收端,下面是一个屏幕截图的错误处理我正在做.

对于此功能、如果 RX DMA 在~30ms I TIMEOUT 范围内没有接收传输大小。 我在这里要执行的纠正操作基本上是禁用 RX DMA 并清除 RX FIFO。 这似乎更直截了当、我认为、对于以下事件、这就足够了。
- 未接收到任何数据字节
- 接收到部分数据字节
- 接收到字节溢出
对于这个、我只是询问这是否足够好。
谢谢、
Adan Pantoja.