器件型号: TDA4VL-Q1
主题中讨论的其他器件: TDA4VL
我们正在与配合使用 Texas Instruments TDA4VL (J721S2) 处理器上的 CSI-RX 接口 、从接收图像数据 CSI2 的 Maxim/ Analog Devices 解串器 。
大多数情况下、我们的应用程序可以正常运行并无问题地捕获图像。
但是、在产品级测试期间、特别是在多次测试之后 电源‑下电上电序列 —CSI-RX 接口最终停止接收任何图像(没有捕获帧),我们观察到几个 Csirx_InstStatus错误计数器 增大:
- CRC 错误计数:每 10 秒 160 次
- 未校正的 ECC 错误计数:每 10 秒 6000 次。
- 已更正 ECC 错误计数:每 10 秒 5000 次。
- 数据 ID 错误计数:每 10 秒 160 次。
- 无效的短数据包错误计数:每 10 秒 70 次。
此行为的发生频率更高 –40°C 和 85°C (每 5 小时下电上电一次)。
根据 J721S2/TDA4VE/TDA4AL/TDA4VL/AM68A 处理器器件修订版本 1.0 勘误表、存在一个已知问题:
当 CSI2 接口接收到一个可能存在 CRC 错误的不完整帧时、模块可能会进入一个未知状态、在该状态下不会捕获所有后续帧。
解决方法:复位 CSI_RX_IF 模块。
已实施恢复序列
按照勘误表指南、我们执行重复的下电上电‑μ s 循环、直到出现 CSI-RX 错误。
然后、我们执行两个恢复序列、每个序列尝试两次:
序列 1 - VID2 驱动程序复位 (根据 csirx/csirx_test.c src)
Fvid2_stop(drvHandle, NULL);
/* dequeue any previously queued frames */
Fvid2FrameList_init(&frmList);
Fvid2_dequeue(drvHandle, &frmList, 0U, FVID2_TIMEOUT_NONE);
cleanFrames(handle);
/* requeue empty frame list */
Fvid2FrameList_init(&frmList);
status = Fvid2_queue(drvHandle, &frmList, 0U);
Fvid2_start(drvHandle, NULL);
序列 2—完全软件复位
这包括:
- 取消初始化过程(以下过程)
Fvid2_stop(drvHandle, NULL);
/* dequeue any previously queued frames */
Fvid2FrameList_init(&frmList);
Fvid2_dequeue(drvHandle, &frmList, 0U, FVID2_TIMEOUT_NONE);
cleanFrames(handle);
/* Disable Error Events */
Fvid2_control(drvHandle, IOCTL_CSIRX_UNREGISTER_EVENT, (void*) CSIRX_EVENT_GROUP_ERROR, NULL);
Fvid2_delete(drvHandle, NULL);
(void) SemaphoreP_delete(lockSem);
- FVID2 捕获驱动程序完全重新初始化、
- 传感器重新配置、
- 重新配置外设组件、
- 以及任何相关的板级初始化。
观察到的结果
执行这些恢复步骤后、 CSI-RX 接口不会在同一下电上电过程中恢复图像捕获 。
不过、在中 下一次下电上电 、系统将正常引导、映像捕获将再次工作。
问题
根据勘误表建议重置 CSI_RX_IF 模块 、可能需要执行哪些额外步骤来确保 CSI-RX 子系统完全有效地重置、以便在不需要完全重启的情况下恢复映像捕获? 温度是否与此类误差直接相关?