大家好!
我的 ADC (16位)返回的值似乎偏移了一半的分辨率。 例如、通过将输入 AIN0配置为 AINp、将 AIN1配置为 AINn、可获得如下结果:
- AIN0 = AIN1 = GND、 期望值:0、 ADC 给出的值:0
- AIN0 = Vref、 AIN1 = GND、 预期值:Vref、 ADC 给出的值:32767
- AIN0 = Vref、AIN1 = ADC/2、 期望值:-ADC/2、Vref 给出的值:49 152
- AIN0 = GND、AIN1 = Vref、 预期值:-ADC、Vref 给出的值:32768
- AIN0 = Vref、 AIN1 = GND、 预期值:0、 ADC 给出的值:0
值的编码范围为32768至32767、从0开始。
类似地、在配置单端输入时:
- AIN0 = GND、 预期值:0、 ADC 给出的值:0
- AIN0 = Vref、 预期值:65535、 ADC 给出的值:32767
奇怪的是、我基本上获得了正确的输出、因此我确信答案很简单...
我也非常确信 ADC 没有符号位。
以下是我使用的配置:
#define REG0_AIN0_AIN1 (CONFIG0_MUX_AIN0_AIN1 | CONFIG0_GAIN_1 | CONFIG0_PGA_BYPASS_YES_DISABLED) // #define REG0_AIN0 (CONFIG0_MUX_AIN0_AVSS | CONFIG0_GAIN_1 | CONFIG0_PGA_BYPASS_YES_DISABLED) #define REG1 (CONFIG1_DR_20_SPS | CONFIG1_MODE_NORMAL | CONFIG1_CM_CONTINUOUS | CONFIG1_VREF_INT | CONFIG1_TS_DISABLED) #define REG2 (CONFIG2_DRDY_OLD | CONFIG2_DCNT_DISABLED | CONFIG2_CRC_DISABLED | CONFIG2_BCS_DISABLED | CONFIG2_IDAC_OFF) #define REG3 (CONFIG3_I1MUX_DISABLED | CONFIG3_I2MUX_DISABLED | CONFIG3_AUTO_MANUAL) #define REG4 (CONFIG4_GPIO2DIR_OUT | CONFIG4_GPIO1DIR_IN | CONFIG4_GPIO0DIR_IN | CONFIG4_GPIO2SEL_DRDY | CONFIG4_GPIO2DAT_LO | CONFIG4_GPIO1DAT_LO | CONFIG4_GPIO0DAT_LO)
感谢您的帮助