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

采用STM32cube完成ADC的DMA功能  

[复制链接]
feiante 发布时间:2015-1-8 08:51
阅读主题, 点击返回1楼
收藏 6 评论38 发布时间:2015-1-8 08:51
38个回答
philing-1270758 回答时间: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
asssdz-382474 回答时间: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:44
HAL_ADC_Start_DMA(&hadc, ADC_ConvertedValue,2)这个2不是指通道吧?网上有的人说是指次数,我见到有人这 ...

对啊,我也看网上有人说是次数,你看的是微雪课堂这么写的吧?我是在这里看的
liuboqiang2588 回答时间:2018-3-20 17:09:33
philing-1270758 发表于 2016-10-23 17:44
HAL_ADC_Start_DMA(&hadc, ADC_ConvertedValue,2)这个2不是指通道吧?网上有的人说是指次数,我见到有人这 ...

微雪课堂的那个我大部分我照着做了,能得出结果,但结果不对,而且微雪把次数设成100次之后,我后来给改成200次、500次,结果就不对了,不知道为什么,是不是这个100理解的有问题?
dark_ness 回答时间:2018-5-13 20:47:01
1.在ADC的DMA设置里,DMA字宽设置为半字:
/* ADC1 DMA Init */
    /* ADC1 Init */
    hdma_adc1.Instance = DMA1_Channel1;
    hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY;
    hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE;
    hdma_adc1.Init.MemInc = DMA_MINC_ENABLE;
    hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
    hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
    hdma_adc1.Init.Mode = DMA_NORMAL;
    hdma_adc1.Init.Priority = DMA_PRIORITY_HIGH;
    if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)
    {
      _Error_Handler(__FILE__, __LINE__);
    }

    __HAL_LINKDMA(adcHandle,DMA_Handle,hdma_adc1);

2.存储的空间可以定义成uint32_t,word的数量可以要采集次数的一半:
uint32_t uhADCxConvertedValue[131];
3.启动DMA的时候,传入缓冲区的地址按(uint32_t *)传入。
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&uhADCxConvertedValue, 262);
4.这样进行了262次采样后,存放在uhADCxConvertedValue区域内的数据就是按16bit连续放过去的。
测亲的结果分享的。
Alex_lcy 回答时间:2019-3-14 15:25:15
楼主,按照你的帖子,同样用STM32CubeMX给STM32F030R8配置多通道ADC+DMA,发现ADC_Regular_ConversionMode中无法为各路通道分别设置RANK,CHANNEL,CYCLE等参数,这是什么原因呢,我在下面的帖子有提到:
https://www.stmcu.org.cn/module/forum/thread-619778-1-1.html
看到还望指点一二,谢谢!
1234

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版