TI中文支持网
TI专业的中文技术问题搜集分享网站

关于TI官方xileg_vdc.c程序的问题

本人在实验室学习,使用2808

发现上一版的vdc程序是参照官方例程的

 while (AdcRegs.ADCST.bit.SEQ1_BSY == 1)

    {};

 

    Tmp1 = AdcRegs.ADCRESULT0^0x8000;

    Tmp2 = AdcRegs.ADCRESULT2^0x8000;

    Tmp3 = AdcRegs.ADCRESULT4^0x8000;

    Tmp4 = AdcRegs.ADCRESULT6^0x8000;

 

    DatQ17 = (int32)Tmp1 + (int32)Tmp2 + (int32)Tmp3 + (int32)Tmp4;

    p->ImeasB = DatQ17; //实际是Q17格式

    p->ImeasB *= 1;

即直接将寄存器的值异或8000即可 

但现在发现新版的实验室用的程序是

while (AdcRegs.ADCST.bit.SEQ1_BSY == 1)

    {};

    DatQ15 = (AdcRegs.ADCRESULT0>>4) –  p->ImeasBOffset;

    Tmp1 = DatQ15*p->Kcurrent;    //1.46*4096/3=1993

    DatQ15 = (AdcRegs.ADCRESULT2>>4) – p->ImeasBOffset;

    Tmp2 = DatQ15*p->Kcurrent;

    DatQ15 = (AdcRegs.ADCRESULT4>>4) –  p->ImeasBOffset;

    Tmp3 = DatQ15*p->Kcurrent;

    DatQ15 = (AdcRegs.ADCRESULT6>>4) – p->ImeasBOffset;//2047;

    Tmp4 = DatQ15*p->Kcurrent;

 

    DatGQ = (int32)Tmp1 + (int32)Tmp2 + (int32)Tmp3 + (int32)Tmp4;

    DatGQ =  DatGQ >> 2;

    p->ImeasB = DatGQ; // Global Q

    p->ImeasB *= -1;

 

就是将寄存器的值右移4位,在乘以kurrent即可

那请问旧版的程序是否有什么缺陷呢?

囧:

Kcurrent是一个转换系数,而且这两版的定标变了,一个是Q15一个是Q17,是不是为了改定标才这么做的

赞(0)
未经允许不得转载:TI中文支持网 » 关于TI官方xileg_vdc.c程序的问题
分享到: 更多 (0)