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.

MCU-PLUS-SDK-AM263X: AM263X CC开发板 串口+edma 查询方式接收出现问题

Part Number: MCU-PLUS-SDK-AM263X


各位老师好!

我在调试AM263x CC 开发板的 串口 edma 通信例程时。想实现 edma+串口:查询方式接收串口数据。

步骤如下:

1,当我检测到breloadcnt-bcnt>0时。我调用了:

static int32_t UART_edmaDisableChannel(UART_Handle handle,uint32_t isChannelTx);
2,来暂停edma传输。
3,数据接收处理完成后。重新调用Uart_read.开始新的传输,如此往复。
结果:
在测试的过程中发现接收到的数据多了些0值(我并没有发送0值到开发板)。开发板串口的接收数量也随之变多了(大于实际向开发板发送的数量)。
下面是我做的一些尝试:
当出现0值,我打断点查看了TPCC 与TPTC 的寄存器状态,没有发现异常(也许没观察全)。
还有一个现象:我做了一个操作:关闭了EDMA_OPT_TCINTEN_MASK,然后打开EDMA_OPT_ITCINTEN_MASK。在中断函数中记录获取到的中断数量。发现出现0值时 中断的计数正好等于串口助手向开发板发送的数据量,而此时 breloadcnt - bcnt 是大于该值的。
问题描述:
我目前不知道该如何规避这些多出来的0值。
想请教一下,我的思路是否正确,正确的话我该添加怎样的操作来规避0值。
如果不正确想要实现 串口 edma查询方式获取数据的话,应该怎样设计程序。