
金币全给了,不要嫌少,问题如下 前段时间在使用STM8S在一个锂电池管理项目上,但是发现给MCU供电不是很好处理,故改用STM8L051 发现一个比较奇怪的问题! 单独转换通道 AD值还是比较准确的,但是4个通道轮番扫描一次就 ,AD值就有比较大的误差,程序如下 程序放在中断里面,无关部分省略………… for(ADCCH=0;ADCCH<4;) { if(ADCCH == 0) { InputTep = InputTep + ADC_CONV(ADCCH); } if(ADCCH == 1) { BattTep = BattTep + ADC_CONV(ADCCH); } if(ADCCH == 2) { VBusTep = VBusTep + ADC_CONV(ADCCH); } if(ADCCH == 3) { LoadCurrTep = LoadCurrTep + ADC_CONV(ADCCH); } ADCCH++; } ADCCNT++; if(ADCCNT == 8) { InputAVGOld = InputAVG; BattAVGOld = BattAVG; VBusAVGOld = VBusAVG; LoadCurrAVGOld = LoadCurrAVG; InputAVG = InputTep>>3; BattAVG = BattTep>>3; VBusAVG = VBusTep>>3; LoadCurrAVG = LoadCurrTep>>3; InputTep = 0; BattTep = 0; VBusTep = 0; LoadCurrTep = 0; ADCCNT = 0; } void Init_AD(void) { ADC1_CR2 = 0x83; ADC1_CR3 = 0x80; ADC1_SQR1 = 0x80; ADC1_SQR2 = 0; ADC1_SQR4 = 0; } unsigned int ADC_CONV(unsigned char ADCH) { unsigned int DataTep; unsigned int DataTep1; ADC1_SQR3 = 0x08<<ADCH; ADC1_CR1|=0x02; while(ADC1_SR_EOC == 0); DataTep = ADC1_DRL; DataTep1 = ADC1_DRH; DataTep1 = DataTep1<<8; DataTep = DataTep|DataTep1; ADC1_SR_EOC = 0; ADC1_SQR3 = 0; return DataTep; } |
STM8S003无法检测到引脚电平
STM8 @svlreg 问题
STM8AF62XX+L99PM62GXP LIN通讯的电路原理图有吗?官网提供了一套软件,没找到对应的原理图,请大家指教一下
求一个STM8S207例程
初次接触STM8,请问在STVD中,为什么这个Struct会报错
STMS005K6T6 如何采集内部参考电压。
stm8s003 adc中断和通道切换的问题
adc施密特触发器stm8
stm8l051f3 TSSOP20 封装,待机模式下,2天后,电流突然增加到140UA
STM8S用STVP烧录怎么加密?
清理ADC1_CR1_CON位还是 star位 ADC POWERON 模式来回切换那样采样 也还是不准确。
试试看?
1、建议转换通道后连续采样多次(第一次结果丢弃),得到通道N的AD值(平均法)
2、改变通道N,进行下一个通道的AD采集。