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

ADS1256: 采样率30k的疑问,无法通过spi获取到频率是30k 24bit的采样数据

Part Number:ADS1256

你好,最近使用ADS1256,后端通过SPI连接STM32获取采样数据。

我想达到的目标是:采样率为30K的单路采样,并通过SPI将数据以每秒30K 24bit的频率输出。

目前遇到的问题是:

1. 发送一次RDATAC命令,连续读取数据,但spi无法以30K的频率获得数据。现象是spi的sclk有波形,且满足时序要求,但DOUT管脚无输出。(10sps时,spi可正常通信)

2. 数据手册 Table 15. Data Settling Delay vs Data Rate,显示在SPS为30k时,需要5个DRDY周期才能获得新的数据(New VIN Data),如果按照这个理解,是不是ADS1256芯片无法提供30k的采样频率(至少用户无法得到每秒30k次的采样数据)?

3. 如果以上理解有误,用什么方式可以满足我的使用需求?

我的使用流程如下:

1. 初始化

// 高位在前Most Significant Bit First,

// 自校准Auto-Calibration Enabled

// 开缓冲 Buffer Enabled

ADS1256WREG(ADS1256_STATUS,0x06);

 

//放大倍数=1 PGA=1

ADS1256WREG(ADS1256_ADCON,0x00);

 

//SPS=30k    

ADS1256WREG(ADS1256_DRATE, ADS1256_DRATE_30000SPS);

 

//IO output  

ADS1256WREG(ADS1256_IO,0x00);

 

2. 设置通道(MUX)

//AIN0 AINCOM

ADS1256WREG(ADS1256_MUX, B00001000);  

3. 同步(Synchronize the A/D Conversion),WAKEUP(Completes SYNC and Exits Standby Mode)

SPI_WriteByte(ADS1256_CMD_SYNC);

SPI_WriteByte(ADS1256_CMD_WAKEUP);

 

4. 连续读取命令 Read Data Continuously

SPI_WriteByte(ADS1256_CMD_RDATAC);

5. 循环读取数据

While(1)

{

    //wait DRDY to Low 每次循环等待DRDY为低后开始读取

    while(HAL_GPIO_ReadPin(GPIOB, GPIO_ADS1256DRDY_Pin) == GPIO_PIN_RESET);

    while(HAL_GPIO_ReadPin(GPIOB, GPIO_ADS1256DRDY_Pin) == GPIO_PIN_SET);

 

   //recv Data, 3 Bytes

   SPI_Recv_Byte(ADSdata, 1);

   SPI_Recv_Byte(ADSdata+1, 1);

   SPI_Recv_Byte(ADSdata+2, 1);

}

Amy Luo:

您好,

1、按预期数据速率可以正常输出数据的最大数据速率是多少?SPI时钟 sclk是多少?以看下您使用的SPI时钟是否满足时序要求。

2、 Table 15 是数据稳定延迟,应该不影响数据速率。如果使用多路复用器会影响数据速率,如Table 14表示所示。

,

user4869866:

1.我的spi的SCLK是250ns高电平,250ns低电平的方波,两个SCLK间隔也是10us,设置都满足手册要求,并且可以正常写入寄存器,低频时可以正常读取AD数据。我把SCLK改成400ns高电平,400ns低电平的方波也无法利用RDATAC连续读取。

2.我没有多路复用,如果用户不能得到30K的稳定数据,例如只能得到6K的稳定数据,那么采样率不应该是6K才对?

3.我试过,sps设置为30k,每次DRDY低电平时,发一次RDATA,读取3个byte,可以读到数据,最终获得的数据率约为5~6k。

,

Amy Luo:

1、您使用的CLKIN是多少?SCLK有最小和最大周期限制,是否满足下面表格要求:

2、如果是单通道连续采集的话,应该是设置多少就是多少

3、RDATA不是连续读取,数据速率会低于设置速率。

,

user4869866:

您好,

Amy Luo 说:2、 Table 15 是数据稳定延迟,应该不影响数据速率。

根据您这句话的意思,“2、 Table 15 是数据稳定延迟,应该不影响数据速率。”,ADS1256达不到30k稳定数据输出,如果我需要30k数据,且每帧数据都代表当前最新AD值,是做不到的,对吗?

 我的CLKIN是7.68MHz,SCLK period 为500多ns(800ns也尝试过),介于数据手册要求的4*tclkin~10*tdata。

,

Amy Luo:

我理解如果使用单通道连续采集的话,应该是可以达到30KSPS的,您测试可以正常输出数据的最大数据速率是多少?

,

Amy Luo:

您使用1KSPS或2KSPS数据速率是否可以正常采集数据?如果不可以的话,我建议您附上通信波形(CS、DRDY、SCLK、DIN、DOUT),我想具体看下通信时序

,

user4869866:

好的,今天我把几个sps下的spi通信波形附上。

另有一个关键问题,我想通过您,咨询一下TI官方,

SPS=30k时,spi输出的每秒30K×24bit数据是不是每一个都是稳定的最新值?

如果不能满足,我需要更换方案。

,

Amy Luo:

好的,我去确认下这一点。

,

Amy Luo:

我已确认。表15中的信息与通过信道的多路复用有关。当设备通电和改变输入多路复用器时,ADC数字滤波器需要一些时间来稳定。如表15所示,当以30kSPS的速度采样时,这需要5个DRDY周期。这意味着第一次结算的转换结果将在约30 kSPS/5=6 kSPS时可用。

但是如果在同一通道上连续采样,则在每个后续DRDY周期后,第二个和后续转换结果将在每个DRDY信号时有效。

因此,第一次转换结果将延迟表15中指定的时间,但第一次转换结果之后的所有转换结果将以选定的数据速率(在您的情况下为30kSPS)有效。

所以,如果在同一通道上连续采样不能达到30KSPS的话,应该是通信时序上出了问题,还是建议您附上通信波形具体看下通信时序。

,

user4869866:

收到,感谢您的深入解答!我再确认一下时序的问题,如果周末还没有实现,再附上波形请教!

,

Amy Luo:

好的

,

user4869866:

感谢您的耐心解答,目前已成功接收30K数据。

赞(0)
未经允许不得转载:TI中文支持网 » ADS1256: 采样率30k的疑问,无法通过spi获取到频率是30k 24bit的采样数据
分享到: 更多 (0)