Part Number: AFE539A4
您好,
我们在 AFE539A4 的动态 COMMON-MODE 寄存器 0x0C 上观察到可 100% 复现的写入被改写现象。同一板卡上的两颗器件表现逐位一致。请确认这是否为已知 errata,以及是否有规避方案。
测试环境
- 器件:AFE539A4,I2C 地址 0x48 与 0x49(两颗,表现完全一致)
- VDD = 5.0 V 作为 DAC 基准,增益 = 1×(VFS = 5 V,code LSB = 4.883 mV,寄存器 LSB = 1.221 mV)
- 主机:ESP32-S3,I2C 400 kHz(100 kHz 结果相同)
- 说明:0x0C 在手册表 7-11 中被指定为动态 COMMON-MODE 地址(静态镜像为 0x25[11:2]),但**§7.6 寄存器映射中没有 0x0C 条目**,因此`[11:2]` 是唯一有定义的字段。
复现步骤 写帧 =`[RegAddr][MSB][LSB]` ;读 = 先写 1 字节地址,再读 2 字节。
`WRITE 0x0C = 0x0520 (10-bit code 328)
READ 0x0C -> 0x0720 <- bit9 被置 1,差值 = +0x200`
`WRITE 0x0C = 0x0D00 (code 832)
READ 0x0C -> 0x0F00 <- 差值 = +0x200`
窗口外对照:
`WRITE 0x0C = 0x0640 (code 400)
READ 0x0C -> 0x0640 <- 正确`
写入后立即回读,5/5 次稳定复现,且 I2C 传输无任何错误 。
观测规律:`bit9 := bit9 | (bit10 & bit8)`
code 写入 回读 差值 结果 64 0x0100 0x0100 0 OK 256 0x0400 0x0400 0 OK 512 0x0800 0x0800 0 OK 576 0x0900 0x0900 0 OK 832 0x0D00 0x0F00 +0x200 被改写 328 0x0520 0x0720 +0x200 被改写
受影响寄存器值: 0x500–0x5FF 与 0xD00–0xDFF ,即 10-bit code 320–383 与 832–895 ;偏移恒为 +0x200(+0.625 V)。若 bit9 原本已为 1 则无变化(例如 0x0FFC 回读正确)。所有回读值`[1:0]` 恒为 0,说明改写发生在已定义的 10-bit 数据字段内部,而非保留位。
其他写入路径同样被改写
- 先停状态机(写 0x27 = 0x0004,按 §7.4.6.2 步骤 1),再写 0x0C → 仍为 0x0550 → 0x0750
- 写 SRAM COMMON-MODE 0x25(回读 0x0520,正确),再重启状态机载入 0x0C → 0x0C 回读 0x0720
- 同一数值写到 SRAM-SETPOINT 0x22 回读完全正确 → 数据字节与 I2C 帧完好,改写只绑定在 0x0C
- 寄存器 0x0C / 0x12 / 0x1A 回读同一被改写值(如`R0C=0720 R12=0720 R1A=7200` )
已排除项: I2C 速率(100 kHz 与 400 kHz 相同)、总线争用(暂停 CPLD 轮询与 ADC 采集、静默总线,仍 5/5)、同总线其他器件(CPLD、触摸控制器)、器件个体差异(两颗一致)、寄存器地址写错(写 0x22 正确)、数据字节破坏、PI 控制器干扰(KP = KI = 0,环路已旁路)、状态机运行导致、主机重复写入 0x0C。
影响: 目标输出落在 1.5625–1.875 V 或 4.0625–4.375 V 区间时必然偏高 +0.625 V。软件无法规避:预先减去 0x200 会被再次置位。
请求
1. 这是否为 AFE539A4 的已知 errata(写 0x0C 时 bit9 被强制置位)?若是,请告知受影响的硅版本范围与推荐规避方法。
2. 若否,请提供 0x0C 的完整逐位定义(含`[1:0]` 与`[15:12]` ),并确认写入前是否需要任何未文档化的前置条件或同步要求。
3.规格书对寄存器的描述没有覆盖所有寄存器。是否有其他的文档。
谢谢