1

我正在尝试使用 TI 的 MSP430 测量功率器件的电压。电压源连接到目标板上的A1(即P4)和地(即P1)。

以下是相关代码:

ADC10CTL1 = INCH_1 + CONSEQ_0; //A1, single measurement
ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE + ADC10SR; //same as sample temperature sensor code
ADC10CTL1 &= ~ADC10DF; //setting binary format for ADC10MEM
ADC10CTL0 |= ENC + ADC10SC; //Sampling and conversion start
 __bis_SR_register(CPUOFF + GIE);        // LPM0 with interrupts enabled
//read result

我有以下问题:

  1. 我在 AP 上打印 ADC10MEM 的内容,我看到 ADC10MEM 的前 6 位都是 1,而不是 0。我无法得到相同的原因。

  2. 如果我只考虑 ADC10MEM 的最后 10 位,我可以看到该值随着电压的上升和下降而增加和减少,但如果我使用公式获得 Vin:

N = 1023 * ((Vin - VR- ) / (VR+ - VR-)),我没有得到正确的值。(VR+ = 1.5V,VR- = 0V,电池为目标板供电) N:ADC10MEM 中的值,十进制

我无法找到哪里出错了。我是否必须启用模拟输入引脚(ADC10AE0 |= 0x10),并设置方向(P4DIR |= 0x01)?

谢谢!

4

1 回答 1

0

TI 在此处为这些 MSP430 提供了很好的示例代码:

http://www.ti.com/litv/zip/slac123d

其中之一还读取电压,您应该使用它来与您正在做的事情进行比较。我不记得 ADC10DF,但这似乎是一件可疑的事情(因为你的错误与数据输出有关)。

另外,您说您阅读了结果。如果您等待的时间不够长,则结果无效。您没有显示任何中断例程,因此可能发生了一些事情。

于 2012-11-29T20:27:14.920 回答