使用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值应为多少
Bruce Wei:
楼主你好!
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
Coffee Ge73:
帮你把问题转到MCU版块,这边的工程师应该更了解。
Lina Lian:
BEIER YANG,
关于SD16MEMx的值和输入的对应关系,可以参考user guide中的下图,另外还需考虑是将SD16用作差分输入还是单端输入。当选择1.2V作为参考源时,用作单端输入,可测0~1.2V/GAIN;用作差分输入时,可测-0.6V/GAIN~0.6V/GAIN
Wei Carl:
回复 Lina Lian:
您好,我想问一下,对于MSP430F478的的SD16_A,外部参考Vref可否直接接到Vcc(3.3V),如果可以的话,它的可检测的输入电压信号范围是多少?0~3.3V还是0~1.65V呢?如果我要检测的信号是5V,那么需要如何处理呢?谢谢~~