微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS7953 操作问题请教

ADS7953 操作问题请教

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

请教一下ADS7953  研究了好几天了 就是读不出来数据

1.初始化 我如果不配置的话 我就写手动模式的配置 

0x19c0  我看着要连续写入三次 然后才能进入手动模式 不明白是什么意思 

我的写入是

CS 拉低

0x19c0

CS拉高      连续写入4次   资料上写的是第一次写什么无所谓 

然后我就读通道的数据 0x1180 读哪个通道的数据都是0xe000

我用的是16BIT的 SPI读写  不知道是哪不对 

读数据错误, 这类问题, 应该首先验证一下时序波形, 最好用示波器来看

收发数据问题, 首先验证时序吧

从手册看,这个器件工作电源可以到5V, 但VREF 不能超过 3V.

另外 SCLK 信号作为采样转换的时钟, 不要太吝啬提供 SCLK 信号哦

好的 ,我再查一下 相关的时序  。 电路是按DEMO提供的进行设计的,没有问题。

谢谢了,有问题我再跟帖。

上边是 CLK 加 SI 

下边是 CLK加 SO

我操作在手动模式 不管发送什么数据 回的都是这个波形 0x05dd

而且 高4位没有通道数 不知道为什么 

以下是配置到手动模式的程序

/* Frame:n-1 Device operation in Auto 1 orAuto 2 mode */
ADC_CS_ON;
SendByte(0x1fc0);
ADC_CS_OFF;

delay_ms(1);

/* Frame:n Request for Manual mode */
ADC_CS_ON;
SendByte(0x1fc0);
ADC_CS_OFF;

delay_ms(1);

/* Frame:n+1 Entry into Manual mode */
ADC_CS_ON;
SendByte(0x1fc0);
ADC_CS_OFF;

delay_ms(1);

/* Frame:n Operation in Manual mode */
ADC_CS_ON;
SendByte(0x1fc0);
ADC_CS_OFF;

以下是读取通道的值 发送哪个通道回来的值都是0X05DD

ADC_TI_Read(0x13c0);

这个好事了吗  我用AVR 控制的ADS7590   我直接用SPI给她发数据0x18 00(通道0)   他就会给我回数据了   但是我切换通道1   有的时候就切换不过去采集的数据还是采集的通道0的数据  ,有的时候还能切换 但是不稳定  不知道是什么原因

你在切换的时候加个延时试一下,切换的过程到稳 定可能需要一定的时间。

while(1)
{

_delay_ms(300);

CSN_0;                                       //SPI通讯使能引脚拉低
_delay_us(22);
SPI_MasterTransmit(0x18);      //采集通道0数据
data[0]=SPI_MasterReceive(); //接收第一个个字节数据
SPI_MasterTransmit(0x80);     //发送第二个字节数据
data[1]=SPI_MasterReceive();//接收第二个字节数据
_delay_us(22);                         //延时22us后将SPI使能拉高
CSN_1;
_delay_ms(300);                      //间隔300ms后采集通道1 的数据
CSN_0;                                   // //SPI通讯使能引脚拉低
_delay_us(22);
SPI_MasterTransmit(0x18);      //采集通道1数据
data[2]=SPI_MasterReceive(); //接收通道1数据
SPI_MasterTransmit(0x80);      //采集通道1数据
data[3]=SPI_MasterReceive(); //接收通道1数据
_delay_us(22);
CSN_1;

channel[0]=(data[0]&0xf0)>>4; //channel[0]表示通道0
channel[1]=(data[2]&0xf0)>>4; //channel[1]表示通道1

val1=(((data[0]&0x0f)<<8)|data[1]);//vai1表示通道0     12位数据采集结果
val2=(((data[2]&0x0f)<<8)|data[3]);//vai1表示通道1     12位数据采集结果
Uart_printf("%s %x %d %s %x %d\r\n","channe_l_val=",channel[0], val1,"channe_2_val=",channel[1], val2);//将采集出来的数据打印出来

这中间加了300ms的延时了  

已经加了300ms的延时了     这么长的时间应该足够了

拿示波器看看MUX的时序 和SPI的对应关系吧 估计就差这点 

你用GPIO控制过切换么

你说的MUX时序是什么意思呢?  通过GPIO怎么控制切换呢,是控制GPIO0,1,2,3 拉低相应的引脚控制吗

你用的ARM跑的系统 还是裸机  下断点 看MUX切没切过去 对SPI的时序再

GPIO我以前看半也没搞明白是干什么的,可能是控制信号选择的吧。

怎么看MUX切没切过去啊   用AVR跑的裸机     用示波器掐的信号都对  应该是正确的   不然不可能读出正确的数据

请问 问题解决了吗?

大神你的问题解决了吗?  我想问下你这个怎么配置 

大神,请问你的ADS7953调通了吗,能否说一下你的SPI配置吗?

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

网站地图

Top