OpenEdv-开源电子网

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

HAL库使用DMA是否可以将数据不断的搬进大数组?

[复制链接]

85

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2020-12-5
在线时间
202 小时
发表于 2022-7-15 16:16:02 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 车嘉炜 于 2022-7-15 16:36 编辑

一组数据有256个,使用DMA从外设搬进内存空间。是否可以定义一个大数组作为DMA的内存地址,DMA设置每组搬运256数据,搬运完256个数之后在产生的中断里面修改内存空间的地址偏移256,那这样下次数组到来就是从大数组的第256个下标继续保存,这样就可以把全部的数据放进一个数组里面了。比如定义数组 uint16_t DMASAVEBUF[256*1024];
设置DMA的数据来源和内存地址:
HAL_DMA_Start_IT(&hdma_cho, (uint32_t)&GPIOD->IDR,(uint32_t)DMASAVEBUF, 256);
然后在中断里面修改内存地址:
HAL_DMA_Start_IT(&hdma_cho, (uint32_t)&GPIOD->IDR,(uint32_t)DMASAVEBUF+256, 256);
请问这样是否可行?





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

821

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3359
金钱
3359
注册时间
2011-11-10
在线时间
207 小时
发表于 2022-7-16 08:03:03 | 显示全部楼层
干嘛256的搬运,串口DMA一次最大可以搬运65535个到一个数组。
回复

使用道具 举报

13

主题

644

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1976
金钱
1976
注册时间
2021-4-16
在线时间
505 小时
发表于 2022-7-16 09:44:33 | 显示全部楼层
实践是检验真理的唯一标准
回复

使用道具 举报

3

主题

821

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3359
金钱
3359
注册时间
2011-11-10
在线时间
207 小时
发表于 2022-7-17 10:30:08 | 显示全部楼层
不要怎么麻烦。串口DMA一次最大可以搬运65535个
回复

使用道具 举报

85

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2020-12-5
在线时间
202 小时
 楼主| 发表于 2022-7-17 10:34:57 | 显示全部楼层
疾如风 发表于 2022-7-16 09:44
实践是检验真理的唯一标准

您好,我实践了,但是目前可以进终端,数据不对
回复

使用道具 举报

85

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2020-12-5
在线时间
202 小时
 楼主| 发表于 2022-7-17 13:37:49 | 显示全部楼层
c2007s 发表于 2022-7-17 10:30
不要怎么麻烦。串口DMA一次最大可以搬运65535个

您好,是这样的,我的数据不是连续的,这256组数据有个触发标志,当外部中断到来再往内存中存储数据,并不是一直存,一直存就会有无用数据存进去
回复

使用道具 举报

54

主题

349

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1044
金钱
1044
注册时间
2022-4-20
在线时间
373 小时
发表于 2022-7-18 09:37:14 | 显示全部楼层
车嘉炜 发表于 2022-7-17 10:34
您好,我实践了,但是目前可以进终端,数据不对

你在中断里再进行地址偏移试试
又菜又爱指点
回复

使用道具 举报

54

主题

349

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1044
金钱
1044
注册时间
2022-4-20
在线时间
373 小时
发表于 2022-7-18 09:38:10 | 显示全部楼层
驭剑的秘密 发表于 2022-7-18 09:37
你在中断里再进行地址偏移试试

看错了
又菜又爱指点
回复

使用道具 举报

3

主题

821

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3359
金钱
3359
注册时间
2011-11-10
在线时间
207 小时
发表于 2022-7-18 13:06:57 | 显示全部楼层
别这么整了,很容易出问题的。你用串口空闲中断+DMA,一个缓存地址即可,全部接收下来,再解析去除无效字符。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 14:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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