STM32
直播中

张红

7年用户 1252经验值
私信 关注
[问答]

DMA传输的ADC采样数据总是上一次的数据,为什么?

//数据采集回调函数void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef *hadc){if(adc_ReadOk == 0x55){HAL_ADC_Stop( hadc1);HAL_ADCEx_InjectedStop_IT( hadc1);
HAL_ADC_Start_DMA( hadc1,(uint32_t *) ADC[0],701);sys_Waittime = 0;adc_ReadOk = 0xaa;//数据采集完毕HAL_ADC_Start( hadc1);HAL_ADC_Start( hadc1);HAL_ADCEx_InjectedStart_IT( hadc1);}}
前置代码为:HAL_ADC_Start( hadc1);和HAL_ADCEx_InjectedStart_IT( hadc1);
问题是这样的,我通过模拟看门狗检测电压变化,当超限时将DMA把ADC采样到的数据传输出去,但是经过debug调试和示波器的观察,我可以明显的看出ADC[]数组里面的值是上一次电压变化的值。
而开机后,第一次触发看门狗进行DMA传输到ADC[]的值都为0.



回帖(1)

李傈吏

2024-3-15 15:01:49
这里有个关键问题,DMA 搬运 ADC的值是否正常? 这个是重要前提。
建议先调试这个基础功能的代码,保证ADC连续转换同时结果能连续搬运到你的数组里面。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分