CC3200自制PCB的ADC采集结果很奇怪!
大家好!
我们自己画的PCB在使用adc例程的时候,采集结果很奇怪(用LaunchPad测试正常),采用的AD输入引脚是PIN_60,现象如下:
情况一,通过100k电阻接GND,输出的128个结果匀为4095。
情况二,通过100k电阻接GND,并联0.1uF电容一个,输出的128个结果由小变大,约从2500多增加到4095。
最小系统部分的原理图画法和LaunchPad一样,无线网络部分功能正常。
由表象看可能是芯片内部的AD输入端有电流输入,会不会可能是哪里的布线出现了问题?
附件为原理如,请下载。
没有人知道是怎么回事吗?
同样的程序如果用LP测试正常的情况下,可以排除程序的原因,
首先确定CC3200的Power供电是否正常?
能否排除焊接黏锡等因素影响?
那么自己的板子原理图能否贴出了?
你好Han
是的可以排除程序的原因,CC3200的所有Power引脚测量电压正常,因为是机器焊接,所以可以排除焊接问题。几个样板是同样的问题。
另外最近刚发现PCB分层问题,L1是射频及CC3200芯片层,L2是电源层,L3是GND层,L4是其他信号层。不知道是否跟L2、L3层有关。
已经在1楼上传了附件,请下载。
谢谢!
原理图对照LP查看了,和LP的基本一致,ADC属于M4内核应该和分层没有太大关系,几点建议:
(1)关于SOP2的启动方式楼主采用了RC充电的方式,能否测试过程中直接使用将SOP2直接接地,而不是先为高电平RC充完电后再为低电平的方式;
(2)将AD输入引脚是PIN_60直接接地而不采用跨接电阻的方式,查看ADC的转换值是否正常;
PS:如果楼主从别的方面解决了该问题,可以和大家分享一下经验!
谢谢!
Hi,Han~
感谢你的回复,我明天测试一下建议1),建议2)我曾经试过,可惜得到的是随机值,换算为电压大概为0.4V左右,而LP板子则稳稳的是0。
谢谢。
Hi Han~
我今天测试了方案1,直接把SOP2接地,但是很遗憾,结果是一样的。
谢谢。
再从其他方面检查检查原因吧,问题解决了欢迎贴出来分享!
Hey, YangCQ,
这个ADC用的话还是有些东西需要注意的。
我相信你碰到的是这个问题啦。。。。
http://processors.wiki.ti.com/index.php/CC32xx_ADC_Appnote
你好,AZ,
这个链接我看了很多遍了,而且很仔细,里面提到的加外部电容我也试过了,可惜没有效果,应该不是这个问题。所以说问题很奇怪,难道没有人遇到过这种情况吗。
谢谢。
测试中将ADC引脚直接接地,排除wiki上提及的SAR ADC电容充电的问题,来排查板卡的问题。
Hi, Han,
测试直接将ADC接地,输出AD值为900。正常LP板子为0,有什么想到的地方吗?
谢谢。
关键问题是很难理解将ADC的引脚强拉到GND为啥还会有数值出现呢,在参考电压启动后不要立即读取ADC的值,等待一会等参考电压稳定后再去读数据,
MAP_ADCChannelEnable(ADC_BASE, uiChannel);
delay(some time)
Read ADC data;
但是LP的板子为正确结果,还是继续排查硬件问题,
Hi, Han,
在使能通道后加了延时依然没有解决问题。可以肯定的是:程序没有问题,因为用的是例程;原理图没问题,和LP核心部分一样。
是否可能是布线的问题,看情况可能是ADC的内部充电电容Csh有了电压。
如果内部充电电容Csh有了电压,那是不是Csh的GND有高于0V的电压,如果GND有高于0V的电压,是不是GND有可能有地回流存在?或者其他电压的可能。
不知道我的分析对不对。
谢谢。
只是有点奇怪,按理说ADC引脚接到了GND上SAR的充电电容Cs就不会有电压了,ADC的转换数据为0,但是现在出现了电压,难道是GND有问题?你用万用表测一下CC3200的GND和ADC引脚之间有没有电压?
Hi, Han,
我测试的结果是GND与ADC引脚之间没有电压,即使把ADC通道禁用的函数注释掉,结果依然一样:
//MAP_ADCChannelDisable(ADC_BASE, uiChannel);
谢谢。