Part Number:ADS1263Other Parts Discussed in Thread: TIPD188
读到的adc code总是比实际的差分电压差小2倍
还有直接读取和命令读取要怎么区分
Amy Luo:
您好,
1、ADS1263输出代码是二进制补码格式,最高位是符号位,如下数据表截图,您是怎样将输出代码换算成输入电压的?
换算方法应该是输出代码十进制值*1LSB,1LSB=VREF / (Gain · 2^(N–1) )
您可以告诉我在输入直流电压时的输出代码、基准电压和使用的几bits的ADC吗?
2、数据手册 9.4.7.1 Read Data Direct (ADC1 Only)部分和 9.4.7.2 Read Data by Command部分,分别讲了两种读取方法,并且有对于的时序图。
主要区别是:
直接读取不需要发送操作码或命令,或者说DIN信号线可以直接拉低,主控端没有输出;
命令读取主控端需要发送操作码或命令;
需要注意的是ADC2只能命令读取,不能直接读取。
,
? ??:
我用的是ADC1,32位的,换算也是VREF / (Gain · 2^(N–1) )。
之前看到一个问题说少读一位,导致整个ADC码右移一位,
关于读取数据问题,在读数时我发读取命令和不发读取命令感觉没什么区别,而且我也找不到发命令读取方式读数据的寄存器地址
,
Amy Luo:
下面是两种读取方式的主要区别:
1、直接读取转换数据要求从 DRDY 拉低到读回期间不发生串行活动,否则的话读回的数据无效,因为如果在回读过程中发送命令,ADC 将执行该命令,可能导致数据中断。另外, 在下一个 DRDY 之前,必须完成16个 fCLK 周期的数据读取操作,否则旧数据将被新数据覆盖。 在直接读取转换数据模式下可以通过继续 SCLK 来重复输出转换数据,这样可以在每个转换间隔内多次读取相同的数据以进行比较来验证通信无误。
2、在命令读取模式下,不需要与 DRDY 同步,因此可以随时读取数据。 除了对 DRDY 或 DOUT/DRDY 进行硬件轮询以确定何时准备好 ADC1数据外,还可以通过读取状态字节的位 ADC1和 ADC2来对 ADC 进行软件轮询。 如果 ADC1或 ADC2状态位为1,则 ADC1或 ADC2数据是自上次 ADC1或 ADC2读取操作以来的新数据。 如果在新数据准备就绪前再次读取数据,则状态位为0,并返回以前的数据。必须为每个读取操作发送读取数据命令。ADC 在读取操作完成前不会响应命令,或者需要通过拉高CS 来提前终止读取操作。
? ?? 说:而且我也找不到发命令读取方式读数据的寄存器地址
您这里应该是说的ADC data-holding register,这里您不需要知道其寄存器地址,在使用命令读取时,发送读取操作码后,寄存器里的值或者说转换数据会在SCLK 的上升沿输出数据到DOUT,主控端只需在设备DOUT管脚处根据时序读取数据就可以了。
关于“读到的adc code总是比实际的差分电压差小2倍”的问题,建议您在输入已知直流电压时,用示波器查看SPI输出波形与程序输出代码是否对应来检查是哪里的问题
,
? ??:
请问我可以这样理解吗:直接读取是从DOUT,命令读取也是从DOUT
然后请问现在这个芯片有STM32F103的驱动源码了吗?
,
Amy Luo:
? ?? 说:请问我可以这样理解吗:直接读取是从DOUT,命令读取也是从DOUT
是的,具体您可以看数据手册 图 9-43. Data Read Direct 和 图 9-44. Read Data by Command 两种情况下的时序图;
? ?? 说:然后请问现在这个芯片有STM32F103的驱动源码了吗?
随TIPD188参考设计一起发布了一些 ADS1263示例代码,但其中有许多不必要的内容,我建议您只查看 ADS126x.h、ADS126x.c 文件。请在下面链接“Software”部分下的“TIPD188 Firmware (Rev. A) ”处下载,我希望这能帮你解决问题!
https://www.ti.com/tool/TIPD188