发新帖我要提问
12
返回列表
打印
[应用相关]

三重ADC扫描连续采样+DMA双缓冲区存储

[复制链接]
楼主: 原来是wjc
手机看帖
扫描二维码
随时随地手机跟帖
21
原来是wjc|  楼主 | 2023-11-25 14:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
三、连续模式下的双缓冲区模式
1.Cube设置修改
只需要在ADC1,ADC2与ADC3的设置中关闭定时器触发的设置并打开连续模式即可,如下所示:

此时定时器TIM2可以选择关闭。

使用特权

评论回复
22
原来是wjc|  楼主 | 2023-11-25 14:19 | 只看该作者
2.main.c修改
需要注意的是,STM32的双缓存机制的设置函数理论上为HAL_DMAEx_MultiBufferStart_IT(),但是使用该函数无法进行缓冲区的切换,可能是官方文档存在一定BUG。为此,我摸索出可以实现相关机制的配置代码如下:
void HAL_ADC_MutiM1ConvCpltCallback(DMA_HandleTypeDef *_hdma);

HAL_DMA_RegisterCallback((&hadc1)>DMA_Handle,HAL_DMA_XFER_M1CPLT_CB_ID,HAL_ADC_MutiM1ConvCpltCallback);
if (HAL_DMAEx_MultiBufferStart((&hadc1)->DMA_Handle,(uint32_t)&hadc1.Instance->DR,(uint32_t)buf0,(uint32_t)buf1,AD_BufferSize)!= HAL_OK){
        printf("\r\n HAL_DMAEx_MultiBufferStart failed!");
}
if(HAL_ADC_Start(&hadc3)!=HAL_OK){
        Error_Handler();
}
if(HAL_ADC_Start(&hadc2)!=HAL_OK){
        Error_Handler();
}
if(HAL_ADCEx_MultiModeStart_DMA(&hadc1,(uint32_t*)buf0,AD_BufferSize)!=HAL_OK){
        Error_Handler();
}
__HAL_DMA_ENABLE_IT(&hdma_adc1,DMA_IT_TC);
__HAL_DMA_DISABLE_IT(&hdma_adc1,DMA_IT_HT);

使用特权

评论回复
23
原来是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,同时再自行定义一个回调函数即可。

使用特权

评论回复
24
原来是wjc|  楼主 | 2023-11-25 14:19 | 只看该作者
双缓存机制的意义在于可以改变缓冲区的目标地址,需要使用
HAL_DMAEx_ChangeMemory()函数,打开stm32f4xx_hal_dma_ex.c文件即可查看该函数的定义和调用方法。

使用特权

评论回复
25
童雨竹| | 2024-7-21 08:18 | 只看该作者

电路的结构类似于全桥式,只是把其中的两只开关管(T3、T4)换成了两只等值大电容C1、C2。

使用特权

评论回复
26
Wordsworth| | 2024-7-21 09:21 | 只看该作者

通过对于PCB电路板边缘的孔或通孔做电镀石墨化

使用特权

评论回复
27
Clyde011| | 2024-7-21 10:24 | 只看该作者

根据这些指标,测试员可以评估电源的性能和可靠性。

使用特权

评论回复
28
公羊子丹| | 2024-7-21 11:17 | 只看该作者

脉冲变压器磁能被积累的问题容易解决,

使用特权

评论回复
29
万图| | 2024-7-21 12:20 | 只看该作者

在PCB组装过程中通常使用两种类型的技术

使用特权

评论回复
30
Uriah| | 2024-7-21 13:23 | 只看该作者

一般PCB是V-CUT,

使用特权

评论回复
31
帛灿灿| | 2024-7-21 15:19 | 只看该作者

由于共模电流的同向性,会在线圈内产生同向的磁场而增大线圈的感抗

使用特权

评论回复
32
周半梅| | 2024-7-21 18:18 | 只看该作者

在交流电频率一定情况下,电感量越大,其对交流电阻碍能力越大

使用特权

评论回复
33
Bblythe| | 2024-7-21 19:22 | 只看该作者

在动态测试过程中,测试员需要改变测试负载的值和频率,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则