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
    +关注

    关注

    95

    文章

    5651

    浏览量

    539459
  • dma
    dma
    +关注

    关注

    3

    文章

    535

    浏览量

    99019

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

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

收藏 人收藏

    评论

    相关推荐

    stm32cubemx建立多通道ADC+DMA,想使用DMA中断要怎么实现?

    各位大神: 我在用stm32 cubemx建立ADC+DMA多通道,想使用DMA中断,百度了个设置在DMA里增加ADC1,然后在中断里开启
    发表于 04-02 07:14

    STM32G4 ADC+DMA中断异常是什么原因导致的?

    高级定时器1 3路互补pwm ,pwm ch4 触发adc,出现的问题是 单独启动pwm ch4 adc+dma 正常,如果不启动ch4正常情况是不会触发 adc+dma中断,但是正常启动3路互补PWM 没启动pwm ch4 情
    发表于 04-02 06:52

    STM32F030F4上使用CubeMX配置ADC+DMA循环采集无法提取数据的原因?

    如题,使用STM32CubeMX配置了F030的ADC+DMA循环采集,ADC启动后OVR一直处于置为状态,但是DR寄存器输出的数据又是正常的,我使用std库已经
    发表于 04-16 08:20

    为什么STM32F103C8T6加上ADC+DMA后液晶不能显示?

    STM32F103C8T6加上ADC+DMA后,液晶不能显示,但是ADC+DMA使用正常,液晶是LCM19264,已经检查了I/O没有冲突,具体配置如下: 说明: 一:I/O口: 1:
    发表于 08-16 05:12

    STM32多通道ADC+DMA为什么无法进入中断

    STM32 多通道ADC+DMA无法进入中断问题中断函数名称不一致stm32f10x_it.c 中断名称DMA1_ChanneMl1_IRQHandler.启动文件
    发表于 08-02 08:33

    STM32F103定时器触发ADC+DMA传输 精选资料分享

    STM32F103定时器触发ADC+DMA传输ADC除了软件触发方式之外还有外部触发模式,我用TIM2定时器触发ADC,并用DMA传输
    发表于 08-11 06:05

    MM32F103 ADC+DMA 多通道采样

    MM32F103 ADC+DMA 多通道采样请问软件如何配置
    发表于 08-27 14:48

    怎样去解决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

    如何使用stm32cubeMX为STM32U5生成的代码添加FreeRTOS?

    获取 FreeRTOS2 - 从 B-U585-IOT2A 评估板上的演示中获取 FreeRTOS,FreeRTOS 已与 *** 集成3 - 从 ST github 获取 stm32u5 的 FreeRTOS 'classic
    发表于 12-09 07:32

    请问STM32U5的USB如何在STM32CubeMX上直接配置

    STM32U5的USB配置不能和STM32G0B1那样直接在STM32CubeMX上直接配置什么类了吗
    发表于 08-07 06:10

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

    ,实现了一流的超低功耗性能。除了多种 CPU 激活模式配置(可实现更高性能或更低功耗)之外,STM32U5 系列还支持大量低功耗模式,每种模式都具有多个选项。这使得设计人员可以在低功耗性能、短启动时
    发表于 09-08 06:54

    STM32F103定时器触发ADC+DMA传输

    STM32F103定时器触发ADC+DMA传输ADC除了软件触发方式之外还有外部触发模式,我用TIM2定时器触发ADC,并用DMA传输
    发表于 11-30 10:36 50次下载
    <b class='flag-5'>STM32</b>F103定时器触发<b class='flag-5'>ADC+DMA</b>传输

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

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