我正试图了解差异模式如何工作。
我将电压连接到P0_0并接地到P0_1。
我在单个结束时样本通道0和1,然后在差分模式下,但结果我没有意义。
这是代码
// ADC init.
adc_init(gp_adc_se,0);//单结束
ADC_ENABLE_CHANNEL(ADC_CHANNEL_P00);// adc_channel_p00.
temps [0] = adc_get_sample();//开始采样
adc_disable();
adc_init(gp_adc_se,0);//单结束
adc_enable_channel(adc_channel_p01);// adc_channel_p01.
temps [1] = adc_get_sample();//开始采样
adc_disable();
ADC_INIT(0,0);// diff mode.
adc_enable_channel(0);// adc_channel_p00- adc_channel_p01.
temps [2] = adc_get_sample();//开始采样
不应该瞬间[2]搅动到温度[0] - temps [1]?
谢谢

你好rony,我将有一个团队联系你。我们的数据表涉及到ADC时有点不清。有人将很快与触摸联系。
BR JE_DIALOG.
谢谢
嗨rony,
您是正确的,因为从单个结束输入中减去输出值应该使结果与差分输入相同。但是,您必须确保首先将ADC值转换为实际电压。查看下面显示的详细信息
GP_ADC_ATTN3X GP_ADC_SE输入通道输入比例输入限制
0 1 P0_0,P0_1,P0_2,P0_3 0 V至+1.2 V -0.1 V至+1.3 V
0 0 [P0_0,P0_1],[P0_2,P0_3] -1.2 V至+1.2 V -1.3 V至+1.3 V
1 1 P0_0,P0_1,P0_2,P0_3 0 V至+3.6 V -0.1 V至+3.45 V
1 0 [p0_0,p0_1],[p0_2,p0_3] -3.6 v至+3.6 V -3.45 V至+3.45 V
如果这不回答您的问题,可以在单个结束和差分模式下显示您从ADC读取的一些值吗?
此致,
RVA(对话)
我觉得我明白了。
我可以使用adc_init设置gp_adc_se,但如何设置gp_adc_attn3x?
嗨rony,请参阅以下螺纹WHCIH详细信息如何设置3X衰减器。
BR JE_DIALOG.
http://support.dialog-semicondiondionder.com/using-adc-read-voltage-divider-value.
谢谢。
我会检查一下
嗨rony,
我放入早期帖子的桌子有点乱码。这是一个更好的照片:
此致,
RVA(对话)
是的,我破译了它。
将于下周开始使用它。
如果我有问题,你将是第一个知道的......
谢谢
正如承诺的那样,您将成为第一个知道是否存在问题的人。
我连接了一个设置,其中我可以测量p0和p1单端和p0差分。
我从单一结束的值是逻辑的。
我从差异中得到的东西对我来说没有意义。
我录制了2个文件,其中我手动扫描并录制了我得到的p0,p1和p0-p1
其中一个p0总是高于p1,并且在第二个中它是相反的。
测量不是同时的,但它们是另一个之一。
我如何将数据发送给您?
嗨rony,
暂时关闭此主题,我们通过邮件讨论的差异ADC测量需要进一步的文档,我们建议使用单端ADC测量。
最好的问候,RVA(对话)
我也遇到了差异模式的问题
你能给我进一步的文件吗?
好的
这就是我们现在正在做的事情。
谢谢
你好,
关于SDK5.0.3:
adc_init(0,gp_adc_sign,0);
ADC_USDELAY(20);
adc_enable_channel(0);
adc_sample = adc_get_sample();
不应该adc_sample是p0_1- p0_0?
测量范围是否应为[-1.2V,1.2V]?
它无法测量上面代码的正确值。
期待你的答复。
谢谢。
嗨Z20121202038,
根据您想要衡量的频道,您将不得不进行适当的调整,因为数据表指示GP_ADC_SEL应该是0000如果您想测量P00 VS P01,因此请确保配置是正确的,也可以配置您的使用GPIO_CONFIGUREPIN引脚到ADC功能。除了您希望使用差分模式,您可以使用以下修改应用校准程序:
代替:
new_adc_off_p = 0x200 - 2 * adc_off_p;
new_adc_off_n = 0x200 - 2 * adc_off_n;
用这个替换上面的:
new_adc_off_p = 0x200 - adc_off_p;
new_adc_off_n = 0x200 - adc_off_n;
谢谢mt_dialog.
嗨mt_dialog,
我遇到了差异模式的问题
1)
将P00和P01连接到地面。
根据您的建议修改校准程序。
但输出为0x300或0xff,为什么不为0?
2)
输出是无符号整数还是签名整数?
3)
你能给我进一步的文件吗?
谢谢。
嗨mt_dialog,
详细测试如下:
/ ************************************************************************************ /
uint32_t adc_value1 = 0;
uint32_t adc_value2 = 0;
uint32_t adc_value3 = 0;
UINT32_T ADC_VALUE4 = 0;
UINT32_T ADC_GET_VBAT_SAMPLE(BOOL SAMPLEM_VBAT1V)
{
UINT32_T ADC_SAMPLE,ADC_SAMPLE2;
uint32_t att = gp_adc_attn3x;
adc_calibrate();
adc_init(gp_adc_se,gp_adc_sign,att);
ADC_USDELAY(20);
ADC_ENABLE_CHANNEL(ADC_CHANNEL_P00);
adc_sample = adc_get_sample();
ADC_VALUE1 = ADC_SAMPLE;
ADC_USDELAY(1);
adc_calibrate();
adc_init(gp_adc_se,gp_adc_sign,att);
ADC_USDELAY(20);
adc_enable_channel(adc_channel_p01);
adc_sample = adc_get_sample();
ADC_VALUE2 = ADC_SAMPLE;
ADC_USDELAY(1);
ADC_VALUE3 = ADC_VALUE2 - ADC_VALUE1;
adc_calibrate();
ADC_INIT(0,GP_ADC_SIGN,ATT);
ADC_USDELAY(20);
ADC_ENABLE_CHANNEL(0x0000);
adc_sample = adc_get_sample();
ADC_VALUE4 = ADC_SAMPLE;
ADC_USDELAY(1);
adc_disable();
返回ADC_SAMPLE;
}
此外,我们将PIN配置为:
gpio_configurepin(0,0,输入,pid_adc,false);
gpio_configurepin(0,1,输入,pid_adc,false);
/ ************************************************************************************ /
结果:
adc_value1 = 0;
ADC_VALUE2 = 0x390;// 3.206V.
ADC_VALUE3 = 0x390;
adc_value4 = 0x02b;// 0.151V.
期待你的答复。
谢谢。
嗨Z20121202038,
不幸的是没有文件或示例如何使用差异ADC操作,大多数客户不使用差分但单个结束模式,当零电压施加零电压时,ADC的输出应接近1FF或者10位范围,因为您从-1.2V到1.2V测量(或使用衰减器乘以3),ADC的输出是无符号的10位值。还尽量不要在初始化模块并使用差异模式时使用gp_adc_sign。
谢谢mt_dialog.