本文主要针对于龙迅半导体LT9611UXC,mipi转HDMI桥接芯片的在调试过程中的前期指导,包括需要准备的工具与debug的一些简单说明。
1. 芯片简介LT9611UXC 是 MIPI DSI/CSI 转 HDMI2.0 的桥接芯片,支持 I2S/SPDIF 的音频输入。芯片内置 OCM,烧录固件之后重新上电/复位即可工作。
2. 固件烧录与升级
LT9611UXC 固件升级有两种方式,一是通过 PC 端上位机工具,配合 CH341A USB 转 I2C 的转换器完成烧录;二是由外部主控将固件通过 I2C 接口烧入芯片。第一 种方式适用于调试阶段,需要将 USB 转 I2C 工具外挂到芯片的 I2C 接口上,如果需要烧录的数量较多,操作起来比较麻烦;第二种方式适用于量产阶段,由主控直接将固件烧入芯片,这样批量烧录和升级都比较方便。
1) 上位机工具升级硬件工具:CH341A USB 转 I2C 转接板。
上位机软件工具:Upgrade_Flash_For_Application.exe
升级工具与 LT9611UXC 的连接图如下:
准备工具:
(USB转I2C调试工具)
(上位机升级工具的界面)
升级步骤:a) 用 USB 转 I2C 的转接板将 PC 和板子上的 LT2611UXC 芯片的 I2C 接口连接起来;
b) 将 LT9611UXC 的板卡上电;
c) 打开 Upgrade_Flash_For_Application 工具;
d) 在”Chip”的下拉菜单中选择”LT9611UX/UXC”,会自动检测出设备地址,显示在”Device Addr”处;
e) 点击”Data File”按钮选择待烧录的固件;
f) 点击”Prog”按钮,等待烧录进度条结束;
g) 点击”Read”按钮,读出部分字节验证是否烧录成功。
USB 转 I2C 转接板是通用的工具,如果没有的话可以找我司购买或者直接从网上购买。
外部主控可以通过 I2C 接口,将固件写入到芯片内部 flash 中。我们会提供升级的参考代码,只需要将参考代码一直到主控平台即可。关于是否需要升级的逻辑判断,可以通过版本号来控制,也可以强制升级,由客户根据应用决定。
当前运行的固件版本号可由寄存器 0xB020/0xB021 读出,如版本 V1.5.1,寄存器 0xB020 中是子版本 0x01,0xB021 中的值为 0x15。
我们提供的 LT9611UXC 的固件会在文件名中标明版本号,如LT9611UXC_V1.5.2.hex,可以用固件名称中的版本号与当前运行的固件的版本号进行比较,判断是否需要升级。
LT9611UXC 内部的寄存器可通过 I2C 接口读写,I2C 的设备地址是 8bit 的 0x56 和0x5E,可通过地址选择脚 I2C_ADDR 选择,拉高时地址是 0x5E,拉低时地址是0x56。如果需要 7bit 地址的话,需要将地址右移一个 bit。芯片内部的寄存器大小是 8bit 的,地址长度是 16bit 的,由 Bank 地址和偏移地址组成。例如寄存器 0x8101,Bank 地址是 0x81,偏移地址是 0x01。如果要读取
寄存器 0x8101 的值,就要先切换 Bank 地址,再读取偏移地址的值。在通过 I2C 读写 LT9611UXC 内部寄存器前,需要向寄存器 0x80ee 先写 0x01,将OCM 程序停下来,在操作之后需要将寄存器 0x80ee 写 0x00,让 OCM 程序继续运行。
读取寄存器 0x8101 的步骤如下:
i2c_write(0xff, 0x80) //switch to bank address 0x80
i2c_write(0xee, 0x01) //write 0x01 to 0x80ee(Stop firmware in OCM)
i2c_write(0xff, 0x81) //Switch the bank addr to 0x81
value_0x8101 = i2c_read(0x01) //Read the value from offset addr 0x01
i2c_write(0xff, 0x80) //switch to bank address 0x80
i2c_write(0xee, 0x00) //write 0x01 to 0x80ee(Start firmware in OCM)
下面是读取 0x8101 寄存器时,抓取的 I2C 时序图。
lt9611uxc 连接框图
推荐的连接框图如上,Soc与LT9611UXC 之间通过 I2C 和 INT_GPIO5 交互。I2C 是用于烧录固件和读写芯片内部寄存器使用;INT_GPIO5 用于上报一些中断事件给Soc。
LT9611UXC 的 GPIO5 配置为中断引脚,默认上电为高电平。当芯片有事件要通知SOC 时,会通过 GPIO5 触发一个 5ms 左右的低电平脉冲中断,然后再保持高电平。可配置的中断事件包括芯片读取下游 EDID、HPD 状态变化、CEC 数据包接收等。SOC 检测到中断之后先通过 I2C 读取中断状态寄存器 0xB022,判断中断事件,然后将该中断状态清掉,再根据需要读取对应的状态寄存器。
2) 调试信息LT9611UXC 在正常运行过程中,会通过 UART 输出 Log 信号。固件中默认将 GPIO4配置为 Uart_TX,波特率 62500。建议将 GPIO4 留出测试点。Log 信息中会输出以下信息。
a. 固件的版本号;
b. MIPI 接收端模式配置;
c. MIPI 输入选择的 port 和 lane 数;
d. MIPI 的 byteclk;
e. MIPI 传输的数据格式和分辨率;
f. HPD 的状态;
g. 读取到下游的 EDID;
h. Avi 包内容;
如果芯片的 Uart 不方便接出来,也可以通过 I2C 读取芯片内部状态寄存器来判断当前芯片工作状态。
LT9611UXC为一颗HDMI 2.0 Transmitter,支持2-Port MIPI CSI/DSI转HDMI2.0,目前已在各种数字播放器中大量使用。更多的功能配置技术参数,我们将再下一篇幅为大家做介绍。
关注微信号,惊喜等你来
x