您好 ,我有关于 ADS8168的问题。
我在自己的设计板上使用 ADS8168。
我已经测试了与 ADS8168的 SPI 通信。
WRITE_cmd (ADCCMD_WR_REG、0xFF、0x55);
WRITE_cmd (ADCCMD_RD_REG、0xFF、0x0);
在地址0xFF 上对数据0x55执行写操作、并读取地址0xFF、其输出数据为0x55;
WRITE_cmd (ADCCMD_WR_REG、0xFFFF、0x66);
WRITE_cmd (ADCCMD_RD_REG、0xFFFF、0x0);
在地址0xFF 上对数据0x66执行写操作、并读取地址0xFF、其输出数据为0x66;
因此我认为 SPI 通信是可以的。
I init ADS8168并在自动模式下工作。
//启用写入
WRITE_cmd (ADCCMD_WR_REG、REG_ACCESS、REG_ACCESS_BITS);
//write_cmd (ADCCMD_RD_REG、REG_ACCESS、0x0);
//除 ref/2缓冲器之外的所有加电
WRITE_cmd (ADCCMD_WR_REG、REG_PD_CNTL、PD_CNTL_PD_REFby2);
//数据类型:ADC 值+ 4位通道 ID
WRITE_cmd (ADCCMD_WR_REG、REG_DATA_CNTL、DATA_CNTL_FORMAT_Chid);
// Vref = 4V096
WRITE_cmd (ADCCMD_WR_REG、REG_Ofst_CAL、Ofst_CAL_4V096);//REG_SDO_CNTL4
WRITE_cmd (ADCCMD_WR_REG、REG_SDO_CNTL4、SDO_CNTL4_SEQSTS_CFG);
WRITE_cmd (ADCCMD_WR_REG、REG_SEQ_START、SEQ_START_START);
while (readpin (SEQSTS)!= 0)
{
chanel2=readChannelCustom();
chanel6=readChannelCustom();
}
可读信道自定义的趣味学习
uint16_t readChannelCustom()
{
//建立时间
for (int i=0;i<50000;i++);
unsigned char TX_DATA[2]={0、0};
unsigned char rx_data[2]={0、0};
XSpi_Transfer (SpiInstance、TX_DATA、Rx_DATA、2);
返回 Rx_DATA[0]<< 8 | Rx_DATA[1];
}
当我在通道0中将输入电压从0.4-2.0更改为0.4-2.0时,结果为数据0x8e1。
那么哪一步是错误的?