微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS1298多片级联

ADS1298多片级联

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

TI专家:

你们好,我想咨询一下有没有人做过多片ADS1298的级联?最好采用什么方式级联呢,我看说明上有写两种方式:Cascaded Mode和Daisy_Chain Mode.我本打算做8片的连接,但是很多事情没搞明白,现在先实验两片的连接,采用Cascaded Mode

 请问第二片的DRDY是不是应该连接到INT上啊?试写错了吗?谢谢专家解答!

同问!如果不接,是否INT上有中断信号,先读过Device1就可以读Device2的数据了。还有这种方式是否要用相同的外部时钟?我在做两片级联时,两片芯片各自用内部时钟,对两块芯片做相同的配置,两个芯片的DRDY上的信号的相位差不固定,是在按周期性在变化的!

还有从官网上申请的片子,只有ID寄存器读出来时0x00(我用的是ADS1298),其他的寄存器读写都正常!很奇怪,而且片子八个通道都可以用!我现在是单个芯片工作在指定的数据率下采集的数据都正常,两片在一起工作就不正常了的!很迷茫,搞了好几天了的!希望有相关想法或提示的告知一下的!

数据参考手册都翻烂了,还是不知到问题所在,TI 的ADS1298的数据手册关于多芯片操作的时序问题讲的太隐晦了的!唉。。。

我也将两片连起来试了一下,分别用的都是外部的2.048MHZ,两个CS,两片均不能正常工作?咱两能交流交流吗?QQ303107652

我的问题解决了的。我是用Device1配置成内部时钟,同时将内部时钟发出来,供Device2使用,程序中先将Device1相应寄存器配置好,保证可以发出时钟。同时Device2一直处于PWND模式,保证Device1可以发出时钟后,再将Device2进行上电复位的过程,就可以了。关键就是保证两个芯片使用统一时钟,使转换同步(原来我是使用两个芯片的各自的内部时钟,由于内部时钟有漂移,导致两块芯片转换不同步)。我在使用时的心得是:关键是注意芯片的复位时序和SPI通信总线的时序,需要对照datasheet仔细研究就可以完成了的。

 

只要多片使用相同的外部时钟CLK,多片配置成相同的工作模式,各个芯片的DRDY是同步的,所以只接一个就可以了的。

我用的单片机是STM32L151,开始时使用内部SPI工作在16MHZ CLK,对芯片进行寄存器读写操作时,芯片只有ID寄存器读出来的有问题,其他的都是写进去什么就读出来什么的,都开始怀疑供应商给我发的是ADS1294了,但是单个芯片工作模式什么的都能正确设置,并且可以正确读取数据。后来将两块芯片进行级联处理,由于两块芯片都用各自的内部时钟,我对两块芯片配置成相同的模式,发现两块DRDY产生的芯片的相位差是在变化的(可能是各自的内部OSC有温度漂移,毕竟是内部的,不准确正常),然后就是将电路进行修改,将Device1的CLKSEL = 1,使用内部时钟,同时Device2的PWDN = 0,使Device2处于掉电模式;对Device1进行复位时序操作,写入相应模式的寄存器(主要是数据率的设置、CK_EN = 1使内部时钟输出、Channel的模式设置等);紧接着对Device2进行复位时序操作,由于我的电路两块芯片的RESET引脚接在一起了,所以对Device2进行复位操作时是使用Reset命令的,注意在复位操作前先将Device2的PWDN拉高,使芯片脱离掉电模式,接着可以对Device2进行相应模式的寄存器写入操作。

注意芯片上电复位后是处于连续数据读取状态,要对寄存器进行操作时,需先向芯片发送停止连续数据读取状态。

但是我在用MCU硬件SPI操作时出现了不明原因的丢失数据,可能我对硬件SPI理解还是不够深,最终无奈还是使用IO口模拟SPI总线,要保证SCLK的频率达到datasheet上的要求,在用软件模拟的程序进行操作后,两块芯片进行操作、模式配置、数据读取等都工作正常。

