你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

采用STM32cube完成ADC的DMA功能  

[复制链接]
feiante 发布时间:2015-1-8 08:51
赞 收藏 6 评论38 发布时间:2015-1-8 08:51
38个回答
philing 回答时间:2016-10-23 17:44:06
HAL_ADC_Start_DMA(&hadc, ADC_ConvertedValue,2)这个2不是指通道吧?网上有的人说是指次数,我见到有人这样HAL_ADC_Start_DMA(&hadc, ADC_ConvertedValue,100),但是每个通道的值到哪找?怎么分布我搞不懂
zbber 回答时间:2016-10-23 19:55:54
还有一点疑问:ADC是12位的,其实DMA只需要用Half Word就可以了,但实际中HAL_ADC_Start_DMA
assssdz 回答时间:2016-10-23 21:26:25
andypanfan 回答时间:2016-10-24 15:40:05
vention123456 回答时间:2017-2-27 14:15:37
F030的 CubeMX 设置的时候,不像 F103那样。 它的选项不一样,我尝试了好久都不能多通道ADC采集,求帮助
liuboqiang2588 回答时间:2018-3-20 17:06:34
philing-1270758 发表于 2016-10-23 17:443 e8 v2 W' |, p' E3 Q
HAL_ADC_Start_DMA(&hadc, ADC_ConvertedValue,2)这个2不是指通道吧?网上有的人说是指次数,我见到有人这 ...
7 t- P) O1 p3 A( N* g8 V* u/ X. O
对啊,我也看网上有人说是次数,你看的是微雪课堂这么写的吧?我是在这里看的
liuboqiang2588 回答时间:2018-3-20 17:09:33
philing-1270758 发表于 2016-10-23 17:442 ?% F+ O, h6 [5 d+ t
HAL_ADC_Start_DMA(&hadc, ADC_ConvertedValue,2)这个2不是指通道吧?网上有的人说是指次数,我见到有人这 ...
. V; g$ }) D. ~0 P/ n
微雪课堂的那个我大部分我照着做了,能得出结果,但结果不对,而且微雪把次数设成100次之后,我后来给改成200次、500次,结果就不对了,不知道为什么,是不是这个100理解的有问题?
dark_ness 回答时间:2018-5-13 20:47:01
1.在ADC的DMA设置里,DMA字宽设置为半字:+ S# r7 A* T/ _
/* ADC1 DMA Init */
! `9 `8 `5 Z- W6 d" n* G    /* ADC1 Init */+ N& x% ]2 ~; R1 ~
    hdma_adc1.Instance = DMA1_Channel1;
1 m6 }+ ]7 J& E! D    hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY;5 @! {9 [0 U# o. g, l
    hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE;/ Z: J' \9 C7 k: h9 q
    hdma_adc1.Init.MemInc = DMA_MINC_ENABLE;
) _% p2 Y0 g9 y% i3 L0 C    hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;- L0 |1 h# X7 v9 p' R
    hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
6 s/ W! P% k* ]% I! e% b    hdma_adc1.Init.Mode = DMA_NORMAL;
; k. P1 \3 G+ b+ ]    hdma_adc1.Init.Priority = DMA_PRIORITY_HIGH;
8 n0 K$ a& q) W# r    if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)! ]# U0 Q* k( @' o2 `0 \8 R+ ?, j1 d
    {
. n: ?0 S$ U3 \5 }      _Error_Handler(__FILE__, __LINE__);, o6 P3 V8 ~3 |+ L3 r
    }( M2 H7 t4 q8 U& L

6 N8 \# p8 |8 u) R( T2 X    __HAL_LINKDMA(adcHandle,DMA_Handle,hdma_adc1);
6 z! X9 B( j+ M, R6 G8 r. b( f" S& O( x2 L$ V; C) N
2.存储的空间可以定义成uint32_t,word的数量可以要采集次数的一半:
$ u  v2 z( A  F. m" _% A- m' Puint32_t uhADCxConvertedValue[131];
) N0 D+ G9 u4 N4 J* _0 J5 V3.启动DMA的时候,传入缓冲区的地址按(uint32_t *)传入。
& Y; A7 W( w6 BHAL_ADC_Start_DMA(&hadc1, (uint32_t*)&uhADCxConvertedValue, 262);
4 i: X7 E  v+ C! r0 O, Y4.这样进行了262次采样后,存放在uhADCxConvertedValue区域内的数据就是按16bit连续放过去的。* m5 J; b- k' N
测亲的结果分享的。
Alex_lcy 回答时间:2019-3-14 15:25:15
楼主,按照你的帖子,同样用STM32CubeMX给STM32F030R8配置多通道ADC+DMA,发现ADC_Regular_ConversionMode中无法为各路通道分别设置RANK,CHANNEL,CYCLE等参数,这是什么原因呢,我在下面的帖子有提到:
3 Q: m; w* M% D5 [) Ehttps://www.stmcu.org.cn/module/forum/thread-619778-1-1.html
* k2 c$ y- f  \! r$ G看到还望指点一二,谢谢!
123
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版