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查询方式获取数据的话,应该怎样设计程序。
Cherry Zhou:
您好,我们已收到您的问题并升级到英文论坛寻求帮助,如有答复将尽快回复您。谢谢!
,
? ??:
问题已解决:
实现方式 EDMA+ping-pong