STM8S003 ADC采集异常,不接外部电源能采集到值,这是为什么啊,我ADC配置什么的都是好的。- void main(void)
- {
- /* Infinite loop */
- Bsp_Sys_Init();
- while (1)
- {
- ADCV = ADC_Read();
- printf("adc= %d\r\n",ADCV) ;
- UART1_SendData8('H');
- TIMDelay_Nms(1000);
- UART1_SendData8('e');
- TIMDelay_Nms(1000);
- }
- }
复制代码- void Bsp_ADC_Init(void)
- {
- //Set ADC1 to default setting
- ADC1_DeInit();
- ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, //Single mode
- ADC1_CHANNEL_3, //Use channel 3- PD2
- ADC1_PRESSEL_FCPU_D2, //Pre-12
- ADC1_EXTTRIG_TIM, DISABLE, //Don't use external trigger
- ADC1_ALIGN_RIGHT, //Align to right
- ADC1_SCHMITTTRIG_CHANNEL3, DISABLE); //not use schmitter
-
- ADC1_ClearFlag(ADC1_FLAG_AWS3);
- ADC1_Cmd(ENABLE);
- }
- uint16_t ADC_Read(void)
- {
- uint16_t adc_value = 0;
- ADC1_StartConversion(); //启动AD转换
- while(!ADC1_GetFlagStatus(ADC1_FLAG_EOC));
- ADC1_ClearFlag(ADC1_FLAG_EOC); //等待转换完成,并清除标志
- adc_value = ADC1_GetConversionValue();
- ADC1_ClearFlag(ADC1_FLAG_EOC);
- return adc_value;
- }
复制代码
|
评分
查看全部评分
一般ADC直接测试板外信号时,都要接个对地电阻1M到10M之间,视ADC内阻和被测信号内阻而定,原则是不能影响测量结果。
评分
查看全部评分
评分
查看全部评分
一般对地接个反向二极管或5V的TVS,这叫虚地,有利于通道安全和将来的EMC认证试验等。
当然接1M左右的电阻也是可以的,起到虚地的作用,防止静电干扰