⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
11个员额/ 0个新员额
最后发表
DavidW
离线
最后看到:2年4个月前
加入:2017-11-17 08:35
通道P03的adc测量错误

您好,支持,

adc通道P03有问题。
adc通道P00、P01、P02的测量工作正常,但对于通道P03,我总是得到一个错误的值。
我使用的电路板是Da14580的DK-Basic-Kit。

以下是我的代码:
/ / ADC配置
#定义GPIO_ADC1_端口GPIO_端口0
#定义GPIO_ADC1_PIN GPIO_PIN_1
#定义GPIO_ADC0_PORT GPIO_PORT_0
#定义GPIO_ADC0_PIN GPIO_PIN_0
#定义GPIO_ADC2_端口GPIO_端口0
#定义GPIO_ADC2_引脚GPIO_引脚2
#定义GPIO_ADC3_PORT GPIO_PORT_0
#定义GPIO_ADC3_引脚GPIO_引脚_3

Reserve_gpio (adc_pin1, gpio_adc1_port, gpio_adc1_pin, pid_adc);
预留GPIO(ADC_引脚0、GPIO_ADC0_端口、GPIO_ADC0_引脚、PID_ADC);
预留GPIO(ADC_引脚2、GPIO_ADC2_端口、GPIO_ADC2_引脚、PID_ADC);
Reserve_gpio (adc_pin3, gpio_adc3_port, gpio_adc3_pin, pid_adc);

GPIO_配置引脚(GPIO_ADC1_端口,GPIO_ADC1_引脚,输入,PID_ADC,错误);
GPIO_配置引脚(GPIO_ADC0_端口,GPIO_ADC0_引脚,输入,PID_ADC,错误);
GPIO_配置引脚(GPIO_ADC2_端口,GPIO_ADC2_引脚,输入,PID_ADC,错误);
GPIO_ConfigurePin(GPIO_ADC3_PORT,GPIO_ADC3_PIN, INPUT, PID_ADC, false);

//adc采样的功能
uint16_t adc_read_P03_channel(空白)
{

uint16_t adc_样本,adc_样本2;

adc_init(GP_adc_SE,0,GP_adc_ATTN3X);

adc_enable_channel (ADC_CHANNEL_P03);

adc_sample=adc_get_sample();

adc_init(GP_adc_SE,0,GP_adc_ATTN3X);

adc_enable_channel (ADC_CHANNEL_P03);

adc_sample2=adc_get_sample();
adc_样本=(adc_样本2+adc_样本);
adc_disable ();

返回adc_sample
}

问候
大卫

关键词:
设备:
LC_DialoggydF4y2Ba
离线
最后看到:4周10小时前
工作人员
加入:2016-09-19 23:20
你好,大卫,

你好,大卫,

我已经在我这方面尝试了相同的实现,并且在基本DK上获得了适当的值。我所做的不同之处是打印读取的值,并且在应用程序验证睡眠回调以重复测试函数。

也许你可以尝试在启动配置步骤中校准ADC,或者在adc_init就像画在adc_get_vbat_sample.看看你是否能得到更好的结果。

注意:另外,我在您的代码中注意到,您返回的示例是添加的,但不是除以2。如果您不打算这样做,我只是想提出这个问题。

请让我知道,如果你仍然有这个问题,可能会有更多的见解,对这个问题。

最好的
LC_DialoggydF4y2Ba

DavidW
离线
最后看到:2年4个月前
加入:2017-11-17 08:35
谢谢你的快速回复

谢谢你的快速回复。

我什么都试过了,但都没用。
它不重要,如果我采取测量1V或3V的P03, adc显示一个随机值,但它总是大约相同的范围。我检查了没有信号的引脚的电压,我得到0V,所以没有偏移。
其他通道与我的实现配合使用,因此我认为对话或通道P03的配置是错误的。

我更改了ble pheripheral示例的代码。
这个Pin上有我不知道的配置吗?

谢谢你的建议。
你说得对,加法后我没有除法,但我没有错误通道的影响。

问候
大卫

LC_DialoggydF4y2Ba
离线
最后看到:4周10小时前
工作人员
加入:2016-09-19 23:20
你好,大卫,

你好,大卫,

我将在这里寻找更多可能的问题。但是,你能试着使用Empty_Peripheral_Template项目并测试此实现。这个项目没有所有不必要的操作,有时可能会干扰和优先。

另外,如何调用这个函数。是在启动过程中或启动后的某个时刻重复调用或只调用一次函数。

最好的
LC_Dialogg

DavidW
离线
最后看到:2年4个月前
加入:2017-11-17 08:35
嗨,LC,

嗨,LC,

