我使用以下代码测试P0 / 0和P0 / 1的电压,我的目的是首先测量P0 / 0电压,然后测量P0 / 1电压,最后测量P0 / 0和P0之间的差分电压/ 1。
结果如下:
P0 / 0 ======== P0 / 1 ========差异模式
0 =========== 0 ============ 255
1023 ======== 0 ============ 1023
0 ========= 1023 =========== 0
1023 ======= 1023 ========== 511
我的理解是:1023是+ 1.2V,0是-1.2V。511是0V,但是当P0 / 0和P0 / 1都是0V时,为什么它的差值不是511,但是256?
当压力差是0V时,不应该是511吗?
测试代码:
adc_calibrate();
adc_init(gp_adc_se,gp_adc_sign,0);
ADC_USDELAY(20);
ADC_ENABLE_CHANNEL(ADC_CHANNEL_P00);
adc_value1 = adc_get_sample();
ADC_USDELAY(1);
adc_calibrate();
adc_init(gp_adc_se,gp_adc_sign,0);
ADC_USDELAY(20);
adc_enable_channel(adc_channel_p01);
adc_value2 = adc_get_sample();
ADC_USDELAY(1);
adc_calibrate();
ADC_INIT(0,0,0);
ADC_USDELAY(20);
ADC_ENABLE_CHANNEL(0x0000);
adc_value3 = adc_get_sample();
ADC_USDELAY(1);
嗨,威廉,
关于差异性ADC模式如何工作,请在论坛上查看以前的帖子。
https://support.dialog-semicondiondionder.com/forums/post/dialog-smartbond-bluetooth-low-energy-%2%80%93-hardware-device-reference-designs/tring-make.
谢谢,PM_DIALOG.
这篇文章并没有帮助我。我的主要问题是,当两个引脚都连接到0V时,为什么结果255,有时是768,不应该是511?
嗨,威廉,
我不认为您将能够在使用ADC的差分功能状态时测量零电压的值,并且将两个ADC结束设置为零,因为您正在按照他的限制操作ADC。简单地,内部比较器两端的电压太低,无法确定两个电压中的哪一个更高。甚至在零伏中具有ADC的一个端部将导致值为不准确的值。
谢谢pm_dialog.