器件型号: TDA4AL-Q1
我们目前正在为我们基于 J721S2 的系统开发摄像头恢复机制、并且遇到需要 CSIRX Stream1 FIFO 溢出错误处理的情况。 我们希望向您寻求指导、以确定我们建议的方法是否安全且符合硬件规范。
背景: 在摄像头重置操作(流式传输→摄像头重置→流式传输)期间、我们偶尔会遇到 CSIRX 流 1 FIFO 溢出错误。 为了从这些错误中恢复、我们实施了以下过程:
-
CSIRX 流 1 软复位过程:
- 通过写入 STREAM1_FIFO_OVERRIDE_IRQ 位来读取和清除 ERROR_IRQ 寄存器(偏移 0x28)
- 通过设置 SOFT_RST 位对 STREAM1_CTRL 寄存器(偏移 0x200)执行软复位
- 等待复位使其稳定
- 通过清除 SOFT_RST 位来释放软复位
-
I2C4 SYSC 寄存器恢复: 完成 CSIRX 流 1 软复位后、我们观察到 I2C4 SYSC 寄存器(地址 0x02040010)值从 0x00000000 变为 0x00000008(AUTOIDLE 位被设置)。
为了将寄存器恢复到其原始状态、我们将 0x00000000 写入 I2C4 SYSC 寄存器、其中:
- 清除 AUTOIDLE 位(位[0])
- 清除所有电源管理位
- 恢复寄存器以匹配参考值
问题:
-
在运行时操作期间对 CSIRX 流 1(STREAM1_CTRL 寄存器)执行软复位以从 FIFO 溢出错误中恢复是否安全?
-
在 CSIRX 复位后直接将 0x00000000 写入 I2C4 SYSC 寄存器以恢复其电源管理配置、是否存在任何问题?
-
TI 是否有任何建议的程序或替代方法来处理 CSIRX Stream1 FIFO 溢出错误?
-
您能否解释一下为什么 I2C4 SYSC 寄存器在 CSIRX 流 1 复位操作期间发生了变化、以及恢复它是否是正确的方法?
目前、在应用上述例程后、系统正常运行、但我希望确保我的实施遵循最佳实践、并且不会给系统稳定性带来任何潜在风险或违反硬件规格。
非常感谢您的时间和帮助。 我们非常感谢您的专业知识、并期待您的指导。




