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.

[参考译文] MSP430FR2311:ADC 原始数据至毫伏/微伏代码转换

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/901867/msp430fr2311-adc-raw-data-to-milli-micro-volt-code-conversion

器件型号:MSP430FR2311
主题中讨论的其他器件: MSP430WARE

尊敬的 TI 团队:

我 正在寻找使用 msp430fr2311将 ADC 原始数据转换为毫伏代码转换的示例代码实现。

有什么想法吗?

此致、

Walter

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

    您好、Walter、

    从 ADC 数据转换为等效输入电压时、您需要知道基准电压(VREF)和 ADC 分辨率(n)。 例如、最小 LSB 大小、单位为伏特= VREF /(2^n)= 1.5V /(2^10)= 1.465mV。 请记住、VREF 可能会有所不同(例如1.5V 或 DVCC)、具体取决于器件和/或设置。 此外、对于相同的 ADC 分辨率(n)、较低的 VREF 会导致较低的 LSB 大小、但输入范围较小并限制为 VREF。 查看 使用 MSP430FR58xx/FR59xx/68xx/69xx ADC 进行设计 应用手册中的第2.1.2节。

    您需要的应该是"430m fr231x_ADC10_05.c"代码示例。 您可以在 CCS 中找到它、方法是转到 TI Resource Explorer > Software > MSP430Ware > Devices > MSP430FR2XX_4XX > MSP430FR2311 > Peripheral Examples > Register Level。 您可能需要安装 MSP430Ware 才能将项目导入 CCS 工作区。 我已将其复制到下面以供您参考。

    msp430fr231x_ADC10_05.c

    /*-版权所有-、BSD_EX
    *版权所有(c) 2014、德州仪器(TI)公司
    *保留所有权利。
    *
    *
    只要
    符合以下条件*、允许以源代码和二进制形式重新分发和使用:
    *
    *源代码的重新分发必须保留上述版权
    声明*、此条件列表和以下免责声明。
    *
    ***二进制形式的再发行必须在
    
    *随发行提供的文档和/或其他材料中复制上述版权声明、本条件列表和以下免责声明。
    *
    ***未经
    
    事先书面许可、不得使用德州仪器公司的名称或*其贡献者的名称认可或推广从本软件衍生的产品*。
    *
    *本软件由版权所有者和贡献者"按原样"提供
    *、
    
    不承担任何明示或暗示的保证、包括但不限于*适销性和特定用途适用性的暗示保证*。 在任何情况下、版权所有者或
    *贡献者都不对任何直接、间接、偶然、特殊、
    *模范、 或相应的损害(包括但不限于
    *采购替代产品或服务;丧失使用、数据或利润;
    *或业务中断)、但出于任何责任理论
    、*无论是在合同中、严格责任还是由于
    使用本软件而以任何方式产生的侵权行为(包括疏忽或*其他)
    、*即使已获悉可能会发生此类损坏。
    *
    ***
    *
    * MSP430代码示例免责声明
    *
    * MSP430代码示例是自包含的低级程序
    ,通常*以
    高度*简明的方式演示单个外设功能或器件功能。 为此、代码可能依赖于器件的加电默认
    值*寄存器值和时钟配置等设置、
    并且在组合多个示例中的代码时必须*小心以避免潜在的副作用
    *。 另请参阅 www.ti.com/grace 了解 GUI、并参阅 www.ti.com/msp430ware
    *了解外设配置的 API 函数库方法。
    *
    *--/版权--*
    //*********
    // MSP430FR231x 演示- ADC、LO_Batt、如果 AVcc < 2.50V、则设置 P1.0
    //
    说明:在 A13 (Vref)上进行单个采样、且基准设置为
    // DVCC。 软件置位 ADC10SC 来启动采样和转换
    //- ADC10SC 在 EOC 上被自动清零。 一旦转换完成、
    //下面的等式被用来计算 DVCC =(1023 * 1.5)/ adcResult。
    //如果 DVCC < 2.5V、P1.0置1表示 LO_Batt 条件、否则复位。
    //
    // MSP430FR2311
    // --------
    // /|\| XIN|-
    // || |
    // -|RST XOUT|-
    // | |
    // |A13 (Vref) P1.0|->LED
    //
    Darren Lu
    // Texas Instruments Inc.
    // 2015年7月
    //使用 IAR 嵌入式工作平台 v6.30和 Code Composer Studio v6.1构建
    //*********
    #include 
    
    unsigned int adcResult; //临时存储 ADC 值
    //从 ADCMEM0
    int main (void)
    {读取
    volatile unsigned long dvccValue; //计算出的 DVCC 值
    
    WDTCTL = WDTPW | WDTHOLD; //停止 WDT
    
    P1DIR |= BIT0; //将 P1.0设置为输出方向
    
    //禁用 GPIO 上电默认高阻抗模式以激活
    //先前配置的端口设置
    PM5CTL0 &=~LOCKLPM5;
    
    //配置 ADC10
    ADCCTL0 &=~ADCENC; //禁用 ADC
    ADCCTL0 = ADCSHT_2 | ADCON; // ADCON、S&H=16 ADC 时钟
    ADCCTL1 = ADCSHP; // ADCCLK = MODOSC;采样定时器
    ADCCTL2 = ADCRES; // 10位转换结果
    ADCIE = ADCIE0; //启用 ADC 转换完成中断
    ADCMCTL0 = ADCINCH_13 | ADCSREF_0; // A13 ADC 输入选择= 1.5V 基准
    // Vref = DVCC
    //配置 PMM 中的参考模块
    PMMCTL0_H = PMMPW_H; //解锁 PMM 寄存器
    PMMCTL2 |= INTREFEN; //启用内部基准
    while (!(PMMCTL2 & REFGENRDY)); //轮询直至内部基准稳定
    
    while (1)
    {
    ADCCTL0 |= ADCENC | ADCSC; //采样和转换开始
    _bis_SR_register (LPM0_bits | GIE);//输入 LPM0、ADC_ISR 将强制退出
    __no_operation(); //仅用于调试
    
    //要计算 DVCC、使用以下公式
    // DVCC =(1023 * 1.5)/ adcResult
    //以下公式被修改为仅使用整数
    //使用浮点。 所有结果都需要除以100才能得到
    //最终值。
    // DVCC =(1023 * 150)/ adcResult
    dvccValue =(unsigned long) 1023 *(unsigned long) 150)/(unsigned long)(adcResult);
    
    if (dvccValue < 250) // DVCC < 2.50V?
    P1OUT |= BIT0; //将 P1.0 LED 设置为打开
    其他
    P1OUT &=~BIT0; //清除 P1.0 LED 熄灭
    }
    }
    
    // ADC 中断服务例程
    #if defined (__TI_Compiler_version__)|| defined (__IAR_systems_ICC__)
    #pragma vector=adc_vector
    __interrupt void adc_isr (void)
    #elif defined (__GNU__)
    void __attribute__((interrupt (adc_vector))))) adc_isr
    #else error
    编译器#void (void)!
    #endif
    {
    switch (__evo_in_range (ADCIV、ADCIV_ADCIFG))
    {
    案例 ADCIV_NONE:
    中断;
    ADCIV_ADCOVIFG 案例:
    中断;
    案例 ADCIV_ADCTOVIFG:
    中断;
    ADCIV_ADCHIIFG 案例:
    中断;
    ADCIV_ADCLOIFG 案例:
    中断;
    ADCIV_ADCINIFG 案例:
    中断;
    ADCIV_ADCIFG 案例:
    adcResult = ADCMEM0; //读取 ADC 存储器
    _BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);//从 LPM 退出
    中断;
    默认值:
    中断;
    }
    } 

    此致、

    James

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

    尊敬的 James:

    这正是我所需要的、因为我尝试检测低电池电量。  

    如果说、我不会使用1.5基准、而只使用 DVCC 作为基准。 如果我测量 DVCC、它是否仍能工作、但在本例中它也是基准电压?

    此致、

    Walter  

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

    您好 Walter:

      如果您要监控电池电压、则需要使用内部1.5V 基准。 由于电池系统 DVCC 是电池电压、因此 DVCC 将随着 时间的推移而衰减。

      此致;

      胡国兴

      

     

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

    您好、Marshall、  

    我认为它可以使用使用使用 AD13的1.5V 基准电压工作。

    我想像下面那样了解基准趋稳的延迟。 我 在数据表或用户指南中找不到。

    //配置引用
    PMMCTL0_H = PMMPW_H;//解锁 PMM 寄存器
    PMMCTL2 |= INTREFEN;//启用内部基准
    _DELAY_CYCLES (400);//基准趋稳延迟??

    它们是如何获得最佳值的。

    此致、

    Walter

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

    您好、Walter、

    数据表中应提供基准稳定时间。 然后、根据您的 CPU 时钟速度、您可以调整周期数以实现该稳定时间延迟。

    delay_cycles ()的工作方式

    此致、

    James

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

    大家好、

    我只讨论了在 msp430fr2311器件中达到稳定所需的1.5V 基准的最佳值。

    我无法在规格中找到。

    此致、

    Walter

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

    您好、Walter、

    根据 《MSP430FR4xx 和 MSP430FR2xx 系列用户指南》中的第21.2.3.1节"内部基准低功耗特性"、稳定时间小于或等于30us。

    此致、

    James

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

    如果您有任何其他问题、请将其发布在新主题中。 我想我们已经解决了您最初的问题。 谢谢。

    此致、

    James