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.

[参考译文] RTOS/CC2640:将正确的输入引脚配置到 ADC 以将电池电压数字化

Guru**** 2595800 points
Other Parts Discussed in Thread: CC2650, CC2640

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/608299/rtos-cc2640-configure-the-correct-input-pin-to-the-adc-to-digitize-battery-voltage

器件型号:CC2640
Thread 中讨论的其他器件:CC2650

工具/软件:TI-RTOS

您好、E2E 学员、

我目前正在研发具有 CC2640F128的定制板。 我们的板具有电池监控器引脚(DIO_11)、原理图如下所示、

根据我的原理图、如果我希望我的最大电池电量= 3.7、我的最小电池电量= 3、那么我的 BATT_MON 的范围应该介于1.08至1.33之间。

我正在尝试在 adcsingl机制 项目中使用 ADC 、但我不理解如何配置 ADCCC26XX_HWAttrs、

const ADCCC26XX_HWAttrs adcCC26xxHWAttrs[CC2650_LAUNCHXL_ADCCOUNT]={
{
.adcDIO = PIN_Unassigned、
.adcCompBInput = ADC_COMPB_IN_DCOUPL、
.refSource = ADCCC26XX_fixed_reference、
.samplingDuration = ADCCC26XX_SAMPLING_DURAY_2P7_US、
.inputScalingEnabled = true、
triggerSource = ADCCC26XX_TRIGGER_MANUAL
}、
{
.adcDIO = IOID_19、
.adcCompBInput = ADC_COMPB_IN_VSS、
.refSource = ADCCC26XX_fixed_reference、
.samplingDuration = ADCCC26XX_SAMPLING_DURAY_2P7_US、
.inputScalingEnabled = true、
triggerSource = ADCCC26XX_TRIGGER_MANUAL
}、
{
.adcDIO = IOID_19、
.adcCompBInput = ADC_COMPB_IN_VDDS、
.refSource = ADCCC26XX_fixed_reference、
.samplingDuration = ADCCC26XX_SAMPLING_DURAY_2P7_US、
.inputScalingEnabled = true、
triggerSource = ADCCC26XX_TRIGGER_MANUAL
}
}; 

#define Board_ADC0 CC2650_LAUNCHXL_ADCVSS
#define Board_ADC1 CC2650_LAUNCHXL_ADCVDDS 

如果我想将 BATT_MON 引脚(引脚 IOID_19)上的电压数字化、应该如何修改上述代码? Board_ADC0当前为我提供 的值为3、Board_ADC1为我提供的值为2771、这不是我需要的有效数字。

非常感谢、

