This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] C5505 eZdsp:监控电池电压

Guru**** 2895600 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/661066/c5505-ezdsp-monitoring-battery-voltage

您好!

我正在尝试使用 SoC C5505 eZdsp 监测电池电压。 根据 SPRUFP1C (SAR / ADC 用户指南)、我使用的是 GPAIN0方法。

我这样做:

-测量基准电压(通道0)

-测量电池电压/8作为内部分压器(通道1)的输出。

我的问题是基准电压低于电池电压。

这是我的代码:

UINT16 Read_Battery_Voltage (void)
{
uint16 i、ref、val、TBR;
SARPINCTRL = 0x3002; // GNDON = 1
SARCTRL = 0x0400; // ADCSTRT=0,CHSEL =0 (通道0),MULTICH =0 (正常模式),SINGLE =1

对于(i=0;i<30;i++)
asm (" nop");

//读取通道0上的电压基准
SARCTRL = SARCTRL | 0x8000;// ADCSTART (15)= 1以启动转换
while (SARDATA >> 15);//等待直到 SARDATA (15)=1 (ADCBUSY = 1)
REF = SARDATA & 0x03FF;//将基准电压读入 ref 变量

SARPINCTRL = 0x3000; // GNDON = 0
//读取通道1上的电池电压/8
SARCTRL = 0x1400; // ADCSTRT=0,CHSEL =1 (通道1),MULTICH =0 (正常模式),SINGLE =1
对于(i=0;i<30;i++)
asm (" nop");
SARCTRL = SARCTRL | 0x8000;// ADCSTART (15)= 1以启动转换
while (SARDATA >> 15);//等待直到 SARDATA (15)=1 (ADCBUSY = 1)
Val = SARDATA & 0x03FF;//将电池电压读入 val 变量

TBR = val - ref;
返回 TBR;
} 

有任何提示?

提前感谢

Paolo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    团队将收到通知。 他们将直接在此处发布反馈。

    BR
    Tsvetolin Shulev
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Paolo、

    您是否曾尝试选择 SARPINCTRL:REFAUVDDSEL 以选择 VDD_ANA 作为基准电压(1.3V)?
    基于带隙的基准电压为0.8V 或1V、低于1.3V。 此外、无法从外部测量这些电压以确保其精确、因此我通常建议使用 VDD_ANA 电源作为基准。

    此外、您是否曾试验过 SARPINCTRL:Half、以便在进行转换之前将模拟输入除以2?

    请参阅以下相关帖子:
    e2e.ti.com/.../1707242
    e2e.ti.com/.../1759588

    请参阅《SAR 用户指南》中的电池测量图。

    希望这对您有所帮助、
    标记
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它是正确的标记:

    将 Vdd_ANA 设置为基准电压并测量电池电压、这是可行的!

    非常感谢!

    此致

    Paolo