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.

[参考译文] MSP430f5338:RTC 超级电容器充电放电问题

Guru**** 2519050 points
Other Parts Discussed in Thread: MSP430F5338, MSP430F6638

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/648348/msp430f5338-rtc-supercap-charging-discharging-issue

器件型号:MSP430F5338
主题中讨论的其他器件: MSP430F6638

您好!

我们正在尝试使用超级电容器作为 VBAT 引脚上 RTC 的备份。 在 MSP430F5338中、A12通道(在 ADC 中)专门分配用于监控超级电容器电压。 在进行 VBAT 测量时、ADC (A12)的电压源是多少?需要配置哪些寄存器才能使用 A12通道进行电池测量? (我们在 BAKCTL 寄存器中启用了 VBAT 测量寄存器)

如果不从外部将超级电容器连接到 A12、则不会进行超级电容器充电。  

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

    以下 E2E 帖子应可帮助您解决问题。 就像 MSP430F6638一样、MSP430F5338在 ADC12通道12上进行 VBAT 测量。 ADC 的电压源是 AVCC、在大多数应用中、该电压源连接到 DVCC。 连接到 ADC12通道12不会为超级电容器充电、只会在电压的~1/3处测量其电压电平。

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

    您好、JH、

    感谢您的回答。 我们是否需要设置任何寄存器来单独将 AVCC 连接到 A12或 BAKADC 设置就足够了?

    此外、我们还面临仅在 VCC 电源下工作的 RTC_b 模块等问题。 无法在自动切换模式下切换至 VBAT。 我们正在正确配置 BBS 寄存器。 我们需要考虑其他任何寄存器吗? 如果需要、也请为此建议 SVSH 设置。 我们使用的是3.3V VCC、超级电容器可以充电至3.3V

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

    我必须研究这一点、因为我目前看不到这样做的好例子。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    下面是一些用于配置 ADC 以测量 VBAT 的示例代码。

    // MSP430F5338
    // --------
    // /|\| |
    // || |超级电容器
    // -|RST VBAT |--|-+
    // | | |
    // | | v
    ////
    使用 Code Composer Studio v7.3构建
    //*********
    #include 
    
    #define VRP 3.3
    #define VRN 0
    
    int main (void)
    {
    WDTCTL = WDTPW | WDTHOLD; //停止看门狗定时器
    
    BAKCTL = BAKADC; // Vbat ADC 测量被启用
    
    ADC12CTL0 = ADC12SHT12 | ADC12ON; // 16个 ADC12CLK 周期的采样保持时间
    //由 ADC12SC 触发
    //打开 ADC12
    
    ADC12CTL1 = ADC12SHP; //使用采样定时器
    
    //初始化输入通道 A12到 ADC12MEM0
    ADC12MCTL0 = ADC12INCH_12的转换; // VR+=AVcc 和 VR-=AVss
    //输入通道 A12
    
    ADC12IE = ADC12IE0; //为 ADC12MEM0
    ADC12CTL0启用中断|= ADC12ENC; //启用转换
    
    while (1)
    {
    ADC12CTL0 |= ADC12SC; //开始转换
    
    _bis_SR_register (LPM0_bits + GIE);// LPM0、ADC12_ISR 将强制退出
    __no_operation(); //对于调试
    器}
    #if
    
    defined (__TI_Compiler_version__)|| defined (__IAR_systems_ICC__)
    #pragma vector = ADC12_vector
    __interrupt void ADC12_ISR (void)
    #elif defined (__GNU__)
    void __attribute__((interrupt (ADC12_vector)#if
    
    Compiler (void)(void))#define_ISR (void)错误!
    #endif
    {
    volatile float VBAT;
    
    switch (_even_in_range (ADC12IV、36))
    {
    case 0:break; //向量0:无中断
    情况2:中断; //向量2:ADC 溢出
    情况4:中断; //向量4:ADC 时序溢出
    情况6: //向量6:ADC12IFG0
    VBAT = 3*ADC12MEM0*(VRP - VRN)/4095 + VRN;
    _BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);//退出活动 CPU
    中断;
    案例8:中断; //向量8:ADC12IFG1
    大小写10:break; //向量10:ADC12IFG2
    大小写12:break; //向量12:ADC12IFG3
    case 14:break; //向量14:ADC12IFG4
    情况16:中断; //向量16:ADC12IFG5
    情况18:中断; //向量18:ADC12IFG6
    案例20:中断; //向量20:ADC12IFG7
    case 22:break; //向量22:ADC12IFG8
    case 24:break; //向量24:ADC12IFG9
    大小写26:break; //向量26:ADC12IFG10
    case 28:break; //向量28:ADC12IFG11
    case 30:break; //向量30:ADC12IFG12
    大小写32:break; //向量32:ADC12IFG13
    case 34:break; //向量34:ADC12IFG14
    case 36:break; //向量34:ADC12IFG15
    默认值:break;
    }
    } 

    您是否有机会查看描述如何将 RTC_B 模块与电池备用电源配合使用的应用报告? 可 在此处找到。建议使用驱动程序库来设置器件 Vcore 电平、该电平也将设置适当的 SVSH 值。 本文档还提供了使用 RTC_B 模块的示例代码。

    此致、  

    Ryan