SAE J1939/16 Automatic Baud Rate Detection Process
The SAE J1939/16 document outlines the methods used to detect the baud rate of an SAE J1939 network segment by ECUs that can adjust their CAN baud rate while in use. The specified approach provides a reliable method to detect the CAN baud rate of that network segment without interrupting network communications.
SAE J1939/16 defines the following requirements for ECUs with automatic baud rate detection:
- The ECU must be able to set their CAN Bus port into Silent Mode during baud rate detection.
- The ECU must maintain a list of possible baud rates (250/500 Kbps).
- The ECU must be able to detect CAN Bus errors while in Silent Mode.
SAE J1939/16 requires the following procedure:
- On power-up, the ECU initiates Silent Mode and selects a starting baud rate, preferably with the highest rate.
- The ECU waits until it receives a valid 29-bit data frame or detects an error frame (caused by a frame with different baud rate).
- If the ECU detects an error-free data frame, it stores the currently detected baud rate and start normal communications.
- If the ECU detects a CAN Bus error, it will continue in Silent Mode and switch to the next available CAN Bus baud rate.
- Steps 1 through 4 must be repeated, until step 3 is satisfied.
How Does Automatic Baud Rate Detection Work?
The introduction of 500 Kbps (see SAE J1939/14) as an alternative to 250 Kbps, required clarifications on how to solve problems that come with incorporating devices supporting different baud rate settings in the same network. One solution comes with automatic baud rate detection.
Note: For reasons explained in more detail below, automatic baud rate detection works only for devices added to an existing operable J1939 network. It is impossible to create a system where all nodes detect the baud rate automatically; a minimum of two J1939 nodes that "talk" to each other is required.
Automatic baud rate detection is advantageous for the following scenarios:
- Connecting a J1939 node "on-the-fly," i.e., when the network is already in operation (e.g., a trailer).
- Installing a J1939 node in a network whose CAN baud rate is unknown.
Rather than experimenting with CAN baud rate settings and testing the result, the automatic detection will deliver the right result within shortest time without interfering with the network's operation. That time, however, depends on the busload. A heavy busload will deliver quicker results than a bus with occasional data frames.
In the case of SAE J1939, automatic baud rate detection allows connecting a device to a vehicle network that runs at either 250k or 500k baud without having to use a configuration system individually designed for each engine.
However, testing or connecting a CAN node (ECU) with automatic baud rate detection can be frustrating without knowing the details.
Here are the considerations when testing or connecting such a device:
- The CAN Bus node (ECU) can only detect the CAN Bus transmission rate when connected (and starting up) to a running network.
- You cannot test the ECU's detection capabilities by connecting it to another single ECU. The other ECU's CAN controller will detect errors on the CAN Bus, and it will cease sending data frames.
- You need at least two other ECUs (i.e., a running network) who communicate with each other before you can connect or test the ECU with automatic baud rate detection.
The standard method to detect the CAN baud rate is to switch to Silent Mode (to avoid error frames; see information in the next paragraph) and set up a loop to initialize standard baud rates (e.g., 100k, 125k, 250k, 500k, 1000k). After each initialization, check if you received either a valid data frame or an error. In case of an error, switch to the next baud rate. When receiving a valid message, switch off the Silent Mode and continue operation with the baud rate as detected.
What Is Silent Mode?
Silent Mode is a CAN controller setting that allows a node to support a state that is passive to the bus, meaning it is "invisible" to the rest of the network, and it does not influence the bus in any shape or form. The node does not issue an ACK frame when a message is placed on the CAN bus correctly. Thus, the Silent mode provides a perfect Listen-Only method for diagnostic features such as baud rate detection.
Note: Setting the Silent Mode is CAN-controller-specific, i.e., there is no standardized method.
SAE J1939 Starter Kit And Network Simulator
Our JCOM.J1939 Starter Kit And Network Simulator is designed to allow the experienced engineer as well as the beginner to experiment with SAE J1939 data communication without the need of connecting to a real-world J1939 network, i.e. a diesel engine. It may sound obvious, but in order to establish a network, you need at least two nodes, and that fact applies especially to CAN/J1939 where the CAN controller will basically shut down after transmitting data without receiving a response. For that reason, our jCOM.J1939 Starter Kit And Network Simulator consists of two J1939 nodes, namely our jCOM.J1939.USB, an SAE J1939 ECU Simulator Board With USB Port.