This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADS131A04: ADS131A04

Part Number: ADS131A04

   对于ads131A04这款芯片,我发送LOCK(0655)命令之后发现芯片的spi输出全为1,正确应该是0655才对,这是什么原因啊?

  我M2和M1接的地,M0悬空的。用fpga控制的该款ADC,发送0655并无回馈,下图为我仿真截图

  • 您好,

    您是在什么情况下发送的LOCK命令?如果是上电之后,那ADC不会响应,如下截图说明,在接收到 FFDDh后,需要发送UNLOCK命令才能SPI通信。在datasheet Figure 106.有 ADS131A0x Configuration Sequence,您是按照这个顺序配置的设备吗?

  • 我是按照10.4 Initialization Set Up这个图进行操作的,

    具体操做步骤是,等待5ms power up,发送reset命令,等待回复,回复确认,发送null命令,等待回复,回复确认,发送unlock命令,等待回复,回复确认,分别写3个寄存器,CLK1,CLK2和ADCEN这三个寄存器,等待回复后确认,然后发送weak up命令,等待回复,回复确认,然后再发送lock命令,回复确认,之后就是NULL命令了,他一直回复我2220,好像是F_SPI这个寄存器置位了。我并不知道发了锁命令之后再发什么命令,所以就发0,表示null命令

    还有一个问题想请教,关于这个dready信号,它何时为输入,何时为输出,是主机为输出,从机为输入对吗,那么他可以和片选直接连接在一起吗

  • 关于那个全为1的原因是因为ADC芯片有些线路虚焊,已经解决掉了,目前就是发送LOCK之后再发NULL就会回2200,表示F_SPI置1,不知道为啥,我lock之后重新发lock回复0555,是正确的

  • 关于那个全为1的原因是因为ADC芯片有些线路虚焊,已经解决掉了,

    很高兴这个问题已经解决掉了,感谢您的反馈!

    目前就是发送LOCK之后再发NULL就会回2200,表示F_SPI置1,不知道为啥,

    F_SPI置1说明STAT_S 寄存器有位置1了,您读下STAT_S寄存器看下哪个或哪些位置1了?

  • 还有一个问题想请教,关于这个dready信号,它何时为输入,何时为输出,是主机为输出,从机为输入对吗,那么他可以和片选直接连接在一起吗

    具体取决于SPI接口配置的模式,SPI接口通过M0管脚可以配置其工作在三种模式下,如下截图:

    在 Synchronous Slave Mode DRDY是输入管脚,可以和CS管脚连接在一起,另外两种模式是输出管脚,具体应用信息见 datasheet 9.5.2 SPI Interface章节。

  • 我发了锁命令之后就再解锁去读STAT_S寄存器读不了,我一直从上边我写的复位到锁寄存器,接下来解锁,读STAT_S,然后重新复位,在到锁,解锁,读STAT_S,这样一直重复操作,好像发的命令回复都是FF

  • 很抱歉,今天我休假了,明天我会具体看下你的问题

  • 好的,谢谢,目前看到的是P脚和N脚都超过了设定阈值,那个A_SYS_CFG我都是按默认的,我都没有写东西,但是它报警超阈值了

  • 我发了锁命令之后就再解锁去读STAT_S寄存器读不了

    发了lock命令和unlock命令都有正确的ACK吗?

    我一直从上边我写的复位到锁寄存器,接下来解锁

    您的意思是按照10.4 Initialization Set Up 这个步骤操作的是吗?这个过程中所有的命令都有正确的ACK 吗?或者说从哪里异常的?

  • 目前看到的是P脚和N脚都超过了设定阈值,那个A_SYS_CFG我都是按默认的,我都没有写东西,但是它报警超阈值了

    您现在可以正确读回STAT_S寄存器值了是吗?或者说现在所有的命令都有了正确的ACK?

    VNCPEN默认是设置为0,VNCPEN的设置与供电电压范围和模拟输入信号范围有关。您的供电电压分别是多少?输入信号范围是什么?

  • 回复2210,和STAT_S无关,发送lock之后就一直发0000,相当于null,但是它一直回复我222000在response这个数据帧段,我模拟供电AVDD是5v,IOVDD是3.3V,输入的信号是2.5v目前

  • 回复221000上边写错了

  • 发送完lock命令之后,在发送NULL,因为要一直为0,然后就报221000,我查看STAT_P和STAT_N都是0f回复数据,这个会对采样有影响吗

  • 我模拟供电AVDD是5v,IOVDD是3.3V,输入的信号是2.5v目前

    我很奇怪您在这个输入在规格范围内,为什么还报错,您的输入电路是怎样的?单端输入还是差分输入?可以附上电路图吗?

  • 我将MO悬空,将M1和M2接地

  • 我模拟供电AVDD是5v,IOVDD是3.3V,输入的信号是2.5v目前

    您输入的是直流2.5V还是交流信号?若交流幅值变化范围是多少?

    如果是DC2.5V,那真的很奇怪,因为在单电源5V供电时,输入范围是0~5V,2.5V完全在这个范围内,而STAT_P  正极输入报错很不应该。不知道与您加的二极管是否有关,您可以尝试去掉1N5819二极管再做测试吗?

    STAT_N  负极输入报错,很可能是地平面存在干扰,若有很小的负的干扰信号在地平面上,那么负输入端也相当于超出阈值进而报错。

  • 好的,谢谢,目前已经可以正常工作,但是这两个仍然报错,这个报错会对该芯片产生什么影响吗?

  • 我们试一下,非常感谢

  • 只要不超过绝对最大额定值就不会损坏芯片,但是超过了推荐的工作条件,可能会影响设备的可靠性。

    如果不是二极管的原因,您可以实测ADC输入电压具体是不是2.5V吗?

    您尝试修改寄存器 COMP_TH[2:0]阈值大一些,看STAT_N 是否还报错?

  • 实测是2.5V,这个COMPH_TH初始值就是000,是最大的,我并未对该寄存器进行修改,我只修改了两个CLK寄存器和ADC_EN这三个寄存器,现在搞好了,STAT_P不报错了,但是STAT_N仍然报错,数据采集回来都是正确的,这个会对芯片造成影响吗?比如说对芯片工作时间会不会造成影响

  • 现在搞好了,STAT_P不报错了

    可以分享是什么原因导致的报错吗?

     COMP_TH[2:0]阈值默认阈值是5%,您可以修改寄存器使其10%、15%......再看是否报错吗?

  • STAT_P报错是因为没有输入,P脚有几个悬空导致报错,P脚不可悬空,n脚我是直接和地连接的,是不是需要加一个下拉才可以,目前已经可以正常采集,但是数据比较跳,怀疑是不是由于N脚这个报错引起的,我们测了输入的PN脚之间的电压是非常稳定的,REFXT这个基准也很稳,但是它数据跳的比较厉害。

  • STAT_P报错是因为没有输入,P脚有几个悬空导致报错,P脚不可悬空,

    是的,模拟输入管脚不可以悬空。

    目前已经可以正常采集,但是数据比较跳,

    输出code后几位跳动?如果输出code 跳动的位数比较多,说明存在干扰,除了输入、基准电压引入的干扰,供电电压、时钟抖动和PCB layout 不好也会引入干扰。

  • 有12bit的数据跳动,这个跳动还是比较大的,因为我回采的数据基本是正确的,但是偶尔有一两次跳动幅度会特别大,这个是正常的吗,就是最高位也会变,这个只是偶尔出现。

  • 您好,这是一个新的问题,这个帖子也比较长了,为方便回复和其他用户检索,我们建议您发新帖,谢谢。