Henry

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

    帮您忙!

    谢谢、

    Henry

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

    实际上、如果您应该通过分压器看到的电压为2.8V (使用万用表进行检查) 4.2 [参考]/ 4096 [分辨率]= 1V/位、则您得到的值似乎是合理的、使用 ADC 代码、大约为2.8V。 (检查我的数学)

    无论采用哪种方法、为何不只使用 cc2650中内置的电池监控器? 而不是使用单独的 ADC 通道?

    如果您担心电源问题、实际上可以从传感器控制器运行电池监控器

    此致、
    反叛分子
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Rebel,

    非常感谢您的回答。 从 CS 背景来看、嵌入式软件中的所有内容对我来说都是全新的。

    我这么做的原因(可能是我错的)是、我们的电路板由3.7V 电池供电、通过分压器、VCC 将降至3V。 我尝试使用以下代码来检查内置电池监控器的电压。

    AONBatMonEnable();
    
    uint32_t val = 0;
    val = AONBatMonBatteryVoltageGet ();
    val =(val * 125)>> 5; 

    我从充满电的3.7V 电池获得的值为3V。

    我需要的是每 X 分钟检查一次电池、并在电池电压低至3.1V 时让系统进入睡眠/待机模式。 如果使用上述代码、我将无法检查这种情况。  

    此外、我不理解您的数学运算。 我想我要数字化的引脚 DIO_11的信号值将计算为:

    BATT_MON = V_BATT x [ R14 /(R14+R12)]

    因此、当我的电池电压范围为3.7V (完全充电时)至3.1V (我想要检测的最小电压)时、BATT_MON 的范围应该介于1.12V 至1.33V 之间。 是这样吗?

    再次感谢、

    Henry

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

    你好,Rebel,

    换言之、如果您的器件直接由电池供电、则应使用内部电池监控器、而无需使用 ADC。  但我正在运行一个稳压器,所以当实际电池电压变化时 VDDS 是恒定的(3.7V 低至3.1V <--我想让系统在此时处于待机/睡眠状态)。 这就是我需要将引脚 IOID_11 (BATT_MON)的 ADC 的电池电压电平数字化的原因。

    顺便说一下、是否有人知道为什么我在此帖子中的回复必须得到论坛版主的批准才能发布? 我之前给你的答复没有显示在这里!

    谢谢、

    Henry  

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

    OPS、我之前对您的回复似乎已被删除? IDK、我将再次写入它。

    你好,Rebel,

    非常感谢您的回答。 从计算机科学的背景来看、嵌入式软件中的所有内容对我来说都是全新的。

    我这么做的原因(可能是我错的)是、我们的电路板由3.7V 电池供电、通过分压器、VCC 将降至恒定3V。 我尝试使用以下代码来检查内置电池监控器的电压。

    AONBatMonEnable();
    
    uint32_t val = 0;
    val = AONBatMonBatteryVoltageGet ();
    val =(val * 125)>> 5; 

    我从充满电的3.7V 电池获得的值为3V。

    我需要的是每 X 分钟检查一次电池、并在电池电压低至3.1V 时让系统进入睡眠/待机模式。 如果使用上述代码、我将无法检查这种情况。

    此外、我不理解您的数学运算。 我想我要数字化的引脚 DIO_11的信号值将计算为:

    • BATT_MON = V_BATT x [ R14 /(R14+R12)]

    因此、当我的电池电压范围为3.7V (完全充电时)至3.1V (我想要检测的最小电压)时、BATT_MON 的范围应该介于1.12V 至1.33V 之间。 是这样吗?

    再次感谢、

    Henry

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

    只有 DIO23至 DIO30支持模拟功能(采用7x7封装)。 使用其他 Dios 将不起作用。

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

    感谢您的回复 Fredrik、

    我明白你的观点。 但是、正如我在这里的上一篇文章中讨论的 、我们的定制板具有不同的引脚映射。 因此、在我更改了与原理图匹配的引脚 ID 之前、它与在 CC2640/CC2650上运行的项目不兼容、我认为这可能与我的 BATT_MON 引脚的情况相同。

    谢谢、

    Henry

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

    内部电池监控器测量 VDDS 电压。

    ADC 只能读取某些 Dios 上的电压。 在7x7封装中、这些是 DIO23 - DIO30。 无法重新配置。

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

    感谢您对 Fredrik 的解释、这是有道理的。 不过、我不明白将 BATT_MON - DIO11置于定制板上的目的是什么。

    我不知道电路板所需的最小电压是多少(我将对此进行仔细检查)、 但是、如果电源电压低于3V 时无法运行、则测量 VDDS 的点毫无意义(这也是我在电池电压降至3.1V 时停止软件的原因)、您对此情况是否有任何建议?

    再次感谢您抽出宝贵的时间为您提供帮助、

    Henry

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于您使用的是稳压器、因此使用电池监控器毫无意义、正如您所说的那样。

    我无法告诉您为什么在您的电路板上使用 DIO11、但它确实需要移至支持模拟的引脚才能连接到 ADC。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢 Fredrik。 我建议我们的团队将其移至下一版本电路板中的 DIO_26 - DIO_30。
    我是否可以问、如果它被移动到 DIO_30、我将如何读取该引脚上的电池电压?

    谢谢、
    Henry