hi:我用的是C5515,我目前连接两片ADS1298,已经能够切换CS0和CS1了,设置8K的采样率,测量得到DRDY上的频率是8K,但是CS0和CS1上的频率均是4K,我不知道是不是对的?一次DRDY低电平的到来,能读到18个24BIT的数据呢还是9个?程序里现在设置的是RDATAC工作方式,我想问一下对吗?应该怎么设置?

你的两片芯片的DRDY产生的信号同步吗?看你怎么做?你要是两个DRDY分别接两个IO,进行中断触发的话,则每个DRDY读的是9个24Bit。如果你的两片芯片工作同步的话,只用一个DRDY与IO相连,则一次DRDY可以读18个24Bit。当然你共用时钟时,两块芯片一定同步,可以只用一个DRDY,一次分别读取两块芯片两个9个24bit。

可以设置成RDATAC模式,这样你每次直接读数据就可以了的;如果你设置成SDATAC模式时,则每次读取芯片数据时需要发送RDATA命令,但是可以随时设置寄存器;前一种工作方式,设置寄存器前需要先发送SDATAC命令,寄存器操作好后,再发送RDATAC命令,使芯片工作在连续数据读取模式!

你的CS的频率为4K可能不对,应该是8k,你每次产生DRDY中断时,应该先CS1 = 0,读取Device1的数据,此时为9个24Bit;再CS2 = 0,读取Device2的数据,此时也为9个24Bit。

可能说的比较啰嗦,原谅的,说的有什么问题望指正!

我只有一片ADS1298连着DRDY的,另一片没连空着的,ADS1298用的是外部的2.048mhz,但是是用两个晶振供给的,我之前写错了是DRDY的频率是4K,中断里面设置的一个IO口是8K的频率(进入中断拉高推出拉低)。

补充一下,连着DRDY连着中断脚的频率是4K,另一个没连着的居然是250HZ,这个是哪里出问题了

CS都还是4khz.

那是你第二片芯片没有配置好,它工作在默认模式下,也就是数据率Fdr = 250SPS。你最好是两块芯片用同一外部时钟!让两块芯片配置在相同的模式下,用示波器同时看两个芯片的DRDY信号,关键是看同步,同步了就基本可以了的。在一次DRDY中断中一次读取18个24Bit就可以了,分别是Device1和Device2的读取数据,注意两块芯片CS的切换。

芯片配置时,关键是复位时序,需特别注意的!

你说芯片配置时的复位时序,两个芯片不能一起通过RESETB引脚来复位吗?还要分开复位?还有一次DRDY时是先选定CS完了读9个,在切换CS再读9个呢还是不用管CS直接一起读18个?我说一下我连在一起的脚有SCLK,DIN,DOUT,START,RESETB,CS0,CS1分开连的,帮我看看有哪个地方不对的,谢谢

一起复位我觉得应该是可以的,由于我没有外部晶振,只能分开复位,用Device1发出CLK给Device2用。在一次DRDY时先CS1 = 0读9个,再CS2 = 0读9个。晶振最好两块芯片用一个外部晶振的!

复位时序是datasheet上QuickStartGuide那一段内容中。

我估计我的问题是第二片的复位问题,读寄存器出来都全是0?难道不能一起复位?哎,晕得很

hi:

我换了个普通的IO口来控制第二片的CS,居然可以读出第二片的ID等信息了,DRDY=8KHZ,CS0,CS1=8KHZ,我想这个应该是正常了,但是每次进入DRDY中断的时候我先直接读第一片的9个24bit数据,再拉低第二片的CS,读第二片的9个24bit数据,再拉低第二片的CS,发觉第二片的数据读出来不对,我这里有什么问题吗?谢谢

首先确定两片芯片DRDY信号产生的信号是否同步,一定需要同步的!

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

网站地图

Top