Part Number:ADS8671
我们在使用ADS8671采集数据时,采集的是放大器放大后的信号,fpga在对ADS8671没有任何写入操作,也就是使用默认配置,采集的幅值为+-12.288V,使用示波器观察运放放大后的信号,再与fpga采集的信号对比,发现fpga采集的信号的幅值为放大后信号缩小的4.5-5.5倍。电路如图。
Kailyn Chen:
您好,您的意思是放大器输出+-12.288V是没有问题的是吧?但是发现fpga采集的信号的幅值为放大后信号缩小的4.5-5.5倍,这个是测量的哪里? ADC的输入端吗?
,
?? ?:
放大器的输出是正常放大后的信号,也就是ADC的输入是放大后的信号,两个引脚都测量过,然后用fpga进行采集,发现采集的信号就是缩小的信号了。还测试过,正常的话给ADC输入1.5mv是可以检测到的,但是实际测试时,只有输入5mv及以上的信号才能被检测,ADC读取的值+1
,
Kailyn Chen:
您好,抱歉回复晚了,不知您的问题解决了没。
?? ? 说:放大器的输出是正常放大后的信号,也就是ADC的输入是放大后的信号,两个引脚都测量过
ADC的输入即为运放的输出,, 根据您的配置,输入电压范围应该是在+-12.288V之内,此时两个引脚的测试电压都是正常的是吗?
那么运放的输出电压是多少?
?? ? 说:正常的话给ADC输入1.5mv是可以检测到的,但是实际测试时,只有输入5mv及以上的信号才能被检测,ADC读取的值+1
现在遇到的问题是,ADC 输入只有在5mV以上才能检测到是吗?您是怎么测试的。
因为如果配置了输入为+-12.288V范围的话,1.5mV也在这个范围内,是能采集到的
,
?? ?:
您好,问题还是没有解决,ADC转换后的电压,就是会比放大器的输出电压小4.5-5.5倍
,
Kailyn Chen:
ADC输入电压范围是多少?output code读出来是多少? SPI时序正常吗?附上您的时序看下。
,
?? ?:
adc 的输入电压范围是+-12.288V,参考电压测量了REFIO引脚也是4.096V,也就是上电后默认的,SPI时序如图
,
Kailyn Chen:
您好,+-12.288V的话,-12.288V对应的code是0000h,12.288V的话对应的是3FFFh。
CS由高到低的过程中,当CS为low的时候,先读取的最高位,为3FFFh,是没问题的。
您提到的电压缩小了4.5~5.5倍,是根据output code*LSB 计算的Vin,然后确定的是吗?
,
?? ?:
是根据output code *0.0015-12.288V 来计算Vin的
,
Kailyn Chen:
您好,您的计算有误,Vin=output code*LSB.而LSB=m*Vref/Gain
您可以参考这两篇FAQ, 关于怎样将ADC的输出code转化为电压的。有part 1和part 2,介绍的非常详细,希望对您有所帮助:
https://e2e.ti.com/blogs_/archives/b/precisionhub/posts/it-s-in-the-math-how-to-convert-adc-code-to-a-voltage-part-1
https://e2e.ti.com/blogs_/archives/b/precisionhub/posts/it-39-s-in-the-math-how-to-convert-an-adc-code-to-a-voltage-part-2
,
?? ?:
您好,在尝试更新算法后,(也就是当最高位为0时是正电压,为1时是负电压,且是按照补码形式传输。转化为有符号的十进制以后乘上0.0015V就是实际的输入电压。)这样得出的结果的幅值依旧出现了缩小了4.5~5.5倍
,
Kailyn Chen:
您好,那说明ADC 输出code是不对的。有尝试更换一块新的ADC试试吗,是否还是同样的结果呢。
,
?? ?:
您好,我们一共使用了25个ADC结果都是这样的。
,
Kailyn Chen:
好的,我这边再看下您的这个问题,尽快给您答复。
,
Kailyn Chen:
?? ? 说:在尝试更新算法后,(也就是当最高位为0时是正电压,为1时是负电压,且是按照补码形式传输。转化为有符号的十进制以后乘上0.0015V就是实际的输入电压。)这样得出的结果的幅值依旧出现了缩小了4.5~5.5倍
您好,当ADC输入为+-12.288V 输入的时候,得到的output code是多少?
,
Kailyn Chen:
您好,还有几个问题要和您确认下:
REFIO和REFCAP的电压都是多少? +-12.288V 的输入是在靠近ADC输入端测量的吗?要确保它是采样电压的最大最小值,而不是在其他位置测量的。还有麻烦提供下SCLK,CS,SDI和SDO的SPI的时序,建议稍微放大一些的时序图看下。
,
?? ?:
您好,REFIO和REFCAP的电压都是4.096V,输入是在ADC的引脚上测量的。ADC输入为+-12.288V,我们需要再次实验,请稍等。时序如图,时钟为100M,转换时候也就是CS为1时,总时长为700ns,传输时间也就是CS为0,且SCLK周期为14,SCLK变化频率只有50M,图中转换的结果为11100111100001,因为我们只需要ADC的输出因此写入的SDI一直为0,
,
Kailyn Chen:
逻辑分析仪的时序太紧密了,可以用示波器测量下时序附上吗?
另外,SPI的SCLK是100Mhz还是50Mhz? 如果是100Mhz,超过的了最大66.7MHz的要求。
麻烦不上示波器测量时序再帮您分析下。
,
?? ?:
您好,所有时序图将放在下面,请您查看:
agnd:
avdd:
refIO:
refcap
refgnd:
cs:
SCLK:
当ADC的AIN_P没有输入时,SDO如图:
当ADC的AIN_P输入时,
SDO如图:
,
Kailyn Chen:
好久没有收到您的回复, 波形看到了,我这边会继续跟进您的问题。
,
Kailyn Chen:
抱歉回复晚了。
关于您的问题
1.建议降低了 SCLK 频率并再次验证。因为从波形来看, SCLK 显示了明显的干扰信号、这可能会导致读数错误、您必须弄清读数的来源并将其删除。
您的基准电压是正确的、即使它不是很精确,因为您正在使用示波器进行检查。
另外,在没有 AIN_P 输入的情况下查看 SDO 上的代码是正常的、因为当 AIN_P 悬空时、ADC 将输出内部偏置电压。 信号连接到 AIN_P 输入后、ADC 将输出模拟输入的转换代码。
使用可用的 AIN_P 输入时、很难检查 SDO 输出是否正确、因为 SDO 和 SCLK 的时序显示在不同的图中。 您能否在相同的时间内捕获 SDO、SCLK、/CS 和 SDI? 低于12V 的直流输入将非常适合用于测试目的、因为12.3V 超出了最大输入范围。
,
?? ?:
好像您给出的算法有误,与手册上不一致,您给的是第一位为1时是负电压,但是手册上是当最小时是低电压。
,
Kailyn Chen:
您好,这个问题比较久了,您指的哪里的算法和数据手册上的不一致?
,
?? ?:
您好,您的计算有误,Vin=output code*LSB.而LSB=m*Vref/Gain
您可以参考这两篇FAQ, 关于怎样将ADC的输出code转化为电压的。有part 1和part 2,介绍的非常详细,希望对您有所帮助:
https://e2e.ti.com/blogs_/archives/b/precisionhub/posts/it-s-in-the-math-how-to-convert-adc-code-to-a-voltage-part-1
https://e2e.ti.com/blogs_/archives/b/precisionhub/posts/it-39-s-in-the-math-how-to-convert-an-adc-code-to-a-voltage-part-2
您在这里给出的回复,这里面的计算是补码二进制,也就是说当14位全为1的时候,转换后的电压应该是负的,但是手册里面是直接二进制,当14位全为1 的时候,转换后的电压应该是正的,也就是12.288-0.0015V您对比一下
,
?? ?:
您好,我们查到原始的问题的答案了,也就是为什么会出现时衰减,原因是器件的带宽不够,器件衰减0.1dB是2.5kHZ,我们输入的信号是40kHZ,所以会出现衰减