微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS1258编程中出现的bug

ADS1258编程中出现的bug

时间:10-02 整理:3721RD 点击:

TI技术工程师:

    您好!

    我在使用ADS1258的时候调试了它的两种工作方式,一是auto channel,一种是fix channel;使用第一种方式都是正常的,但是用第二种方式是,总是会出现bug,在程序运行一段时间后,大概是一两个小时,里面寄存器的值会发生错乱。导致输出有误。原本我对00~08寄存器设置的值为38,21,65,00,FF,FF,00,00,FF.

一开始从串口读回寄存器的值是正确的,但是一段时间后,用串口都回的数据变为:00,21,65,00,FF,FF,00,00,FF. 此时输出的结果是错误的。我想请问一下这会是什么原因造成的?

 

TI的工程师们呢?在线等啊等啊~~

能否描述一下,你的MCU与ADC连接方式,是在一块板子上嘛?你说的串口是哪个串口?

通信方式是SPI,muc和ADS1258在同一块板子上,我说的串口是说我通过SPI与ADS1258通信,读取寄存器的值,再通过muc的串口发送给电脑,这样我就可以看到寄存器里面的值了。

muc打错了 是mcu

能帮忙用示波器抓一下SPI总线上的图形嘛,看一下,上面没有有明显的毛刺。另外检查一下数字电源的电压是否稳定,干净。

数字电源稳定

我不是很明白您说的SPI总线上的毛刺,经过观察,我的数字电源是3.3V,SPI总线上偶尔会出现毛刺,毛刺的的电压最高为4V 最低会出现-0.8V

问题是我寄存器里面的值只在最开始初始化的时候设置后,理论上说不会再改变。

是的,ADS1258已经有很多的客户在应用,没有出现你描述的问题。因此推测你的问题,可能出现在SPI通信错误,电源电压稳定性,地连接,或者强干扰方面。

你的模拟电源电压是多少。会不会出现低于3.2V一个glitch。ADS1258当模拟电源AVDD-AVSS的值小于3.2V时,内部会产生一个reset信号。模拟电源的低电源也可能引起ADC输出数据的错误。

The output data of the ADC may not be valid under low power-supply conditions.

此时你读到的STATUS寄存器,有没有哪一位指示异常?

模拟电压时5V,status寄存器的指示正常。

我可以使用代码,将寄存器里面的值更新,使得输出结果正确,我上面说的寄存器的设置只是涉及到了一路差分,实际应用中不会这样用,在auto模式是非常正常的。

 

从你描述来看,auto模式下正常,因此应该不是器件问题自动把寄存器00清0。

建议正常运行后,用示波器一直在线抓SPI线上的波形。当第一次发现读取的值不正常时,就停止串口发送任何命令,查看示波器上的波形是否有异常写入命令。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top