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.

请教MSP430F42516位AD的问题

Other Parts Discussed in Thread: MSP430F425, MSP430F478

使用425十六位AD采样,用A0口,A0-接地,参照例程,

ORG               0c000h                     ; Program Start
;------------------------------------------------------------------------------
RESET          mov.w         #400h,SP                ; Initialize stackpointer
StopWDT      mov.w         #WDTPW+WDTHOLD,&WDTCTL ; Stop WDT
SetupFLL     bis.b            #XCAP14PF,&FLL_CTL0 ; Configure load caps
mov.w           #10000,R15 ;
Xtal_Wait      dec.w           R15 ;                                 Delay for 32 kHz crystal to
                       jnz               Xtal_Wait                          ; stabilize
SetupSD16  mov.w        #SD16REFON+SD16SSEL0,&SD16CTL ; 1.2V ref, SMCLK
                       bis.w          #SD16SNGL,&SD16CCTL0 ; Single conversion
                       mov.w        #03600h,R15 ; Delay needed for 1.2V ref startup
L$1               dec.w         R15 ;
                      jnz              L$1 ;
Mainloop     bis.w          #SD16SC,&SD16CCTL0 ; Start conversion
testIFG         bit.w          #SD16IFG,&SD16CCTL0 ; Is conversion done?
                      jz                testIFG ; No, test again
                      mov.w      &SD16MEM0,R12 ; Yes, save conversion result

                     jmp            Mainloop ;

可是读出来的数和理论算出来的值不符,问题在哪,请赐教。另传感器使用1.2V基准供电,例如输入0.5V,AD值应为多少

  • 楼主你好!

    1、关于MCU以及MCU相关的问题,建议到MCU版块提问;

    2、请使用C语言进行编程,更多例程请使用MSP430ware,参考其中MSP430F425例程:

    #include <msp430.h>

    unsigned int results;

    int main(void)
    {
    volatile unsigned int i; // Use volatile to prevent removal
    // by compiler optimization

    WDTCTL = WDTPW + WDTHOLD; // Stop WDT
    FLL_CTL0 |= XCAP14PF; // Configure load caps
    for (i = 0; i < 10000; i++); // Delay for 32 kHz crystal to
    // stabilize

    SD16CTL = SD16REFON+SD16SSEL0; // 1.2V ref, SMCLK
    SD16CCTL2 |= SD16SNGL; // Single conv
    for (i = 0; i < 0x3600; i++); // Delay for 1.2V ref startup

    while (1)
    {
    SD16CCTL2 |= SD16SC; // Set bit to start conversion
    while ((SD16CCTL2 & SD16IFG)==0); // Poll interrupt flag for CH2
    results = SD16MEM2; // Save CH2 results (clears IFG)
    _NOP(); // SET BREAKPOINT HERE
    }
    }

    3、AD值取决于数据格式方式,是offset还是bipolar,更多请参考MSP430X4XX famaly user guide

  • 帮你把问题转到MCU版块,这边的工程师应该更了解。

  • BEIER YANG,

    关于SD16MEMx的值和输入的对应关系,可以参考user guide中的下图,另外还需考虑是将SD16用作差分输入还是单端输入。当选择1.2V作为参考源时,用作单端输入,可测0~1.2V/GAIN;用作差分输入时,可测-0.6V/GAIN~0.6V/GAIN

  • 您好,我想问一下,对于MSP430F478的的SD16_A,外部参考Vref可否直接接到Vcc(3.3V),如果可以的话,它的可检测的输入电压信号范围是多少?0~3.3V还是0~1.65V呢?如果我要检测的信号是5V,那么需要如何处理呢?谢谢~~