尊敬的所有人:
我在公司进行了一个学徒项目、从 ADS1178中获取数据时遇到了一些困难。 我使用 TDM 固定位置的 SPI 接口和 Arduino MEGA2560对 SPI 接口进行位拍。 VREF 为2.5V、Vcc 为5V。我使用所有通道、并以250kHz 的频率为 ADC 计时、因为我不需要高数据速率。
问题如下。 我在差分输入端测量到2.49V。 根据我的理解、该 ADC 应能够在其差分引脚上测量高达5V 的电压。 示波器显示位值约为1120DEC、差分输入电压为2.45V。这将导致差分输入电压高于 2.5V。我的 Arduino 界面也给了我的范围显示的位掩码,所以我假设它工作正常,所以我丢失了一些东西。
Arduino 代码
以下代码会执行位拆裂:
空 DataRead ()
{
for (int n = 0;n < 128;n++)//运行128次循环以捕捉128位
{
digitalWrite (52、HIGH);//将 SCKL 设置为 HIGH
delayMicroseconds (25); //等待25us
digitalWrite (52、low);//将 SCKL 设置为低电平,之后由 ADC 将数据移出
//delayMicroseconds (5);//等待5 us
DataBits [n]= digitalRead (50);//读取 ADC 的 dout 引脚并写入 bool 阵列
delayMicroseconds (15);//等待 SCKL 再次置于高电平
}
然后、根据计算从 DEC 数值到电压的电压:
Voltage = DecVal * LSB;//转换为电压、其中 LSB = 2.5V / 2^15
Voltage = UREF- Voltage;//设置与 UREF 相关的值、UREF=2.5V
这是毫无道理的。 我预计 DEC 值约为16kDEC (5V 的半输入范围、共2.5V 输入、32kDEC 范围)、但我在1100DEC 以及代码上获得的信息更多。 我的想法不多、想问是否有人有此 ADC 的使用经验、是否有人可以分享或看到我在原理图/代码中可能犯的错误。 我想我误解了一些东西,但我不能把手指放在它的生活。
ADC 原理图:
我希望他们是可读的,提前感谢你花时间在这方面!