I2C Messages over GMSL Link
The GMSL protocol allows host controller to control remote serializer and sensor through i2c messages which are passthroughed by GMSL link (control stream).
- Downlink (camera -> host controller)
In front of link side (the link between deserializer and serializer), deserializer decapsulated control message and translate into i2c format, then forward to upstream i2c lines. (SDA and SCL). - Uplink (host controller -> camera)
On the uplink direction, host controller generate START bit, followed by device address and message content to deserializer. Deserializer helps to forward it to remote side as well.
Conflict I2C Address
Each camera modules have identical i2c slave address. For example, in Leopard AR0233 GMSL camera, it's MAX9295 use 0x62 and CMOS sensor use 0x10, it should be the same in other Leopard AR0233 GMSL camera. As a result, when two identical cameras are shared with the same i2c channels, there should have a i2c address conflict issue.
💡 Remapping Mechanism
Serializer (e.g. MAX9295, MAX96705) provides a way to change their adddress at runtime
, which allows you don't need extra hardware change (e.g strap pin). Simply change by setting serializer's register. (0x01 at MAX9295)
sequenceDiagram participant HOST as Host Controller participant DES as Deserializer participant SER as Serializer HOST ->> DES: Initialization. DES ->>+ SER: Establish control link. SER ->>- DES: Control link established. HOST ->> SER: Change serializer i2c address. note left of SER: Now serializer i2c changed. SER ->> DES: Control link locked. HOST ->> SER: Access serializer by new address.