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

【经验分享】stm32H743基于CubeMX配置为双ADC多通道DMA规则采样

[复制链接]
STMCU小助手 发布时间:2021-12-30 13:13
stm32H743的ADC支持的最大频率为36MHz,有相关资料上说是可以超频,具体技术细节不多讨论。

需求:

使用stm32H743的ADC采集5路数据,当然还要配合DMA,现在把5路数据分在两个ADC上,ADC1和ADC3,那么也要用两个DMA还传送数据。

CubeMX配置如下:

配置时钟:

先配置主时钟,我的是8M的,再配置系统频率480M,然后配置ADC时钟36M,分频后ADC的频率为18M,其它参数系统会自动配置,这个还是比较方便的,配置如下图:

20210603162553220.png


20210603162652932.png


下面配置芯片管脚:

ADC1下面采3个通道:

20210603162826402.png


20210603163005774.png


DMA配置:

20210603163044509.png


GPIO配置:

20210603163123541.png


ADC3下面挂2个通道:

主要是DMA,避免冲突,用了另一个DMA,其它配置都一样。

2021060316330787.png


中断配置:

因为在使用HAL库时,函数调用太繁杂,也没有那么多时间细细研究,所以,把调用HAL句柄的选项点掉了:

20210603163555900.png


然后就可以生成代码了。

在生成后的代码中,要启用采样时调用函数:
  1.             HAL_ADC_Start_DMA(&hadc3, (uint32_t *)adcData.array2, 6000);
  2.             HAL_ADC_Start_DMA(&hadc1, (uint32_t *)adcData.array1, 9000);
复制代码

在文件stm32h7xx_it.cvoid 中的中断函数:

void DMA2_Stream0_IRQHandler(void)

void DMA1_Stream0_IRQHandler(void) 中,要清中断标志位和停止采集:

  1.         MODIFY_REG(DMA1->LIFCR, DMA_LIFCR_CTCIF0, DMA_LIFCR_CTCIF0);  // 清除中断
  2.         HAL_ADC_Stop_DMA(&hadc3);
复制代码




收藏 评论0 发布时间:2021-12-30 13:13

举报

0个回答

所属标签

相似分享

官网相关资源

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