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.

[参考译文] MSP430FR5972:ADC 2通道

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/585224/msp430fr5972-adc-2-channel

部件号:MSP430FR5972

大家好,

我想使用模数转换器的模拟输入,模数转换器应该在 WFP 9.4 和WFP 9.6 上 中断。 我在 单个渠道工作过。

所以我需要知道这两个通道的GPIO设置以及 这两个通道的ADC寄存器配置。   

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

    这在数据表的表6-30中提供,A12/A14功能是通过设置P9SEL0和P9SEL1寄存器的BIT4和BIT6来选择的。 您可以按照代码示例正确初始化ADC寄存器。

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

    感谢您的回复。
    根据我的理解,请验证A12和A14是否正确

    P9SEL0 || BIT4 + BIT6; //为ADC配置WFP 9.4 和WFP 9.6
    P9SEL1 &=~(BIT4 + BIT6); //为ADC配置WFP 9.4 和WFP 9.6

    REFCTL0 || REFVSEL_0 | REFON; //选择内部参考= 1.2V

    ADC12CTL0 = ADC12SHT0_2 | ADC12ON;
    ADC12CTL1 = ADC12SHP; // ADCCLK = MODOSC;采样计时器
    ADC12CTL2 || ADC12RES_2; // 12位转换结果
    ADC12IER0 |= ADC12IE12; //启用ADC连接完全中断
    ADC12MCTL0 |= ADC12INCH_12 | ADC12VRSEL_1;// A1 ADC输入选择;Vref=1.2V

    while (!(REFCTL0 & REFGENRDY)); //等待参考发生器稳定下来
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,PK U:

    您应该设置P9SEL1位,而不是清除它们。 如果您计划使用ADC12MCTL0,则应使用的中断是ADC12IE0。 请参阅TI提供的ADC代码示例。

    此致,
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你是对的。
    现在我想访问两个不同的ADC信道。 我希望同时看到两个输出,应该一直转换。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    现在,您将要使用重复通道序列模式,再次参考TI代码示例和用户指南,以了解如何实现这一点。

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

    现在我又面临一个问题,我给ADC通道9.4 (A12)提供不同的电源(从1.5 V到3.6 V),但它给出了最大值(4095),当我提供GND时,它给出了0 (零)值。

    最后,它只给出两个值,一个是4095,另一个是0。

    我使用的代码如下:-

    void ADC_ch_A12()

    ADC12MCTL0 |= ADC12INCH_12 | ADC12VRSEL_1; // A12 ADC输入选择;参考电压=1.2V
    P9SEL1 || BIT4; //为ADC配置WFP 9.4
    }

    void adc_init()

    //配置ADC12
    ADC12CTL0 = ADC12SHT0_2 | ADC12ON;
    ADC12CTL1 = ADC12SHP; // ADCCLK = MODOSC;采样计时器
    ADC12CTL2 || ADC12RES_2; // 12位转换结果
    ADC12IER0 |= ADC12IE0; //启用ADC连接完全中断
    }
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是因为您使用ADC12VRSEL_1和REFVSEL_0作为1.2 V的内部参考电压。使用ADC12VRSEL_0来参考AVCC或将内部参考电压增加到2.0 或2.5 V (由REFVSEL控制)。

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