查看: 4119|回复: 6

串口dma的使用

[复制链接]

6

主题

25

帖子

210

积分

高级工程师

Rank: 3Rank: 3

积分
210
发表于 2022-7-15 11:16:29 | 显示全部楼层 |阅读模式
请问,使用uart0+dma的时候,可以通过打开或关闭dma通道来实现控制收发吗,即在使能串口和dma之后,在发送前打开dma发送通道,发送结束后关闭dma发送通道,而不是像例程里那样使能或失能dma来实现控制收发,
我目前大体思路是在uart0和dma初始化的时候就enable tx,rx,dma,然后打开uart0接收超时中断,在中断中做数据处理,在发送数据前打开dma发送通道,把数据搬运到发送缓冲区,然后发送结束后关闭发送通道


回复

使用道具 举报

6

主题

25

帖子

210

积分

高级工程师

Rank: 3Rank: 3

积分
210
 楼主| 发表于 2022-7-18 10:24:53 | 显示全部楼层
请教一下,我配置好超时中断和dma之后,串口助手发送,debug模式下看数组里的值是没问题的,和我发送的一样,然后我用开发板给bc25模块发指令,正常来说会返回OK或者ERROR,现在我debug中看到的是如图红框圈的这个,然后串口助手中没有显示接收数组里的内容,这个是为什么
1658110849642.png
1658111038551.jpg
回复

使用道具 举报

155

主题

847

帖子

4701

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4701
发表于 2022-7-18 13:42:58 | 显示全部楼层
dma的指针在接收过程中会变动的,所以每次需要设置下。官方例程是最简单的,能保证运行起来。有什么想法,那就发挥自己的创造力去试吧。
回复

使用道具 举报

6

主题

25

帖子

210

积分

高级工程师

Rank: 3Rank: 3

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

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

使用道具 举报

1

主题

2

帖子

81

积分

中级工程师

Rank: 2

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

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

使用道具 举报

155

主题

847

帖子

4701

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4701
发表于 2022-8-15 08:38:39 | 显示全部楼层
龘渊 发表于 2022-8-8 17:30
请问一下DMA指针在接收过程中会变动具体是怎么变动呢?

回复

使用道具 举报

6

主题

25

帖子

210

积分

高级工程师

Rank: 3Rank: 3

积分
210
 楼主| 发表于 2022-8-16 10:38:50 | 显示全部楼层
龘渊 发表于 2022-8-8 17:30
请问一下DMA指针在接收过程中会变动具体是怎么变动呢?

DMA指针会在接收过程中自加,建议每次进中断之后重新配置DMA通道,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表