在 2号和3号管脚接了一个传感器,如何使用I+,I-进行测量 ,如何配置
step by step:
楼主,
你好,I+和I-接的就是内部的SD16 ADC的差分输入,就跟平时使用SD16 ADC一样使用,范例代码可以参考430ware里面的代码。
China jh:
回复 step by step:
SD16CTL = SD16REFON+SD16SSEL0; // 1.2V ref, SMCLK for (i = 0; i < 10000; i++); // Delay /////////////////
// SD16CCTL0 |= SD16GRP + SD16OSR_256 + SD16IE ;//控制寄存器0 组 连续模式 // SD16CCTL0 |= SD16SC;//开始转换信号 //SD16INCTL0 |= SD16INCH0 + SD16GAIN_1 + SD16INTDLY_0 ;//输入控制器0 选择输入通道0 //SD16CCTL0 |= SD16SC;
SD16INCTL1 = SD16INCH_0; SD16CCTL1|= SD16SNGL +SD16IE; SD16CCTL1 |= SD16SC;
我是这么配置的,传感器有信号时,SD16MEM0 SD16MEM1 得到的值不变,没有信号的时候也是一样的,我是单步运行的,请帮我看看是我的设置出错了吗
step by step:
回复 China jh:
楼主,
请参考下面的代码,这是操作SD16的范例代码,连续ADC转换,而且你好像只使用了一个SD16吧,
MSP430F427// —————–// /|\| XIN|-// | | | 32kHz// –|RST XOUT|-// | |// Vin+ –>|A2.0+ |// Vin- –>|A2.0- |// | |// | VREF |—+// | | |// | | -+- 100nF// | | -+-// | | |// | AVss |—+// | |//// H. Grewal// Texas Instruments Inc.// Feb 2005// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.21A//*****************************************************************************#include <msp430.h>
#define Num_of_Results 8
/* Arrays to store SD16 conversion results *//* NOTE: arrays need to be global to *//* prevent removal by compiler */static unsigned int results[Num_of_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 SD16INCTL2 |= SD16INTDLY0; // Interrupt on 3rd sample SD16CCTL2 |= SD16IE ; // Enable interrupt for (i = 0; i < 0x3600; i++); // Delay for 1.2V ref startup
_EINT(); // Enable general interrupts
SD16CCTL2 |= SD16SC; // Set bit to start conversion _BIS_SR(LPM0_bits); // Enter LPM0
}
#pragma vector=SD16_VECTOR__interrupt void SD16ISR(void){ static unsigned int index = 0;
switch (SD16IV) { case 2: // SD16MEM Overflow break; case 4: // SD16MEM0 IFG break; case 6: // SD16MEM1 IFG break; case 8: // SD16MEM2 IFG results[index] = SD16MEM2; // Save CH2 results (clears IFG)
if (++index == Num_of_Results) { index = 0; // SET BREAKPOINT HERE }
break; }}
China jh:
回复 step by step:
step by step 你好!
我用的这个芯片 引脚功能 如上图,只有一个V- V+通道和一个I+ I-通道,现在对I+ I-这个通道的操作不很理解,我也用例程改过,我之前发的就是用例程改的
step by step:
回复 China jh:
你好,
I+和I-应该对应到的是SD16的通道0,所以配置的时候应该配置通道0对应的寄存器,其他的应该没有什么问题,就照的范例代码改就可以了。
China jh:
回复 step by step:
step by step 你好!我之前用官方的例程改了,单步运行的时候 V1+ V1-
测得的值如图显示,很不稳定,在有稳定的电压测量的时候的值不是一个稳定的值,在一会是 0 一会是32756 一会是65535,没有电压源测量的时候也是一样的
step by step:
回复 China jh:
楼主,
你用的哪个参考电压源?
China jh:
回复 step by step:
step by step 你好 ,使用的是内部的参考电压 1.2V
step by step:
回复 China jh:
楼主,
如果方便的话能不能把你的代码发出来?
kqian0327:
你好,
你前端的传感器是用的什么传感器?
和MCU的连接是怎么样子的,可以把这一块的电路贴出来吗?
另外,你PCB的走线的线路图可以也一起贴出来吗?