我修改了ble PheriPeral示例,以进行adc测量,并通过ble将其发送到计算机。我使用函数app_adcvall_timer_cb_处理程序(如示例中所示)每秒发送一次值。

我用空外设模板上的所有通道测试adc &另外用Uart作为输出的修改电池示例。
结果总是一样的。
通道P00、P01、P02显示正确的值(1V、2V、3V),但通道P03始终显示相同的值(二进制格式:1110001100)。该值在最后两位左右变化。因此,在P03上进行测量。
我还检查了从针脚P03到芯片的触点,一切正常。

这个通道是否可能在芯片内部有任何损坏?

顺致敬意,
大卫

LC_DialoggydF4y2Ba
离线
最后看到:4周10小时前
工作人员
加入:2016-09-19 23:20
你好,大卫,

你好,大卫,

这是非常奇怪的,只有P03频道显示了奇怪的行为。我们在580的ADC上还没有见过这样的问题。在过去有一些百分比的准确性问题,但没有像这样。说到这里,我想确认一些与实现相关的事情。
1.此针脚P03是否用于任何其他用途。主要是闪存的CS引脚。这可能会在销加载时对其造成一些干扰。
2.你能在不同的开发工具包上测试这个吗?这是为了排除任何硬件相关的问题。
3.你可以用3倍衰减模式的ADC进行测试吗禁用并检查结果是否有所改善。

目前还不清楚到底是什么原因导致了这个问题,但我会在我探究这个问题的过程中让你知道。

最好的
LC_DialoggydF4y2Ba

DavidW
离线
最后看到:2年4个月前
加入:2017-11-17 08:35
嗨,LC对话,

嗨,LC对话,

1.我也是这么想的,但是我检查了所有的GPIO预约和配置。我什么也找不到。
2.如果没有解决方案,我将使用另一个14580芯片,并首先对此进行测试。

3.在通道P03上没有3x衰减我得到最高的值(1111111111),有3x衰减我得到大约3,2V(1110001100, 1110001101, 1110001011)。我创造什么信号并不重要。
我还用示波器检查了引脚以及与芯片的连接。没有抵消。而不是作为输出的值。

是否有可能通过软件或任何GPIO配置获得此3,2V?
否则我认为芯片内部有损伤。

谢谢
大卫

LC_DialoggydF4y2Ba
离线
最后看到:4周10小时前
工作人员
加入:2016-09-19 23:20
你好,大卫,

你好,大卫,

我很好奇您是否有机会在不同的工具包上试用ADC实现?

此外,有时,如果在其他通道上有任何活动,即使它们不是用于ADC的目的,ADC也可能被干扰。如果有任何UART活动等,在通道0/1/2上,当通道3被用于ADC时,ADC读数可能会有一些不一致。请确保正确处理时间,以避免这种情况。

回到原来的问题,仍然没有解释为什么仅在通道3上获得某些固定的错误值。

再次回答您的问题:是否有可能通过软件或任何GPIO配置获得此3,2V?
如果你问的是将ADC通道3映射到任何其他GPIO,恐怕这是不可能的,因为ADC的4个通道在硬件上连接到端口0的下4个引脚。

最好的
LC_DialoggydF4y2Ba

DavidW
离线
最后看到:2年4个月前
加入:2017-11-17 08:35
嗨LC_Dialog,

嗨LC_Dialog,

我将在几天后更换主板上的芯片。
我检查了所有的软件设置,还测试了一些硬件设置。
我发现通道的值是VDD3V3。我花了更长的时间,因为我总是使用与usb调试器。
电池或电压发生器使用后,其值与电源电压相似。
更换芯片后,如果问题解决了,我会通知您。

当做

大卫

DavidW
离线
最后看到:2年4个月前
加入:2017-11-17 08:35
嗨LC_Dialog,

嗨LC_Dialog,

更换Da14580芯片后,通道P03工作。所以这是一个硬件问题。
现在,所有四个通道都工作正常。我不知道这次损坏的原因,但花了这么长时间真让人恼火。

你知道adc的参考电压和精度吗?
我做了一些测量,如果我想转换adc的值,我用3.6V计算。但是如果我用3.7V作为参考电压进行计算,转换后的值对adc引脚上的电压更精确。我认为实现的软件是正确的。

当做
大卫

LC_DialoggydF4y2Ba
离线
最后看到:4周10小时前
工作人员
加入:2016-09-19 23:20
你好,大卫,

你好,大卫,

很高兴知道问题已经解决了。尽管硬件损坏非常罕见,而且可能是由于许多原因造成的,如打开包装后在室外存放的时间较长、生产中的ESD等。,

关于精度,在DA14580已知问题文件中有一个非常好的ADC测量和注意事项参考。请检查文件,并与我们联系,如果有任何澄清。

最好的
LC_DialoggydF4y2Ba