0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32U5 ADC+DMA配置演示

茶话MCU 来源:茶话MCU 2023-07-29 16:19 次阅读

有人使用STM32U5系列MCU开发产品,在用到ADC结合DMA传输时遇到点障碍,这里针对片内ADC1和ADC4基于DMA标准请求模式和链表模式演示下实现过程,以供参考。

先对ADC1基于DMA标准请求模式做演示。

随意选择ADC1的4个通道,扫描模式,连续转换,DMA传输转换结果并令DMA工作在外设到内存的循环传输模式。使用CubeMx进行配置。其中DMA通道使用Channel 1。

208c8d32-2dda-11ee-815d-dac502259ad0.png

20efc29e-2dda-11ee-815d-dac502259ad0.png

216914fa-2dda-11ee-815d-dac502259ad0.png

相关代码:

#defineADC_BUFFRER_SIZE((uint32_t)8)
uint32_t   ADC1_Result[ADC_BUFFRER_SIZE];


ADC_HandleTypeDef hadc1;
DMA_HandleTypeDef handle_GPDMA1_Channel1; //For ADC1


/*USERCODEBEGIN2*/




HAL_PWREx_EnableVddA();//additmanuallywithlowercubeMxversion

__HAL_LINKDMA(&hadc1,DMA_Handle,handle_GPDMA1_Channel1);


if(HAL_ADC_Start_DMA(&hadc1,(uint32_t*)ADC1_Result,
                      (ADC_BUFFRER_SIZE)
                       ) != HAL_OK)
  {
    Error_Handler();
  } 


  /* USER CODE END 2 */

运行结果如下图所示:【目前4个通道我是悬空的】

21a23672-2dda-11ee-815d-dac502259ad0.png

现在对ADC4基于DMA链表模式做演示,其实就一个节点。

选择ADC4的4个内部信号通道,扫描模式,连续转换,DMA传输转换结果,并令DMA工作在外设字到内存字的循环模式。使用CubeMx进行配置。其中DMA通道使用Channel 0。对于内部信号的采样,往往有最小采样时间要求,我这里的演示随便选了个参数,具体应用时请参考数据手册及当时ADC时钟具体拟定。特此提醒

21ba54dc-2dda-11ee-815d-dac502259ad0.png

关于DMA链表模式的配置在CubeMx界面里的Utility菜单下。

2202a7dc-2dda-11ee-815d-dac502259ad0.png

222328ae-2dda-11ee-815d-dac502259ad0.png

225ee04c-2dda-11ee-815d-dac502259ad0.png

相关用户代码:

/*Privatevariables---------------------------------------------------------*/
ADC_HandleTypeDef hadc4;
DMA_NodeTypeDef Node_GPDMA1_Channel1;
DMA_QListTypeDef List_GPDMA1_Channel1;
DMA_HandleTypeDef handle_GPDMA1_Channel0;
/* USER CODE BEGIN PV */


/* USER CODE BEGIN 2 */


HAL_PWREx_EnableVddA(); //add it manually with lower cubeMx version


MX_ADC4Queue_Config();


__HAL_LINKDMA(&hadc4,DMA_Handle,handle_GPDMA1_Channel0);


HAL_DMAEx_List_SetCircularMode(&ADC4Queue);

if (HAL_DMAEx_List_LinkQ(&handle_GPDMA1_Channel0, &ADC4Queue) != HAL_OK)
{
Error_Handler();
}


