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.

[参考译文] CCS/MSP430F6736:内部 ADC 转换结果

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/715696/ccs-msp430f6736-internal-adc-conversion-results

器件型号:MSP430F6736

工具/软件:Code Composer Studio

大家好、

我尝试使用内部 ADC。 我使用以下示例代码:  

#include 

unsigned int adc_result;

int main (void)
{
WDTCTL = WDTPW | WDTHOLD; //停止 WDT

//为 A0、P1.0输出设置 P1.2
P1SEL |= BIT2; //将 P1.2设置为非 IO
_disable_interrupt (); //禁用中断;端口映射配置
PMAPKEYID = PMAPKEY; //启用访问端口映射寄存器
P1MAP2 = PM_ANALOG; //启用 A0
PMAPKEYID = 0; //禁用访问端口映射寄存器
_enable_interrupt (); //重新启用所有中断
P1DIR |= BIT0; //将 P1.0设置为输出方向
P1OUT &=~BIT0; //清除 P1.0

//设置 ADC10
ADC10CTL0 |= ADC10SHT_2 | ADC10ON; // S&H=16 ADC CLKS,启用 ADC10
ADC10CTL1 |= ADC10SHP; // ADCCLK = MODOSC;采样定时器
ADC10CTL2 |= ADC10RES; // 10位转换结果
ADC10MCTL0 |= ADC10INCH_0; // A0 ADC 输入选择;Vref=AVCC
ADC10IE |= ADC10IE0; //启用 ADC conv 完整中断

while (1)
{
_delay_cycles (5000);

ADC10CTL0 |= ADC10ENC | ADC10SC; //采样和转换开始

_bis_SR_register (LPM0_bits | GIE); //输入 LPM0,带中断
__no_operation(); //仅用于调试

如果(ADC_RESULT < 0x1FF)
{
P1OUT &=~BIT0; //清除 P1.0 LED 熄灭
}
其他
{
P1OUT |= BIT0; //将 P1.0 LED 设置为打开
}
void //


ADC10中断服务例程
#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=ADC10_Vector
__interrupt void ADC10_ISR (void)
#Elif defined (__GCUN__)
__attribute__(interrupt (interrupt (ADC10_ISR)#vector (void)

#error!ADC10_ISR (void)#vector (void)#vector (void)#pru_elt!
#endif
{
开关(_偶数_IN_RANGE (ADC10IV、12))
{
ADC10IV_NONE 案例:中断; //无中断
案例 ADC10IV_ADC10OVIFG:中断; //转换结果溢出
案例 ADC10IV_ADC10TOVIFG:中断; //转换时间溢出
案例 ADC10IV_ADC10HIIFG:中断; // ADC10HI
案例 ADC10IV_ADC10LOIFG:中断; // ADC10LO
案例 ADC10IV_ADC10INIFG:中断; // ADC10IN
ADC10IV_ADC10IFG 案例: // ADC10
ADC_Result = ADC10MEM0; //存储 ADC10通道0结果
_BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);//返回时退出 LPM0
中断;
默认值:break;
}
}

我尝试了这个示例、给出了一个1V 的模拟输入。 根据代码、LED 不应亮起、但在这种情况下、LED 闪烁。

随着我增大模拟输入、闪烁速度会快得多。  

我将通过电源提供模拟输入。

我面临的问题是什么?

我还需要连接外部晶体振荡器吗? (用于 XIN)

我甚至尝试在屏幕上打印 ADC 结果、但它打印的是波动值。  

可以帮我解决这个问题吗?

谢谢、

评估

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

    您能否提供以下详细信息:
    您的 AVCC 是什么? 您能否确认您具有稳定的1V 输入?
    您能否提供原理图来显示您的 PCB 连接?
    确保设置采样时间、以便电容器可以通过施加到输入端的外部电压进行完全充电。

    此外、请重新查看器件用户指南(SLAU208)以了解 ADC10的正确操作。

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

    我解决了这个问题。 我没有将电源的负极连接到 MSPFET 的接地端、因此它显示了不同的值。

    感谢你的帮助。
    感谢您的支持。