6.6. Serial daisy chaining
This section is a guide to integrating the Simple Motor Controller G2 into a project that has multiple TTL serial devices that use a compatible protocol.
First of all, you will need to decide whether to use the Pololu protocol, the Mini SSC protocol, or a mix of both (see Section 6.2). You must make sure that no serial command you send will cause unintended operations on the devices it was not addressed to. If you want to daisy chain several G2 Simple Motor Controllers together, you can use a mixture of both protocols. If you want to daisy chain the Simple Motor Controller G2 with other devices that use the Pololu protocol, you can use the Pololu protocol. If you want to daisy chain the Simple Motor Controller G2 with other devices that use the Mini SSC protocol, you can use the Mini SSC protocol.
Secondly, assign each device in the project a different device number so that they can be individually addressed by your serial commands. For the Simple Motor Controller G2, this can be done in the “Input settings” tab of the Simple Motor Control Center G2.
The following diagram shows how to connect one master and many slave devices together into a chain. Each of the slave devices may be a Simple Motor Controller G2 or any other TTL serial device, such as a Maestro, Jrk, qik or other microcontroller.
Daisy chaining serial devices using the Pololu protocol. An optional AND gate is used to join multiple TX lines.
The Simple Motor Controller G2 has a special input called TXIN that eliminates the need for an external AND gate (the AND gate is built in to the control.) To make a chain of devices using the TXIN input, connect them like this:
Daisy chaining serial devices that have a TXIN input.
For additional connection diagrams and more information about the TXIN pin, see Section 4.2.
Connect the TX line of your controlling device to the RX lines of all of the slave devices. Sent commands will then be received by all slaves.
When receiving serial responses from multiple slaves, each device should only transmit when requested, so if each device is addressed separately, multiple devices will not transmit simultaneously. However, the TX outputs are driven high when not sending data, so they cannot simply be wired together. Instead, you can use an AND gate, as shown in the diagram, to combine the signals, or you can use the TXIN pin as described above if the device has one. Note that in many cases receiving responses is not necessary, and the TX lines can be left unconnected.
Whenever connecting devices, remember to wire the grounds together, and ensure that each device is properly powered. Unpowered devices with a TTL serial port can turn on or partially on, drawing power from the serial line, which means that extra care must be taken when turning power off and on to reset the devices.
The Pololu Protocol or Mini SSC protocol should be used when multiple Pololu devices are receiving the same serial data. This allows the devices to be individually addressed, and it allows responses to be sent without collisions.
If the devices are configured to detect the baud rate, then when you issue your first Pololu Protocol command, the devices can automatically detect the baud from the initial 0xAA byte.
Some older Pololu devices use 0x80 as an initial command byte. If you want to chain these together with devices expecting 0xAA, you should first transmit the byte 0x80 so that these devices can automatically detect the baud rate, and only then should you send the byte 0xAA so that the Simple Motor Controller can detect the baud rate. Once all devices have detected the baud rate, Pololu devices that expect a leading command byte of 0x80 will ignore command packets that start with 0xAA, and Pololu devices that use the Pololu Protocol, such as the Simple Motor Controller, will ignore command packets that start with 0x80.