访问电脑版页面

导航:老古开发网手机版STM32单片机STM32单片机的ADC

STM32F0多路ADC采样中的BUG和解决方案

导读:
关键字:
STM32,adc,

uint32_t ADC_Detect(uint32_t  AD_Channel)  

{  

hadc.Instance->CHSELR = 0;  

ADC_ChannelConfTypeDef sConfig;  

sConfig.Channel = AD_Channel;  

sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;  

sConfig.SamplingTIme = ADC_SAMPLETIME_1CYCLE_5;  

HAL_ADC_ConfigChannel(&hadc, &sConfig);  

uint32_t ADC_result;  

/*ADC START*/  

if(HAL_ADC_Start(&hadc)!=HAL_OK)  

{  

while(1)  

{  

}  

}  

/*Wait for ADC completed*/  

if (HAL_ADC_PollForConversion(&hadc, 10) != HAL_OK)  

{  

while(1)  

{  

}  

}  

else  

{  

/*Get the converted value of regular channel*/  

ADC_result = HAL_ADC_GetValue(&hadc);  

HAL_ADC_Stop(&hadc);  

//ADC_result =((ADC_result*3300)>>8);  

return ADC_result;  

}  

}  

使用CUBE生产的ADC无法配置多路采样,多路采样采集值不对,研究后发现是底层函数没有将CHANNEL清零导致的

只需要在函数中增加 hadc.Instance->CHSELR = 0; 手动清0 寄存器即可。 

来源:网络整理   作者:工程师d  2018/5/18 15:01:00
栏目: [ STM32单片机的ADC]

相关阅读

一文带你看懂Stm32定时器+ADC+DMA进行AD采样的实现

STM32学习笔记之ADC转换

基于STM32单片机的ADC与DMA配置的介绍与使用

STM32单片机ADC库函数的定义和使用方法

STM32单片机对ADS1246芯片的驱动

STM32 ADC应用要注意的几点问题

STM32单片机如何实现规则多通道转换

Stm32f103 ADC 学习笔记

如何实现STM32F407单片机的ADC转换

STM32单片机的定时器和ADC的应用方法介绍

一种经典的STM32 ADC多通道转换详细解析

STM32的ADC转换最常见的方式

基于STM32内置ADC实现简易示波器的程序设计与实现

STM32:ADC采集数据实例(采用DMA模式)

STM32的ADC编程方法总结

介绍一种关于STM32 ADC 多通道16路电压采集技术

如何在STM32中得到最佳的ADC精度

基于STM32单片机ADC连续采集和DMA循环转换

STM32单片机的ADC多通道采样

STM32学习:ADC/DMA/USART