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.

[参考译文] MSP430FR2111:ADC -启用外部1.2V 基准

Guru**** 2616675 points

Other Parts Discussed in Thread: MSP430FR2111

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/671175/msp430fr2111-adc---enable-external-1-2-v-reference

器件型号:MSP430FR2111

大家好、  

我不熟悉 MSP430FR2111系列 MCU、我尝试通过使用 MSP430FR2111IPW16R 引脚1.6 (A6)上的 NTC 分压器对模拟输入进行采样来实现简单的 A/D。 我有几个问题:

如何在软件中启用1.2V 的内部基准(ADC 的基准)进行缓冲并输出到引脚 P1.7?  

SLAU45G 提到在 PMMCTL2寄存器中设置 EXTREFEN=1来启用外部1.2V、但也讨论解锁 PMM 寄存器的密码?

有人可以帮助我在 CCS 中提供确切的命令吗?  

我是在努力做到这一点的!

PMMCTL0 |= 0xA5;  //解锁对 PMM 寄存器的访问。
PMMCTL2 |= 0x02;  //写入 PMMCTL2_L 位1以启用外部基准。

void initadc (void)

//初始化 ADC
PMMCTL0 |= 0xA5;
PMMCTL2 |= 0x02;

ADCCTL0 |= ADCMSC_1 | ADCON;//自动执行转换
// ADC 打开

ADCCTL1 |= ADCSHP_1 | ADCSSEL_1 | ADCCONSEQ_2;//使用输入信号
// ADC 时钟源为 ACLK
// ADC 转换模式=重复单通道

ADCMCTL0 |= ADCINCH_6;//输入通道设置为 A3:JMS -将 A3更新为 A0:ADCINCH_3更新为 ADCINCH_0
ADCIE |= ADCIE0;//高于阈值中断被启用

ADCCTL0 |= ADCSC | ADCENC;//启用并开始转换

我们非常感谢您的任何输入。

谢谢、

Ganesan M.

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

    您好、Ganesan、

    恐怕您将 PMM 密码写入了 PMMCTL0的错误位。 如 UG 中所述、PMMPW 为 PMMCTL0的第8-15位。 但在代码中、您只需将0xA5写入 PMMCTL0的位0-7。 这应该是您无法启用1.2V 基准的根本原因。

    您可以将以下代码作为代码示例。

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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Wei 的快速回复。 这解决了我的问题。

    最棒的
    GaN