我使用 msp430fg6626、因为 ADC 模块是具有内部基准电压(Vref=1.16V)的 ctsd16、其中差分通道的输入电压范围为-VR/增益至+VR/增益。
因此、根据我对偏移二进 制的理解、当增益= 1时、最小电压-Vfsr 为-VR/GAIN=-1.16V/1=-1.16V、由此得出 CTSD16MEM0=0x0000、最大电压+Vfsr 为+VR/GAIN=1.16V/1=1.16V、从而得出 CTSD16MEM0=0xFFFF。
但是、对于 -0.6V、我得到 CTSD16MEM0 = 0x0000; 对于+0.6V、我得到 CTSD16MEM0 = 0xFFFF。
有人能帮我解释为什么我会获得这些价值观吗?
请参阅以下代码以供您参考。
#include
#include
#include
/**
* main.c
*
uint32_t adccount1;
int main()
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
P6SEL |= BIT4 | BIC5;//将 P6.4、P6.5设置为 AD0+、AD0-
CTSD16CTL |= CTSD16REFS;//选择内部基准
CTSD16CCTL0 |= CTSD16SC | CTSD16OSR_256 | CTSD16SNGL;//开始转换、OSR = 256、单次转换
CTSD16INCTL0 |= CTSD16GAIN_1 | CTSD16INCH_9;//通道选择 AD0+/ AD0-
CTSD16IE |= CTSD16IE0;//启用中断
_enable_interrupt ();
for (;;)
{
CTSD16CCTL0 |= CTSD16SC;
DisplayNumber (adccount1);
}
}
#pragma vector=CTSD16_vector
_interrupt void CTSD16_ISR (void)
{
开关(CTSD16IV)
案例4:
adccount1 = CTSD16MEM0;
}