OpenEdv-开源电子网

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

stm32f429 hal库 adc的dma中断函数

[复制链接]

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2019-7-8
在线时间
51 小时
发表于 2020-7-27 23:22:29 | 显示全部楼层 |阅读模式
5金钱
我用3个ADC进行交替采样,dma模式2搬运。其中启动交替采样DMA传输的函数HAL_ADCEx_MultiModeStart_DMA(&hadc1,(uint32_t *)adcBuffer, 128); 里面的这第三个量128是length,我定义了个uint32_t adcBuffer[128];的数组接收。DMA传输完了有中断,如果像我这样设置,是不是填满了128的数组就产生一个DMA2_Stream0_IRQHandler的中断?

但是数据手册上说每两个数据项可用时发送一个dma请求,所以我不清楚到底是两个数据项就产生dma中断,还是填满了我这128数组再产生中断?

下面是函数说明和数据手册


5.png
批注 2020-07-27 231914.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2019-10-28
在线时间
9 小时
发表于 2020-7-30 19:33:25 | 显示全部楼层
以我的理解是,接收到两个半字的数据时会发送一个DMA请求。因为其实你的缓存大小只是让DMA知道你的缓存的边界,当在DMA使能循环模式时到达缓存结尾会回到缓存的首地址重新开始存储。然后图上文字也说了“每发送一个 DMA 请求(两个数据项可用),就会以字的形式传输表示两个 ADC 转换数据项的两个半字。”。这个意思就是只要转换得出了两个半字的ADC数据,即两个ADC数据,就会发送一次DMA请求,然后自动将数据存到你的数组中,然后DMA指针偏移,下次数据存到偏移后的地址。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-30 19:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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