车载视频总线FPD-Link III和GMSL通过SerDes远端I²C通信介绍
背景本应用指南介绍了利用配备双向控制通道的 FPD-Link III 和GMSL串行器/解串器(SerDes)实现设备间通信的方法,该双向控制通道采用I²C 协议。这种低延迟的双向控制接口可使主I²C 设备能够通过串行链路远程控制外围设备。I²C 介绍I²C总线是一种双线双向总线,允许多个设备在同一总线上运行(如图 1 所示)。该总线由主设备和从设备组成,它们通过I²C 接口来回传输数据。主设备负责控制总线,通常是微控制器、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其他数字控制器。从设备则由主机控制器控制。在设备间进行数据交换时,I²C 采用主从协议。总线上的每个设备(无论是主设备还是从设备)都可以作为接收器和/或发送器。该总线由两条线组成,即 SCL(时钟)线和 SDA(数据)线。这两条线采用开漏/开集电极输出,必须通过外部上拉电阻将其拉高。通过将输出拉低来传输逻辑低电平状态;通过释放输出并允许其被外部上拉来传输逻辑高电平状态。合适的上拉电阻值取决于总线的总电容和总线的工作速度。I²C总线是一种双线串行接口。这两条线负责在连接到总线的设备之间双向传输信息,而总线上的每个设备都通过一个唯一地址进行标识。每个设备既可以发送数据,也可以接收数据。一个设备既可以作为主设备运行,也可以作为从设备运行,这取决于它是生成还是接收串行时钟(SCL)信号。主设备通过寻址从设备并生成起始(START)信号和停止(STOP)信号来发起数据传输。I²C协议允许总线上连接两个以上的设备,并且可以存在多个主设备/从设备关系。I²C从设备应答要与总线上的某个特定设备进行通信,控制器(主设备)会发送从设备地址,并监听从设备的响应。这种响应被称为“应答”(ACK = 1)或“无应答”(NACK = 0)。应答周期由两个信号组成:主设备在传输每个字节时发送的应答时钟脉冲,以及接收设备发送的应答信号。在 SDA(数据)线上传输的所有字节都由八位数据加上一个应答位组成。每个传输的字节实际上需要 9 位。应答位(ACK 位)允许数据向总线上的一个设备单向发送,并指示数据已被接收。设备通过在 SCL(时钟)的第9 个时钟脉冲期间将 SDA 线拉低来确认已接收到每个字节的数据。在数据传输过程中,总线上也会出现应答信号。当主设备正在写入数据时,从设备在成功接收到每个数据字节后会发送应答信号。当主设备正在读取数据时,主设备在接收到每个数据字节后会发送应答信号,以告知从设备它已准备好接收下一个数据字节。当主设备想要停止读取时,它会在最后一个数据字节后发送无应答信号(NACK),并以总线上的停止条件终止传输。I²C时钟延展一般来说,I²C 主设备控制 SCL(时钟)线。这条线为总线上的所有传输提供时序。当主设备从从设备读取数据时,从设备在 SDA(数据)线上发送数据,但时钟是由主设备控制的。然而,在某些情况下,从设备可能尚未准备好响应主设备,或者需要减缓总线上的数据传输速度。I²C 协议定义了一种模式,允许从设备将 SCL 线拉低。这种机制被称为“时钟拉伸”(Clock Stretching)。当从设备接收到主设备的写/读命令时,它会将时钟线拉低。在任何 SCL 低电平期间,从设备都会保持 SCL 为低电平,以防止其再次升高,从而延迟 SCL 时钟速率并暂停通信。FPD-Link III通过解串器实现远程I²C通信FPD-Link III 串行器/解串器(SerDes)芯片组支持通过单一差分链路同时进行高速视频数据的全双工传输以及嵌入式双向控制通道(简称 BCC)的传输。根据I²C 标准,BCC 接口与I²C 兼容。BCC 接口提供了对本地和远程设备上可编程功能和寄存器的访问权限。对于使用具备双向控制通道的 SerDes 芯片组进行的I²C 通信,支持三种操作类型:本地操作、远程操作以及远程从设备操作(如图 3 所示)。每个设备可根据I²C 操作模式作为I²C 从设备代理或主设备代理运行。SerDes 接口在主机控制器和远程设备之间充当虚拟桥梁。本地操作使用标准的主设备到从设备的操作方式,针对本地的串行器或解串器进行。本地I²C 操作不需要从设备进行任何时钟拉伸,也不会导致通信跨越双向控制链路。当寻址远程外设或 SerDes 时,从设备代理会将主控制器发送的任何字节通信转发给目标设备。此时,该设备将作为主设备代理运行,代表I²C 主机控制器充当主设备。为了通过双向控制通道与I²C 总线上的远程设备进行通信,I²C 主机控制器必须支持从设备时钟拉伸(slave clock stretching)。具备双向控制通道的芯片组在远程数据传输过程中会采用I²C 时钟拉伸机制,具体描述见“时钟拉伸”部分。在此阶段,控制通道会嵌入到链路中,随后在远程总线上重建数据。需要注意的是,从设备不会控制时钟,它只是将时钟拉低(即进行时钟拉伸),直到远程外设做出响应为止。图 4 展示了一个远程访问的示例,其中包括在传输字节之后、应答位完成之前的时钟拉伸周期。由于传输到I²C 从设备的每个字节都必须单独进行应答,因此主机控制器发送的每个字节都会进行时钟拉伸。对于远程访问,图中所示的“响应延迟”(Response Delay)在DS90UH925Q/UH926Q/UB925Q/UB926Q 芯片组上大约为 5 – 10 微秒,在 DS90UB901Q/902Q/903Q/904Q 芯片组上大约为 10 – 15 微秒。该“响应延迟”包括控制通道打包和通过差分链路到远程外设的序列化协议的延迟时间。以下图表(图 5 和图 6)展示了SCL 时钟和 SDA 数据信号的时序关系。GMSL通过解串器实现远程I²C通信(GMSL)串行器/解串器(SerDes)系列包括具有UART/I²C转换器,用于远端控制I²C接口外设。这些外设包括相机传感器、I/O端口扩展器、音频模/数转换器(ADC)和数/模转换器(DAC),以及LED照明。在GMSL数据资料和相关技术文件中,通过UART端口直接连接至电子控制单元(ECU)的一端被称为“本地端”,另一端被称为“远端”。I²C外设接口是控制通道基本模式中的默认设置。GMSL系列SerDes只转换器件地址不同于GMSL串行器或解串器地址的UART数据包。UART/I²C转换器接收(比如)汽车ECU发出的UART读或写数据包,并将其转换为I²C主控制器协议。GMSL解串器I2C/UART介绍I2C/UART控制通道(CC)为主微控制器(μC)提供了访问吉比特多媒体串行链路第二代(GMSL2)设备寄存器以及串行链路两端所连接外围设备的能力。典型应用采用一个主微控制器(如图7 所示)。I2C多主设备应用也得到支持,但前提是需采用软件仲裁方法来避免冲突(如图8 所示)。需要注意的是,串行链路在任何时候只允许一个主微控制器进行通信。该控制通道还使主微控制器能够配置串行链路另一端(即远程端)所连接的外围设备。此应用要求两个 GMSL2 设备配置为相同的控制通道协议(即均为 I2C 或均为 UART);GMSL2设备不支持 I2C 与 UART 之间的协议转换。图7. Typical GMSL2 Serial Link System with the Control Channel图8. GMSL2 System with Multi-Main Control Channel (I2C)两种控制通道(CC)协议均使用吉比特多媒体串行链路第二代(GMSL2)设备的 SDA_RX 和 SCL_TX 引脚。在设备上电时,通过 I2CSEL 引脚状态或配置引脚(CFG)来决定选用I2C(SDA 和 SCL)协议还是UART(Rx 和 Tx)协议。有关协议选择的设置,请参考特定设备的数据手册;需注意,部分器件的引脚可能具有共享功能。I2C/UART 的输出为开漏结构,需要外部上拉电阻来确保其正常工作。外部上拉电阻的阻值因应用而异,由所连接的微控制器(μC)或其他外围设备的特性以及 VDDIO 的电压值决定。I2C控制通道I2C是一种双向通信协议,它通过一条双线总线连接多个设备。微控制器可以被编程以生成 I2C 数据传输,而 GMSL2 设备能够处理这些数据传输。GMSL2链路上的I2C(远程设备访问)I2C通道通过串行链路将串行器(serializer)和解串器(deserializer)的I2C接口(即SDA_RX和SCL_TX)连接起来。除了用于寄存器访问的内部I2C从属设备外,GMSL2设备还具备I2C链路主设备和链路从属设备,这些设备用于通过GMSL2链路上的I2C传输来访问远程设备。当外部I2C主设备(例如,微控制器μC)在链路一侧(即本地侧)的I2C总线上执行I2C通信时,本地侧设备的I2C链路从属设备会将I2C通信(例如,起始位、停止位、数据位0和数据位1)转发到链路的另一侧(即远程侧)。远程侧设备的I2C链路主设备会接收到这些I2C通信,并在远程侧的I2C总线上生成相应的通信。远程侧的I2C链路主设备还会将任何预期由远程侧I2C从属设备驱动的I2C通信(例如,写入时的确认位和读取时的数据位)通过链路发送回本地侧的I2C链路从属设备。通过GMSL2链路的I2C操作方式是,远程侧的内部I2C主设备会模仿本地侧外部I2C主设备(例如,微控制器μC)的行为,而本地侧的内部I2C链路从属设备会模仿远程侧外部I2C从属设备的行为。这种方法在逻辑上将两个独立的I2C总线连接起来:整个I2C通信看起来就像是在同一条物理I2C总线上执行的(除了存在的时间差异外)。I2C数据传输要求接收方在每个字节之后立即发送确认信号。为了考虑主设备和从属设备之间的时间差异,并允许数据有足够的时间通过串行链路转发和接收,I2C协议使用时钟拉伸(即保持SCL为低电平)来暂时暂停通信,直到确认信号通过I2C控制通道传播。在GMSL2系统中,本地侧的所有I2C设备(即外部主设备微控制器μC和任何连接的外围设备)都必须支持时钟拉伸;而远程侧的I2C外围设备则无需支持时钟拉伸(图9)。图9. I2C Clock StretchingI2C地址转换示例地址转换是I2C模式下的一项功能,可以将一个设备地址映射到虚拟设备地址。在GMSL2串行链路系统中,两个单独的设备地址可以转换为另外两个独立的设备地址。当在同一系统中使用具有相同设备地址的两个相同模块时,使用此功能。图10展示了一个I2C地址重新分配与转换的示例。一个GMSL2 CSI-2解串器连接到了两个相同的摄像头模块。每个摄像头模块都包含一个I2C地址为0x80的GMSL2串行器和一个地址为0x6C的图像传感器。通过使用I2C地址重新分配功能,可以将链路A上的串行器设备地址从0x80更改为0x84。随后,对每个串行器执行I2C地址转换操作,以便能够单独访问每个图像传感器。链路A上的串行器的I2C地址从0x20转换为0x6C;链路B上的串行器的I2C地址则从0x22转换为0x6C。图10. I2C Address TranslationI2C寻址示例图11展示了一个I2C地址重新分配、转换以及广播的示例。一个GMSL2 CSI-2解串器连接到了两个相同的摄像头模块。每个摄像头模块都包含一个I2C地址为0x80的GMSL2串行器和一个地址为0x6C的图像传感器。通过使用I2C地址重新分配功能,可以将链路A上的串行器设备地址从0x80更改为0x84。随后,对每个串行器执行两次I2C地址转换操作,以便能够单独访问每个图像传感器,并为串行器配置一个I2C广播地址。为了单独访问图像传感器,链路A上的串行器的I2C地址从0x20转换为0x6C,链路B上的串行器的I2C地址则从0x22转换为0x6C。串行器还额外编程了一个I2C地址转换,以建立I2C广播地址。在这里,广播地址被设置为源寄存器,而串行器设备地址被设置为目标寄存器。在链路A的串行器中,0xC4被转换为0x84(即使用I2C地址重新分配功能配置后的修改设备地址);在链路B的串行器中,0xC4被转换为0x80。图11. I2C Broadcasting主UART控制通道UART基本/旁路模式GMSL2设备提供了两种主要的UART控制通道(UART CC)操作模式:UART基础模式(UART Base Mode)和UART旁路模式(UART Bypass Mode)。基础模式用于对串行器和解串器进行编程和配置。微控制器(µC)可以通过此模式与GMSL2设备以及远程侧连接的(兼容)外围设备进行通信。旁路模式用于绕过GMSL2设备,直接提供对外围设备的点对点访问。UART控制通道可以被编程以在这两种模式之间切换,从而实现UART控制通道的灵活使用。UART旁路模式与直通UART(Pass-through UART)有所不同:直通UART仅提供对远程外围设备的访问(无法访问GMSL2设备的内部寄存器),而UART旁路模式是一种控制通道模式。如果GMSL2系统中包含一个连接到远程设备且与GMSL2 UART协议不兼容的外围设备,UART旁路模式允许微控制器在不使用UART直通连接的情况下与该外围设备进行通信。通信完成后,微控制器可以在UART基础模式下访问GMSL2设备。而直通UART则无法访问GMSL2设备。
FPD-Link III和GMSL 车载视频总线FPD-Link 通过一条IIC总线连接多个设备。微控制器编程生成 I2C 数据传输,而GMSL2 设备能够处理这些数据传输 FPD-Link III和GMSL通过SerDes远端I²C通信 线FPD-Link III和GMSL
页:
[1]
