STM32
直播中

青sky

8年用户 1284经验值
擅长:模拟技术
私信 关注
[问答]

求助,关于STM8L051 AD精度的问题求解

前段时间在使用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)

黄晔华

2024-5-16 14:41:07
是否sample时间不够?
举报

张桂兰

2024-5-16 17:49:12
您好!从您提供的代码片段来看,您正在使用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的信息,请参考其数据手册。
举报

更多回帖

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