Other Parts Discussed in Thread:ADS1255, ADS1256EVM-PDK, ADS1256
电路:
单片机:STM32F373
通信接口:SPI3,速率2Mbps
初始化代码:
读取AD值代码:
读取结果,发回的AD值始终为0
测试二:读取地址为00H-0AH的寄存器值
代码:
返回值:
00H-0AH: 32 01 00 03 E0 00 30 7500 00 00
最后三位为:FSC,值为0,根据公式:
这可能是导致读取AD值始终为0的原因。
但是,什么原因导致校准后的FSC为0?
Amy Luo:
您好,
如果您不执行校准操作,AD转换正常吗
,
user6618017:
不执行校准,读到的AD值是0xFFFFFF
寄存器值:32 01 00 03 E0 00 00 B0 00 00 00
,
Amy Luo:
基准电压您设置的是多少?AIN0和AIN1管脚,您输入的信号幅值范围分别是什么
如果输入信号满足AD的要求范围,您可以附上您读取转换结果的时序图吗
,
user6618017:
基准电压由LT1019产生,实测2.5V
放大倍数1
输入测试:
1.不连接
2.将S-接GND,S+接可变电阻的可变端,电压从0~5V变化,输出结果均为0,无一例外,偶尔会变成0xFFFFFF
,
Amy Luo:
1.不连接
您这里的不连接是指悬空吗?不建议悬空,输入管脚悬空状态下输入信号是未知的,建议将输入管脚连接至固定有效电平来测试读AD转换结果
2.将S-接GND,S+接可变电阻的可变端,电压从0~5V变化
Buffer Enabled 或者说Buffer on的状态下,模拟输入管脚的电压输入范围是AGND ~ AVDD-2.0V,即0 ~ 3V,因此3 V至5V的输入电压超出了信号范围。
如上建议AIN0和AIN1管脚输入固定的电平,读取AD转换结果,您是使用的RDATA还是RDATAC?请附上您读取转换结果的时序图,看时序是否存在问题
,
user6618017:
将S-接地,S+给1V电压。依然读出的是0
另外,这两天做了如下测试:
1.将FSC寄存器写为0x2EE14C(参考手册,2.5Hz理想值),读回来是0x2EE14C,但是读取AD转换结果RDATA依然返回00 00 00
2.换了一块新的ADS1255,依然是一样的现象(说明更大可能是电路或者程序的问题)
3.将芯片上的数字地和模拟地就近连接,以避免产生压差,依然没有改善。
芯片寄存器可以正常读写,而且所改变的采样率是生效的(有指示LED),就是读到的AD值始终是0,初始化后读取的FSC一直是0
到底是什么原因,导致SELFCAL没有正常完成?
感觉无计可施,生无可恋了。。。
,
user6618017:
贵公司有ADS1256EVM-PDK 评估板,但好像没有针对ADS1255的?
能否给我一个能够正常读到AD转换结果的示例,用什么单片机都无所谓,我需要了解:
1.初始化程序,执行步骤
2.读取初始化后FSC值(正常自校正后,是多少?)
3.读取ADC值的操作
,
Amy Luo:
我的建议是先不要使用AD的校准功能,能够正确读取AD转换结果后,再使用
下面是TMS320C5500 的ADS1256的sample code,ADS1256与ADS1255区别不大,大概看了下好像是模拟输入接口数与GPIO口数的区别,您可以参考下:
ADS1256-C5509A-CCS3v1.zip
,
user6618017:
昨晚把电路从原理图,PCB,焊接好的板子,仔细检查了一遍,终于发现问题:焊板子的时候,把R51焊成一个0.1uF的电容!!!
今早换掉,一切问题解决!
电路原理图没错!
初始化程序没错!
读取程序没错!
焊错一个元件,折腾了接近两周,总结一下吧:
1.ADS1255的模拟电源,模拟地,参考电压和参考地,是决定ADC正常与否的关键,需要从原理,PCB和真实的板子上去确认。原理图上看的没错,但是焊出来的板子,是否真的跟设计的一致,是需要确认的。我一开始没有往这想,直到我换了一片ADS1255,问题依旧,就开始认为我的板子有问题。
2.认真读手册。(这点我一开始就做的可以)
3.不要轻易怀疑一个成熟的芯片,是不是坏了,尤其是还有部分功能正常的情况下(通信、读写寄存器一直正常)
4.注意3.3V和5V的电平匹配,如果单片机是5V的话。
5.重视电平时序,必要的延时
6.这么小的板子,第一次用的时候,一定要引出信号测试针,以便调试!
,
Amy Luo:
很高兴您的问题得到解决,感谢您的反馈
是的,做设计必须每一步都得认真仔细
,
user6618017:
感谢TI工程师的快速反应和帮助!
不好意思,给你们添麻烦啦!