[应用相关] 三重ADC扫描连续采样+DMA双缓冲区存储

[复制链接]
3744|33
 楼主| 原来是wjc 发表于 2023-11-25 14:19 | 显示全部楼层
三、连续模式下的双缓冲区模式
1.Cube设置修改
只需要在ADC1,ADC2与ADC3的设置中关闭定时器触发的设置并打开连续模式即可,如下所示:
21849656191e2d03cf.png
此时定时器TIM2可以选择关闭。
 楼主| 原来是wjc 发表于 2023-11-25 14:19 | 显示全部楼层
2.main.c修改
需要注意的是,STM32的双缓存机制的设置函数理论上为HAL_DMAEx_MultiBufferStart_IT(),但是使用该函数无法进行缓冲区的切换,可能是官方文档存在一定BUG。为此,我摸索出可以实现相关机制的配置代码如下:
  1. void HAL_ADC_MutiM1ConvCpltCallback(DMA_HandleTypeDef *_hdma);

  2. HAL_DMA_RegisterCallback((&hadc1)>DMA_Handle,HAL_DMA_XFER_M1CPLT_CB_ID,HAL_ADC_MutiM1ConvCpltCallback);
  3. if (HAL_DMAEx_MultiBufferStart((&hadc1)->DMA_Handle,(uint32_t)&hadc1.Instance->DR,(uint32_t)buf0,(uint32_t)buf1,AD_BufferSize)!= HAL_OK){
  4.         printf("\r\n HAL_DMAEx_MultiBufferStart failed!");
  5. }
  6. if(HAL_ADC_Start(&hadc3)!=HAL_OK){
  7.         Error_Handler();
  8. }
  9. if(HAL_ADC_Start(&hadc2)!=HAL_OK){
  10.         Error_Handler();
  11. }
  12. if(HAL_ADCEx_MultiModeStart_DMA(&hadc1,(uint32_t*)buf0,AD_BufferSize)!=HAL_OK){
  13.         Error_Handler();
  14. }
  15. __HAL_DMA_ENABLE_IT(&hdma_adc1,DMA_IT_TC);
  16. __HAL_DMA_DISABLE_IT(&hdma_adc1,DMA_IT_HT);
 楼主| 原来是wjc 发表于 2023-11-25 14:19 | 显示全部楼层
在上述代码中,首先利用RegisterCallback函数注册dma的缓冲区2全满回调函数,这样在缓存2填满后会触发回调函数进入用户定义的HAL_ADC_MutiM1ConvCpltCallback()中。同时使用非中断模式启动DMA的双缓存存储,在ADC启动后打开缓冲区全满中断,即DMA_IT_TC标志,可以根据需要选择是否打开缓冲区半满中断,即DMA_IT_HT标志。要注意的是,如果要打开缓冲区半满中断,应当给缓冲区2添加一个缓冲区半满回调函数,只需要再注册函数的调用中将ID从HAL_DMA_XFER_M1CPLT_CB_ID改为HAL_DMA_XFER_M1HALFCPLT_CB_ID,同时再自行定义一个回调函数即可。
 楼主| 原来是wjc 发表于 2023-11-25 14:19 | 显示全部楼层
双缓存机制的意义在于可以改变缓冲区的目标地址,需要使用
HAL_DMAEx_ChangeMemory()函数,打开stm32f4xx_hal_dma_ex.c文件即可查看该函数的定义和调用方法。
童雨竹 发表于 2024-7-21 08:18 | 显示全部楼层

电路的结构类似于全桥式,只是把其中的两只开关管(T3、T4)换成了两只等值大电容C1、C2。
Wordsworth 发表于 2024-7-21 09:21 | 显示全部楼层

通过对于PCB电路板边缘的孔或通孔做电镀石墨化
Clyde011 发表于 2024-7-21 10:24 | 显示全部楼层

根据这些指标,测试员可以评估电源的性能和可靠性。
公羊子丹 发表于 2024-7-21 11:17 | 显示全部楼层

脉冲变压器磁能被积累的问题容易解决,
万图 发表于 2024-7-21 12:20 | 显示全部楼层

在PCB组装过程中通常使用两种类型的技术
Uriah 发表于 2024-7-21 13:23 | 显示全部楼层

一般PCB是V-CUT,
帛灿灿 发表于 2024-7-21 15:19 | 显示全部楼层

由于共模电流的同向性,会在线圈内产生同向的磁场而增大线圈的感抗
周半梅 发表于 2024-7-21 18:18 | 显示全部楼层

在交流电频率一定情况下,电感量越大,其对交流电阻碍能力越大
Bblythe 发表于 2024-7-21 19:22 | 显示全部楼层

在动态测试过程中,测试员需要改变测试负载的值和频率,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部