完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
前段时间在使用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< |
|
相关推荐
2个回答
|
|
是否sample时间不够?
|
|
|
|
您好!从您提供的代码片段来看,您正在使用STM8L051的ADC功能来扫描4个通道,并在中断中处理这些数据。您提到在单独转换通道时,AD值比较准确,但在轮番扫描4个通道时,AD值出现较大误差。这可能是由于以下几个原因导致的:
1. **采样时间不足**:在轮询扫描多个通道时,每个通道的采样时间可能会受到影响。请确保每个通道的采样时间足够,以便获得准确的AD值。 2. **通道切换时间**:在扫描多个通道时,需要一定的时间来切换通道。请确保在切换通道时,给ADC足够的时间来稳定。 3. **中断响应时间**:如果程序在中断中处理AD值,可能会因为中断响应时间的延迟导致误差。请检查中断响应时间是否合适。 4. **电源噪声**:在多个通道扫描时,电源噪声可能会影响AD值的准确性。请确保电源稳定,以减少噪声对AD值的影响。 5. **ADC校准**:STM8L051的ADC可能需要校准以提高精度。请参考STM8L051的数据手册,了解如何进行ADC校准。 为了解决这个问题,您可以尝试以下方法: 1. **增加采样时间**:确保每个通道的采样时间足够,以便获得准确的AD值。 2. **优化中断处理**:检查中断响应时间,确保在中断中处理AD值时,能够及时处理。 3. **使用DMA**:如果可能,使用DMA(直接内存访问)来自动读取ADC值,以减少中断处理的延迟。 4. **电源稳定性**:确保电源稳定,以减少噪声对AD值的影响。 5. **ADC校准**:根据STM8L051的数据手册进行ADC校准,以提高精度。 希望这些建议能帮助您解决问题。如果您需要更多关于STM8L051的信息,请参考其数据手册。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1402 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1411 浏览 1 评论
827 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
591 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1441 浏览 2 评论
1784浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
519浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
445浏览 3评论
436浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
412浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-11 08:00 , Processed in 0.806963 second(s), Total 84, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号