Basic Dual µC UseUsually when using a single µC, both the control-direction selection (CDS) pins on the serializer/deserializer are set low for a serializer-side µC, or high for a deserializer-side µC. However, if CDS on the serializer is set low and CDS on the deserializer is high, each GMSL chip can connect to their respective µCs simultaneously (Figure 1).
Figure 1. Simplified dual µC application schematic with CDS settings shown.
Internal OperationWhen using two µCs, both the serializer's and deserializer's I²C masters are disabled, and RX/SDA and TX/SDL are configured as a UART interface with their corresponding µCs. Since each device is operating as a local side device, they cannot enter sleep mode. Use the respective active-low PWDN pins to put each device into a low-power state. Keep in mind that all of the device settings reset to their power-on value when returning from the power-down state.
Figure 2. Serializer state diagram (CDS = low).
Figure 3. Deserializer state diagram (CDS = high).
Dual µC Contention IssuesIn the configuration shown in Figure 1 above, each µC can communicate with the MAX9259 serializer, MAX9260 deserializer, or the other µC using the GMSL UART protocol. The GMSL does not provide a solution for contention avoidance, and the user will need to provide his/her own contention-handling scheme.
The simplest solution for avoiding contention is to have each µC set its attached serializer/deserializer FWDCCEN and REVCCEN bits to 0 (0x04 D[1:0]). This disables the forward and reverse control-channel receivers and transmitters, and effectively breaks the control network into two independent networks (Figure 4). Any future control communication across the serial link first requires each side's µC to reenable communication on their respective ends of the link. This configuration is mostly useful in always-on applications, where critical link-specific register settings will not change from an initial setting.
Figure 4. Separated control networks eliminate the possibility of contention.
Software Contention Handling
In applications where there must be communication between both sides of the serial link, users can always implement a higher layer protocol to avoid contention (Figure 5). In the example below, each µC waits for the acknowledge frame to determine if its commands were successful. In the event of contention, the serializer/deserializer does not send an acknowledge frame. After failing to receive the acknowledge frame, the µCs wait for a period of time that depends on their device address before resending their commands. Since the microcontrollers in this design have different device addresses, contention will not occur during the retry communication.
Figure 5. An example of software-based contention handling.
Single/Dual µC UseCertain applications do not require use of both µCs at all times. During operation, if one of the CDS inputs on either side changes state, that device resumes operation in the corresponding state described in the Link Startup Procedure section of the MAX9259 data sheet. Switching between single µC and dual µC operation enables the GMSL to use fewer resources when needed. The unused µC can be shut down to reduce power consumption and extend battery life.
Remote Display Example (Deserializer)In the following application, the deserializer side of the link is a display panel that is configured for remote power-on/off. The board's shutdown inputs and the single/dual µC control are all connected to the output of the MAX9260 GPIO0 (Figure 6). Upon power-up, the GPIO output is high, which keeps the remote-side devices shut and the deserializer configured as a remote-side device due to the added inverter. Since MS is connected to GPIO, The MAX9260 powers up in sleep mode, leaving all of the devices in a low-power state.
To start the remote panel, the serializer wakes up the MAX9260 and establishes the serial link. The serializer-side µC then sets GPIO0 low to make MS low and the inverter output high. The inverter sets the MAX9260 as a local-side device and wakes up the rest of the remote display panel. MS must be set low to keep the MAX9260 UART interface in base mode.
To shut down the remote panel, the serializer sets GPIO0 high to shut down the remote-side devices and set the MAX9260 as a remote device. Then, set SLEEP = 1 in the MAX9260 to put the device to sleep.
Figure 6. Dual/single µC remote display example.
Remote Camera Example (Serializer)Similar to the previous example, the serializer side of the link is a camera module that is configured for remote power-on/off. The MAX9259's INT output controls the board's shutdown inputs and the single/dual µC switch (Figure 7). For this application, INT functions as a GPO, with the output set by either SETINT (D7 of 0x0D in the MAX9259) or the deserializer's INT input. Upon power-up, The INT output is low, which keeps the remote-side devices shut down. The inverter output, connected to CDS, configures the serializer as a remote-side device. Since active-low AUTOS is set high, the MAX9259 powers up in sleep mode.
To start the remote panel, the deserializer wakes up the MAX9259 using GMSL UART commands. The deserializer then sets the MAX9259's INT output high to power-up all remote devices. The inverter output sets the MAX9259 as a local-side device and can now accept UART commands from the local µC.
To shut down the remote panel, the deserializer sets the MAX9259 INT output low to shut down the remote-side devices and set the MAX9259 as a remote device. The deserializer then sets SLEEP = 1 in the MAX9259 to put the device to sleep.
Figure 7. Dual/single µC remote camera example.
Additional ApplicationsDual µC use is not limited to the applications shown above. The symmetric and bidirectional control channel, along with on-the-fly CDS and bypass settings (though MS), enable a multitude of serializer/deserializer and µC configurations. The designer is now afforded a higher degree of control to increase the capabilities of their system, minimize power consumption, and maximize the use of available resources.