Other Parts Discussed in Thread:ADS8689
设置单极性5.12V
ADS8689_ReadWrite(ADS8689_WRITE_FULL, ADS8689_RANGE_SEL_REG, 0x000B); // 单极性5.12
Delay_ms(100);
ADS8689_ReadWrite(ADS8689_WRITE_FULL, ADS8689_DATAOUT_CTL_REG, 0x7d00); //Value output is the conversion data
每秒读一次转换值
ADS8689_ReadWrite(ADS8689_NOP, 0x00, 0x0000);
ADS8689_ReadWrite(ADS8689_NOP, 0x00, 0x0000);
这个转换值要通过什么公式计算出电压是多少伏?
Amy Luo:
您好,
用该器件二进制格式的输出乘以LSB值,LSB值请查看数据手册7.3.8 ADC Transfer Function部分,对于参考电压VREF=4.096 V,表4列出了与不同输入范围相对应的LSB值。
,
user6235274:
如您所说,设置ADS8689量程为单极性5.12V,LSB为78.125uV,AIN_P输入电压为0V,读取二进制数值0x7E83,乘以LSB之后为2.530V。我在网上找到一个公式 x = (float)(5.12*(temp-32768)*4.096/65536);是这样计算的,现在不知道怎样正确计算?
,
Amy Luo:
根据数据手册Figure 65.输入电压为0的话,输出code应该也是0,所以请检查您的寄存器设置和读取数据时序是否正确
,
user6235274:
ADS8689_ReadWrite_Simulation(ADS8689_WRITE_FULL, ADS8689_RANGE_SEL_REG, 0x000B); // 单极性5.12
Delay_ms(100);
ADS8689_ReadWrite_Simulation(ADS8689_WRITE_FULL, ADS8689_DATAOUT_CTL_REG, 0x7d00); //Value output is the conversion data
Delay_ms(100);
我只是设置了这两个寄存器,没有其他设置,并且能够正确读出这两个寄存器的值,不知道该从哪里入手解决。
,
Amy Luo:
您可以用示波器测量下类似数据手册Figure3或Figure4的SPI通信时序图吗
,
user6235274:
我使用软件模拟了初始化时序
,
Amy Luo:
这几个时序图都是您写入寄存器的操作,请注意02地址寄存器Device ID register不能进行写操作
您上面帖子说您可以正确读取寄存器值,那么我认为您读取AD转换值出现了问题,您可以附上您读取AD转换值的时序波形图吗,即CONVST/CS,SCLK,SDI 和 SDO波形图