您好!
我们遇到了该 ADC 的问题、该器件在运行一段时间后返回错误的测量值。 ADC 设置为按顺序读取4个 RTD 通道。 原理图如下所示。
我还链接了器件寄存器配置。 通过器件的运行、我们定期更改 INPMUX、IDACMAG 和 IDACMUX、以便为单次转换配置不同的通道。 这是通过写入寄存器、然后读取寄存器来完成的、以确认其状态已正确更改。 这对于已经生产的大量系统来说是很好的。 许多系统遇到了一个故障点、其中 ADC 不再返回反映 RTD 值的测量值。 它可以是0或返回 MAX。 我现在有一个具有此行为的单元、并且正在运行测试以尝试隔离原因。
即使器件发生故障、寄存器看起来也是正确的、这让我感到很惊讶。 我们怀疑某些通信噪声可能会导致此问题、但无法找到任何问题。
一个有趣的寄存器是状态寄存器。 该 POR 位永远不会在固件中清除、我们也不会写入该寄存器。 在故障芯片上、该位被清除。 值得注意的是、软件复位命令加上重新初始化器件寄存器可以解决此问题。
您以前是否遇到过类似问题、或者您是否有与此相关的建议?
感谢您的任何帮助!
最棒的
Eddie
寄存器 |
名称 |
默认值 |
故障状态 |
预期初始化(通过检查代码) |
00 |
ID |
0°C |
0°C |
|
01 |
状态 |
80 |
00 |
|
02 |
INPMUX |
01 |
-- |
|
03 |
PGA |
00 |
00 |
00 |
04 |
数据速率 |
14. |
37. |
37. |
05 |
参考 |
10. |
02 |
02 |
06 |
IDACMAG |
00 |
-- |
|
07 |
IDACMUX |
FF |
-- |
|
08 |
VBIAS |
00 |
00 |
|
09. |
系统 |
10. |
11. |
11. |
0a |
保留 |
00 |
00 |
|
0b |
OFCAL0 |
00 |
00 |
|
0°C |
OFCAL1 |
00 |
00 |
|
0D |
保留 |
00 |
00 |
|
0E |
FSCAL0 |
00 |
00 |
|
0f |
FSCAL1 |
40 |
40 |
|
10. |
GPIODAT |
00 |
00 |
|
11. |
GPIOCON |
00 |
00 |
|
在对每个通道进行采样后持续更新和检查。