OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9128|回复: 4

STM32的DMA发送数据,只能32字节一包发送?

[复制链接]

11

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2011-9-23
在线时间
4 小时
发表于 2014-4-21 10:13:00 | 显示全部楼层 |阅读模式

Q1:



使用DMA1 7通道连接UART发送串口数据,CMD_ENABLE之后开始发
MODBUS协议下,发现每次DMA总是发送32个字节数据,然后隔大概15ms继续发送剩下的字节

如下图所示




Q2:
DMA传输完成中断产生的条件似乎是“完成了CNDTR设定值的传输”
那在DMA接收数据中,如何能在接收一包数据(接收到的数据长度未知)后产生中断呢?
而不是要等接收到的数据满CNDTR设定值个字节后才产生中断呢?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-21 19:53:27 | 显示全部楼层
第一个问题不太确定原因,你的DMA配置是一次发送多少字节?
第二个问题,确实不好处理,所以接收数据,一般不用DMA做。
论坛有网友发过用DMA接收的,貌似可以支持不定长接收,你可以参考下。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2011-9-23
在线时间
4 小时
 楼主| 发表于 2014-4-21 21:01:15 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
设置宽度是字节,一般CNDTR设定值为64
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-21 23:45:00 | 显示全部楼层
回复【3楼】qqdqoyo:
---------------------------------
那应该要一次会传输64字节才停哦。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2011-9-23
在线时间
4 小时
 楼主| 发表于 2014-4-22 09:32:43 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
嗯,多谢原子哥提点啊,查了下,确实STM32的DMA不太适合做不定长接收
不过可以用UART的IDLE中断来判断倒是不错
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-9 19:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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