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

我使用两片ADC131A04级联,按照datasheet中的 Figure 96 进行连接的,

第一片工作在异步中断模式chipA,第二片工作在同步从模式,现在可以控制chipA,并且可以读出ADC数据,但是无法控制chipB。

调试过程如下:

===============代码部分===========

#if 1

ads_read_id();

//软重启
ads_sys_cmd(SYSCMD_RESET);
usleep(500000);
//ads_read_id();
//解锁芯片
ret = ads_sys_cmd(SYSCMD_UNLOCK);
if(ret == 0){
printf("[Info]解锁芯片成功\n");
}else{
printf("[Err]发送解锁芯片失败ret=0x%x\n",ret);
}

//配置模拟系统寄存器,1110 1000,
#define CHARGE_PUMP_ENABLED (1<<7)

ret = ads_write_reg(A_SYS_CFG, 0B01101000|CHARGE_PUMP_ENABLED);
if(ret == 0){
printf("配置A_SYS_CFG为0x%x,成功\n",0B11101000);
}

ads_read_reg(D_SYS_CFG, &regtemp);
#if 1
//配置数字系统寄存器
ret = ads_write_reg(D_SYS_CFG, 0B00111110);
if(ret == 0){
printf("配置D_SYS_CFG为0x%x,成功\n",0B00111110);
}
#endif 
#if 1
//配置CLK1
ret = ads_write_reg(CLK1, clk1_reg);
if(ret == 0){
printf("配置CLK1为0x%x,成功\n",clk1_reg);
}
//配置CLK2
ret = ads_write_reg(CLK2, clk2_reg);
if(ret == 0){
printf("配置CLK2为0x%x,成功\n",clk2_reg);
}
#endif 
//配置ADC_ENA
ret = ads_write_reg(ADC_ENA, 0B00001111);
if(ret == 0){
printf("配置ADC_ENA为0x%x,成功\n",0B00001111);
}
usleep(5000);
//发送WAKEUP命令
ret = ads_sys_cmd(SYSCMD_WAKEUP);
if(ret == 0){
printf("发送WAKEUP命令成功\n");
}
//发送锁定命令
ret = ads_sys_cmd(SYSCMD_LOCK);
if(ret == 0){
printf("发送锁定LOCK命令成功\n");
}

=============================================

先读取两片的FF04,如下图的逻辑分析仪的输出:

前面一段由于soc的问题,SCLK在CS下降时出现一个高电平脉冲,导致逻辑分析仪无法解析,但是软件是可以正常通信的。

后面一段就能看出,两片芯片都上报了FF04。

再看解锁命令的执行:

都成功了。

再看配置b寄存器:

也都成功了。

再看问题出现在配置c寄存器:

chipA回复正常,但是chipB回复都是全0x00.

下面是配置寄存器e的截图:

还是chipA成功,chipB回复的全0x00.

接下来看ADC数据的读取:

chipA能够读出数据,但是chipB读出来的后面是全0x00.

将chipA的数据放大看:

再把我的软件调试打印贴出来:

===============调试打印==============

spi string : SPI (fd=4, mode=1, max_speed=500000, bit_order=MSB first, bits_per_word=8, extra_flags=00) 
0xff 0x4 0x0 0x1 0xff 0x4 0x0 0x1 
0xff 0x4 0x0 0x1 0xff 0x4 0x0 0x1 
0xff 0x4 0x0 0x1 0xff 0x4 0x0 0x1 
0xff 0x4 0x0 0x1 0xff 0x4 0x0 0x1 
ads_sys_cmd 写sys命令[0x0011]的回复:0xff 0x04 0x00 0x01 0xff 0x04 0x00 0x01 
发送命令:cmd[0x0011] error
第一片接收:chip 1[0xff 0x04]
第二片接收:chip 2[0xff 0x04]
ads_sys_cmd 写sys命令[0x0655]的回复:0x06 0x55 0x00 0x01 0x06 0x55 0x00 0x01 
[Info]解锁芯片成功
[0]ads_write_reg 写reg[0x0b]数据[0xe8]的回复:[0x2b 0xe8 0x00 0x01 0x2b 0xe8 0x00 0x01 ]
配置A_SYS_CFG为0xe8,成功
[0]ads_write_reg 写reg[0x0c]数据[0x3e]的回复:[0x2c 0x3e 0x00 0x00 0x00 0x00 0x00 0x00 ]
[0]ads_write_reg 写reg[0x0d]数据[0x0e]的回复:[0x2d 0x0e 0x00 0x00 0x00 0x00 0x00 0x00 ]
[0]ads_write_reg 写reg[0x0e]数据[0xe0]的回复:[0x2e 0xe0 0x00 0x00 0x00 0x00 0x00 0x00 ]
[0]ads_write_reg 写reg[0x0f]数据[0x0f]的回复:[0x2f 0x0f 0x00 0x00 0x00 0x00 0x00 0x00 ]
ads_sys_cmd 写sys命令[0x0033]的回复:0x00 0x33 0x00 0x00 0x00 0x00 0x00 0x00 
发送命令:cmd[0x0033] error
第一片接收:chip 1[0x00 0x33]
第二片接收:chip 2[0x00 0x00]
ads_sys_cmd 写sys命令[0x0555]的回复:0x05 0x55 0x00 0x00 0x00 0x00 0x00 0x00 
发送命令:cmd[0x0555] error
第一片接收:chip 1[0x05 0x55]
第二片接收:chip 2[0x00 0x00]

ads131a04_read_adc
adcdatabuf:22 30 00 00 00 7d e2 00 06 06 a0 00 0b f5 5e 00 00 00 fb 00 00 00 00 01 2c 3e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 
STAT_1发现错误[0x30].
---->ADC input fault,ADC输入错误.
---->SPI fault.you shoult read STAT_S
0.009381        0.114962        0.228145        0.000073

请问一下,为什么第二片设备无法配置成功呢?