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.

[参考译文] MSP430FR5994:ADC 输出值的转换

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1123643/msp430fr5994-conversion-of-the-adc-output-values

器件型号:MSP430FR5994

您好!  

我正在从 ADC12MEM0读取 ADC 输出、但我对转换为电压值感到困惑。 我浏览了数据表、结果是电压值奇怪。 下面是我使用的配置-  

ADC12CTL0 = ADC12SHT0_0 | ADC12ON;  

ADC12CTL1 = ADC12SHP | ADC12SHS_7 | ADC12CONSEQ_2;  

ADC12CTL2 |= ADC12RES_2;

ADC12MCTL0 = ADC12INCH_2 |ADC12VRSEL_1 | ADC12EOS; // VR+= VREF 缓冲、VR-= AVSS  

ADC12IER0 |= ADC12IE0;

ADC12CTL0 |= ADC12ENC | ADC12SC;

从上面我知道我需要将十六进制值转换为二进制补码、并将其与 Vref 相乘、然后除以4096。 (我不确定是否绝对需要二进制补码。) 但我应该为 Vref 使用什么值?  例如、当2.5V 的恒定电压输入连接到 ADC 输入通道时、我从 ADC12MEM0寄存器中读取0x0034。 是否有人可以通过这个0x0034十六进制值计算原始2.5V 电压?  

我还有一个问题是、ADC 可以读取的最大电压是多少? 当我将3.3V 或5V 连接到 ADC 输入通道时、我在这两种情况下都看到0x0FFFh。  

谢谢!

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

    我看不到您打开(内部) VREF 发生器的位置。 我希望看到一些代码类似于:

        while(REFCTL0 & REFGENBUSY);            // If ref generator busy, WAIT
        REFCTL0 |= REFVSEL_0 | REFON;           // Select internal ref = 1.2V
        while(!(REFCTL0 & REFGENRDY));          // Wait for reference generator

    其中 REFVSEL=0将基准电压设置为1.2V。 要将其设置为2.5V、请使用 REFVSEL_2 [参考用户指南(SLAU367P)表33-2]。

    我从 TI 示例 msp430FR599x_ADC12_02.c 粘贴了这些代码行、该示例可能还有一些其他有用的东西:

    https://dev.ti.com/tirex/explore/node?node=APqQSGVq.NPM9-hGt2OteA__IOGqZri__LATEST

    未经请求:不要对 ADC 引脚施加5V 电压、因为这可能会损坏芯片。

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

    感谢您指出缺失的逻辑 Bruce! 我添加了上述逻辑、但仍然看到与 ADC 相同的输出值。  

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

    与尝试猜测小代码段中的错误相比、使用我指出的示例(只需复制/粘贴到新项目 main.c 中)并从该示例向后工作以实现所需操作可能会更快。

    [编辑:从示例中的注释中可能不明显的内容:(0x6B4/4096)*1.2V=~0.5V]

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

    您好!

    您可以在此链接中找到代码示例。 https://dev.ti.com/tirex/explore/node?node=AAeWpvsnHIgaFbdPJYpWOg__IOGqZri__LATEST

    此致、

    现金 Hao

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

    您是否能够运行该示例?

    如果不是、这可能指向您的硬件或测试过程中的某个内容。

    如果是、您可以检查 TA4配置(SHS=7)、因为如果该配置未运行、您将仅获得一个样本(曾经)。

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

    您好、Bruce、  

    是的。 创建一个以示例为基础的新项目并添加我的逻辑有助于实现。 我现在能够读取相关值。 感谢您的帮助!