sigerio 发表于 2022-7-15 11:16:29

串口dma的使用

请问,使用uart0+dma的时候,可以通过打开或关闭dma通道来实现控制收发吗,即在使能串口和dma之后,在发送前打开dma发送通道,发送结束后关闭dma发送通道,而不是像例程里那样使能或失能dma来实现控制收发,
我目前大体思路是在uart0和dma初始化的时候就enable tx,rx,dma,然后打开uart0接收超时中断,在中断中做数据处理,在发送数据前打开dma发送通道,把数据搬运到发送缓冲区,然后发送结束后关闭发送通道


sigerio 发表于 2022-7-18 10:24:53

请教一下,我配置好超时中断和dma之后,串口助手发送,debug模式下看数组里的值是没问题的,和我发送的一样,然后我用开发板给bc25模块发指令,正常来说会返回OK或者ERROR,现在我debug中看到的是如图红框圈的这个,然后串口助手中没有显示接收数组里的内容,这个是为什么

顾博文 发表于 2022-7-18 13:42:58

dma的指针在接收过程中会变动的,所以每次需要设置下。官方例程是最简单的,能保证运行起来。有什么想法,那就发挥自己的创造力去试吧。

sigerio 发表于 2022-7-18 14:21:39

问题解决了,是校验位的事,建议开发项目的时候这个玩意好好和上头沟通一下,就一个校验位耗了我四天时间,所有可能性都试了一遍,数据格式转来转去,最后就一个简单的配置问题,所以各位开发时一定要注意这些细节,
比如dma,例程给的就是最简单的结构,然后这个帖子的整体想法也经过验证可以使用

有时间会贴代码上来,希望不足的地方,大佬们多指正

龘渊 发表于 2022-8-8 17:30:38

顾博文 发表于 2022-7-18 13:42
dma的指针在接收过程中会变动的,所以每次需要设置下。官方例程是最简单的,能保证运行起来。有什么想法, ...

请问一下DMA指针在接收过程中会变动具体是怎么变动呢?

顾博文 发表于 2022-8-15 08:38:39

龘渊 发表于 2022-8-8 17:30
请问一下DMA指针在接收过程中会变动具体是怎么变动呢?

sigerio 发表于 2022-8-16 10:38:50

龘渊 发表于 2022-8-8 17:30
请问一下DMA指针在接收过程中会变动具体是怎么变动呢?

DMA指针会在接收过程中自加,建议每次进中断之后重新配置DMA通道,
页: [1]
查看完整版本: 串口dma的使用