ADC芯片监控电压,通过scanner获取和I2C获取数据不一致

问题描述

ADC芯片监控电压,通过scanner获取和I2C获取数据不一致

L1管理板Ads78对象配置:

现在L1管理板上配置的ADC事件监控都存在事件告警

确认I2C测试方法没问题:

目前在OSFP测试I2C获取到的值经过换算后与电压表读值一致:

答案内容由AI生成,仅供参考:

解决方案

将防抖(Debounce)配置中的 IsSigned 属性改为 false
修改完成后重新编译升级,再次对比 Scanner 读取值与硬件实际电压,即可保持一致。

参考来源:文档 使用Scanner读取Adc芯片数据与实际不符问题分析(reference_id: 3)明确给出了此解决方案。

点击此处查看详细分析解答

ADC芯片监控电压:Scanner与I2C读数不一致分析

根据提供的上下文信息,该类问题已有明确的分析记录和处理方案。以下内容均来源于 Context 中的文档《使用Scanner读取Adc芯片数据与实际不符问题分析》及相关知识。

问题现象

在使用 Scanner 读取ADC芯片电压时,得到的值与通过 Chip 的 read 方法(直接 I2C 读取寄存器)获取的电压值不一致。

  • 直接使用 Chip 的 read 方法读取寄存器,所得电压值与硬件万用表测量值相符(例如 1040mV)。
  • 使用 Scanner 读取同一寄存器的值,结果明显偏低(例如 795mV)。
  • 导致多个 ADC 电压监控事件误告警。

定位过程

  1. 位读方式差异:Scanner 配置为按位读取(BitIO),使用 Chip 的 BitIO 方法尝试读取,得到与 Scanner 一致的偏低值。
  2. 防抖(Debounce)配置影响:问题的根源在于防抖配置中的 IsSigned 参数设置不当。
  3. 跟踪工具:若 hwproxy 版本 ≥ 1.90.19,可使用 tracechip 命令实时追踪硬件芯片的读写操作,辅助定位。

解决方案

将防抖(Debounce)配置中的 IsSigned 属性改为 false
修改完成后重新编译升级,再次对比 Scanner 读取值与硬件实际电压,即可保持一致。

参考来源:文档 使用Scanner读取Adc芯片数据与实际不符问题分析(reference_id: 3)明确给出了此解决方案。

背景知识(来自上下文)

  • ADC电压监控通常使用 midavg_u6(无符号中值平均6次防抖)等防抖策略(文档5、6)。
  • Scanner 读取 ADC 数据时,其值经过防抖处理,若 IsSigned 配置错误(如误设为 true),会导致电压换算偏差。
  • 直接使用 Chip 的 read 方法 读取寄存器则不受防抖影响,因此能反映真实硬件值。

建议操作步骤

  1. 检查 ADC 相关 Scanner 的防抖配置项(通常在 CSR 文件中)。
  2. 确认其中的 IsSigned 字段,若为 true,则改为 false
  3. 重新打包固件并升级,再次验证 Scanner 读取值与实际电压是否一致。
  4. 若需要进一步追踪,可使用 tracechip 工具监控芯片访问数据流。

注意:以上分析完全基于提供的 Context 内容,未引入外部知识。若需更详细的防抖配置指南,可参考上下文中的《CSR对象防抖动和精度配置介绍》文档。

从mdbctl 查询的Scanner属性看,也和sr配置的Offset不同,你是不是弄错sr了。