TI中文支持网
TI专业的中文技术问题搜集分享网站

ADS8331使用问题

你好,我设计中选用ADS8331芯片作为信号采集,下载的芯片手册里边没有找到时序图,如上电后我应该如何读取数据,如何设置寄存器CFR、CMR,能否提供详细时序图或者源代码

ji du:

为什么没人回复?

deyisupport:

回复 ji du:

您好,不好意思让您等久了,负责数据转换器的同事在出差,我们马上内部沟通一下,尽快给您回复!

Van Yang:

你好,请查看www.ti.com/…/ads8331.pdf,第9页就是时序图。

ji du:

回复 Van Yang:

按照第9页的时序图

CONVST :由CPU控制作为输出管脚,管脚一直输出高电平

RST: 由CPU控制作为输出管脚,管脚一直输出高电平

EOC:由CPU控制作为输入管脚,监测发现管脚一直为低电平

CS、SCLK、SDI、SDO与CPU的SPI功能管脚互连,SPI设置CPOL = '1', CPHA = '0'.,频率1MHz

按照时序图,先发送2字节设置命令(Write CFR,芯片手册27页的命令),0xEC,0xFD

 

发送完后,再发送2字节读取数据(Read data),0xD0,0x00,由时序图所示应该是再发送读取数据2个字节的命令的同时SDO回传AD采样数据,用示波器观察,发现SDO管脚一直处于低电平,没有数据出来。

是哪个地方的时序没写好,还是命令有所错误。

Austin He:

回复 ji du:

你降低频率试试看,请注意我们的器件是500kSPS的

ji du:

回复 Austin He:

我指的频率是时钟频率CLOCK为1MHz,采样频率目前只有3.6KHz

目前SDO管脚在进行SPI通讯时一直处于高电平,仍无正常数据输出

Van Yang:

回复 ji du:

按照你的配置,实际上采样率是500KSPS,因为你的转化时钟采用内部11MHZ时钟,21个转化周期,就是500KSPS,这样你1MHZ的SPI肯定读不出来。既然你的采样频率不高,我建议你转化时钟CCLK采用你的SCLK,即D10=0.同时我建议你上电之后对ADS8331进行复位操作。

ji du:

回复 Van Yang:

我在上电时对RST进行了复位操作的,目前我将(Write CFR,芯片手册27页的命令),写入0xEFFD命令时,每次先将CONVST置为高电平,然后等待EOC为高电平时发送0xD000(16个CCLK)读取数据,读取一个通道后将CONVST置为低电平,然后再置高电平,等待EOC为高电平再读取下一通道数据,以此循环读取数据,数据均能正常读取,但是码值波动较大,16位分辨率最大波动200个字,请问此种读取数据的方式是否正确,AD码值的有效值为多少?

目前使用外部时钟CCLK约1.4MHz,采样频率为2K,时序图与手册第九页Figure 1.一致

按照你说的方式,我将D10 = 0,即CFR = 0xBFD或0x1FD或0x3FD或0xAFD时读取数据均不正常,所有通道的值都一样

如果我想按照手册第九页Figure 2. (Auto-Trigger Mode at 500 kSPS)进行调试,CFR寄存器应该设为多少合适?SPI的CCLK是否需要大约11MHz才可以?

Van Yang:

回复 ji du:

根据手册上的AC特性,在5V时,输入1KHz正弦波,SNR=91.5dB,则有效位ENOB=91.5-1.76/6.02=14.9bit。你这种读的方式是正确的,码值波动在200已经很大,请问你的ADC电路设计方便提供么,尤其是前端输入和参考源部分怎样设计,这两部分的设计和ADC的精度关系密切。

我所建议你采用的D10=0是因为在自动模式下,可以使得采样率等于SPI时钟频率/21,这样方便你使用比内部时钟低很多的SPI读出数据。

如果采用自动模式,我建议你试试0x8fd试试。

ji du:

回复 Van Yang:

电路设计基本是按照手册第34页设计的,其中VA = 5V,VBD = 3.3V,Vref = 5V,DGND、AGND、COM脚均为同一个地,数模非隔离。

目前设计SPI时钟改为18MHz,采样频率为25K

按照你的建议,将CFR设为0x8FD,时序为RST复位后,CONVERT一直为高电平,然后写入CFR = 0x8FD,然后CONVERT一直保持高电平,然后发送4个0xD000(16个CCLK)读取4通道数据,在读取过程中我试过直接发送读取或者等待EOC管脚为低电平后再读,均出现同一问题,四个通道的码值一直相同,而且都为上电同一时刻读取的值,运行过程中改变输入信号大小,码值也不跟随改变。

按照手册第9页Figure 2图中,CONVERT管脚一直为高,在EOC管脚为低时读取通道码值。目前设计时序与手册时序相同,但仍无法得出正确码值。

目前我只有将CFR设为0xEFD或0xFFD,使用Manual-Trigger:读取完一个通道后将CONVERT置低后再置高读取通道数据能够进行正常读取,设计为Auto-Trigger时不论按照何种方式读取,仍不对。

赞(0)
未经允许不得转载:TI中文支持网 » ADS8331使用问题
分享到: 更多 (0)