if (HAL_ADC_Start_DMA(&hadc4,
(uint32_t *)ADC4_Result,
(ADC_BUFFRER_SIZE)
) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN WHILE */

结果验证【显示了2组数据】:

229b1d82-2dda-11ee-815d-dac502259ad0.png

最后还提醒下,如果CubeMx版本比较低时,HAL_PWREx_EnableVddA()函数需要自己手动添加。我目前CubeMx 6.9.0版本已经不用手动添加了,创建工程时会将其自动生成于相应位置。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • adc
    adc
    +关注

    关注

    98

    文章

    6496

    浏览量

    544477
  • dma
    dma
    +关注

    关注

    3

    文章

    560

    浏览量

    100553

原文标题:STM32U5 ADC+DMA配置演示

文章出处:【微信号:stmcu832,微信公众号:茶话MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于STM32U5STM32CubeMX环境搭建

    基于STM32U5STM32CubeMX环境搭建
    的头像 发表于 09-21 17:35 1507次阅读
    基于<b class='flag-5'>STM32U5</b> 的 <b class='flag-5'>STM32</b>CubeMX环境搭建

    STM32U5系列TIMER+DMA+DAC应用演示

    有人使用STM32U575芯片的DAC功能。他希望使用TIMER事件触发DMA,并通过DMA传输内存数据到DAC输出寄存器,进而产生相应的DAC输出波形。可他不知如何配置
    的头像 发表于 01-24 09:10 1794次阅读
    <b class='flag-5'>STM32U5</b>系列TIMER+<b class='flag-5'>DMA</b>+DAC应用<b class='flag-5'>演示</b>

    怎样去解决STM32多通道ADC+DMA无法进入中断的问题

    STM32多通道ADC+DMA为什么会无法进入中断呢?怎样去解决STM32多通道ADC+DMA无法进入中断的问题?
    发表于 09-26 08:04

    如何对单缓冲模式的ADC+DMA如何进行配置

    怎样去操作单缓冲模式的ADC+DMA呢?如何对单缓冲模式的ADC+DMA如何进行配置
    发表于 10-18 09:29

    STM32F407的ADC+DMA该如何去使用呢

    怎样去读取ADC的值?STM32F407的ADC+DMA该如何去使用呢?
    发表于 10-18 08:34

    STM32U5系列采用LPBAM进行电源优化

    STM32U5系列采用LPBAM进行电源优化
    发表于 11-21 08:11 0次下载
    <b class='flag-5'>STM32U5</b>系列采用LPBAM进行电源优化

    STM32L5STM32U5系列的Arm®TrustZone®功能

    STM32L5STM32U5系列的Arm®TrustZone®功能
    发表于 11-21 17:06 0次下载
    <b class='flag-5'>STM32L5</b>和<b class='flag-5'>STM32U5</b>系列的Arm®TrustZone®功能

    STM32U5系列物联网节点探索套件

    STM32U5系列物联网节点探索套件
    发表于 11-22 08:21 0次下载
    <b class='flag-5'>STM32U5</b>系列物联网节点探索套件

    STM32U5带OEM Key保护的RDP降级

    电子发烧友网站提供《STM32U5带OEM Key保护的RDP降级.pdf》资料免费下载
    发表于 08-01 15:42 0次下载
    <b class='flag-5'>STM32U5</b>带OEM Key保护的RDP降级

    STM32U5系列使用LPBAM进行功耗优化

    电子发烧友网站提供《STM32U5系列使用LPBAM进行功耗优化.pdf》资料免费下载
    发表于 08-01 16:42 2次下载
    <b class='flag-5'>STM32U5</b>系列使用LPBAM进行功耗优化

    STM32U5系列片内ADC1和ADC4实现过程(上)

    有人使用STM32U5系列MCU开发产品,在用到ADC结合DMA传输时遇到点障碍,这里针对片内ADC1和ADC4基于
    的头像 发表于 07-30 09:27 1206次阅读
    <b class='flag-5'>STM32U5</b>系列片内<b class='flag-5'>ADC</b>1和<b class='flag-5'>ADC</b>4实现过程(上)

    STM32U5 LPBAM模式介绍

    STM32U5 LPBAM模式介绍
    的头像 发表于 10-26 17:59 775次阅读
    <b class='flag-5'>STM32U5</b> LPBAM模式介绍

    基于STM32U5的B-U585I-IOT02A开发板开箱

    基于STM32U5的B-U585I-IOT02A开发板开箱
    的头像 发表于 09-26 16:20 1577次阅读
    基于<b class='flag-5'>STM32U5</b>的B-<b class='flag-5'>U</b>585I-IOT02A开发板开箱

    STM32U5介绍

    电子发烧友网站提供《STM32U5介绍.pdf》资料免费下载
    发表于 09-19 15:06 0次下载
    <b class='flag-5'>STM32U5</b>介绍

    STM32项目实战:基于STM32U5的火灾报警系统(LVGL),附项目教程/源码

    小编来分享一个《火灾报警系统》的项目案例,硬件平台是STM32U5开发板+资源扩展板+显示触摸屏+仿真器,项目的演示界面如下图所示。火灾报警系统项目,需要一个蜂鸣
    的头像 发表于 11-13 14:18 562次阅读
    <b class='flag-5'>STM32</b>项目实战:基于<b class='flag-5'>STM32U5</b>的火灾报警系统(LVGL),附项目教程/源码