我正试图了解差异模式如何工作。
我将电压连接到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模式
adc_enable_channel (0);/ / ADC_CHANNEL_P00 - ADC_CHANNEL_P01
临时工[2]= adc_get_sample ();/ /开始采样
[2]和[0]不应该相等吗?
谢谢

你好,罗尼,我会让一个团队联系你。当谈到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
[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
[P0_0, P0_1], [P0_2, P0_3] -3.6 V to +3.6 V -3.45 V to +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的微分。
我从单端得到的值是合乎逻辑的。
我从微分中得到的东西对我来说毫无意义。
我记录了两个文件,我手动扫描并记录了我得到的p0 p1和p0-p1
其中一个的p0总是大于p1,而第二个的正好相反。
这些测量不是同时进行的,但它们是一个接一个的。
我怎样才能把数据发给你?
嗨rony,
就像我们在邮件中讨论的那样,差分ADC测量需要进一步的文档,我们建议目前使用单端ADC测量。
最好的问候,RVA(对话)
我也遇到了微分模式的问题
你能给我进一步的文件吗?
行
这就是我们现在正在做的。
谢谢
你好,
关于SDK5.0.3:
GP_ADC_SIGN adc_init (0, 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,所以确保配置是正确的,也配置针ADC functionallity GPIO_ConfigurePin。除此之外,您可以应用校准程序与以下修改,因为您想使用差速模式:
代替:
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 sample_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 (0 x0000);
adc_sample = adc_get_sample ();
adc_value4 = adc_sample;
adc_usDelay (1);
adc_disable ();
返回adc_sample;
}
此外,我们将PIN配置为:
GPIO_ConfigurePin(0,0, INPUT, PID_ADC, false); / /输出
GPIO_ConfigurePin(0,1, INPUT, PID_ADC, false); / /输出
/************************************************************************************/
结果:
adc_value1 = 0;
adc_value2 = 0 x390;/ / 3.206 v
adc_value3 = 0 x390;
adc_value4 = 0x02b;// 0.151V.
期待你的回复。
谢谢。
嗨z20121202038,
不幸的是没有文件或示例如何使用差异ADC操作,大多数客户不使用差分但单个结束模式,当零电压施加零电压时,ADC的输出应接近1FF或者10位范围,因为您从-1.2V到1.2V测量(或使用衰减器乘以3),ADC的输出是无符号的10位值。还尽量不要在初始化模块并使用差异模式时使用gp_adc_sign。
由于MT_dialog