我有一位客户有以下问题:
我目前正在研究一个使用 ADS1259 24位 ADC 的项目、并且遇到了一个问题、我希望您能帮我解决。
下面是我们的 IC 配置代码。 SPI 总线以4MHz 的频率运行、但我也已经在2MHz 的频率下运行了我将在下面描述的所有情形、结果相同。 写入块包含写入命令和要写入的寄存器数减1、后跟寄存器数据。 读取块发送读取命令、然后发送要读取的寄存器数量减1、最后使用 stopRC 命令停止连续运行模式、以确保我们可以写入 IC。 需要指出的一个方面是配置例程开始时的250ms 延迟。 这是为了确保在 IC 完全上电并释放内部复位之前、我们不会开始写入 IC。 250ms 过长、但正是我们在早期开发中使用的。
配置器件时、我们将向器件寄存器写入以下值:
Reg0:0x05–Rbias 被启用、SCLK 超时被启用
寄存器1:0xC0–启用超出范围标志、启用校验和、选择内部基准
Reg2:0x05–选择栅极控制模式、1200SPS
Reg3:0x00–无偏移校正
Reg4:0x00
Reg5:0x00
Reg6:0x00–无满量程校正
Reg7:0x40
Reg8:0x00
回读为:
Reg0:0x25–出厂 ID 信息、Rbias 启用、SCLK 超时启用
寄存器1:0xC0–启用超出范围标志、启用校验和、选择内部基准
Reg2:0x45–选择了外部时钟(正确、我们有一个外部晶振)、选择了栅极控制模式、1200SPS
Reg3:0x00–无偏移校正
Reg4:0x00
Reg5:0x00
Reg6:0x00–无满量程校正
Reg7:0x40
Reg8:0x00
我注意到的一个方面是、寄存器0中的位7应始终返回1、并且是只读寄存器。 软件位中的回读作为0返回。
配置 IC 并查看回读结果后、我们将 START 引脚设置为高电平以开始1200SPS 转换。 此时 DRDY 引脚的行为符合预期,可在随附 zip 文件的“DRDY 1200SPS”波形中看到。 DRDY 线路每1/1200秒拉低、并在假设为第一个 SCLK 边沿时拉高、这与数据表中的栅极控制模式说明一致。 DRDY 引脚馈入处理器上的数字输入引脚、该引脚用作每次新转换准备就绪时读取数据的中断。 以下是处理此读取的代码:
当在 AINP 和 AINN 上施加外部电源时、此时会出现主要问题。 施加此电压时、转换将完全停止。 根据我们的测试、只要 AINP 到 AINN 的电压电平高于 GND、就不相关。 这可以在随附的 zip 文件中标记为“当 AINP 提供时 DRDY 行为”的波形中看到。 在调试模式下运行 MCU 并监控 rxBuffer (存储从 IC 读取的数据)时、读取的值在转换停止时看起来是正确的、但之后不能读取更多数据、因为 DRDY 线始终处于高电平。 在关闭外部电源、关闭 MCU/ADC 的电源、然后重新打开 MCU/ADC 的电源后、DRDY 线路会再次正常运行、直到外部电源再次应用到 AINP。
此外、在 zip 文件中、有显示各种电源(AVDD、DVDD、VREFP)在应用 AINP 电源时的行为的波形。 所有这些电源看起来都很好、此时没有表现出任何奇怪的行为。 此外,还有一个标记为“CS and SCLK”的波形,显示芯片选择在整个数据被读回时被保持。 CS 被拉低至低电平与第一个时钟边沿之间存在大约10us 的延迟、该边沿应符合 IC 的规格。 此外、该时间与 DRDY 被拉至低电平与第一个时钟边沿之间的时间类似、因此也应处于规格范围内。 下面是 PCB 上当前实现的 IC 电路的屏幕截图。 需要指出的两个方面是、已修改复位线路、使其始终拉高、并已修改 SYNCOUT 引脚、使其通过1MOhm 电阻器下拉、如数据表所述。
最后需要注意的一点是、如果我将 SPS 设置为默认的10SPS、转换不会停止、DRDY 会在应用 AINP 时继续、 但是、从 IC 读取的数据会显著跳转、然后锁存到对应于满量程 Vref 的0x7FFFFF。
我现在被骗了、想知道为什么会发生这种情况、您是否可以帮助解决问题、或者是否可以让我与能够提供帮助的人联系。 下面是一些看起来也不符合预期的行为。
关于栅极控制模式下的 DRDY 行为、应在拉低后的第一个上升时钟沿上拉为高电平。 波形“DRDY 和 SCLK”显示了第一组时钟脉冲,作为读取命令,请勿将 DRDY 线路复位为高电平。 直到 DRDY 被拉至高电平时从 IC 输出第一组数据。 此外,查看“SCLK 下降沿上的 DRDY 复位”波形,DRDY 线似乎停留在下降沿而不是数据表中所述的上升沿。 这可能是有原因的吗?
提前感谢您的帮助。