Site Information

 Loading... Please wait...

Blog

SAE J1939 Programming with Arduino – RTS/CTS Session Message Timing

Posted by Wilfried Voss on

This post is part of a series about SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino.

Note the time stamps from line 3 through line 5 of the screen shot (look at the last four numbers indicating the time in tenth of milliseconds; for instance 352.4 milliseconds in line 3). SAE J1939/21 requires a packet frequency between 50 to 200 milliseconds, which is being met by the Mega 2560 ECU.


A Comprehensible Guide to J1939

SAE J1939 has become the accepted industry standard and the vehicle network technology of choice for off-highway machines in applications such as construction, material handling, and forestry machines. J1939 is a higher-layer protocol based on Controller Area Network (CAN). It provides serial data communications between microprocessor systems (also called Electronic Control Units - ECU) in any kind of heavy duty vehicles. The messages exchanged between these units can be data such as vehicle road speed, torque control message from the transmission to the engine, oil temperature, and many more.

A Comprehensible Guide to J1939 is the first work on J1939 besides the SAE J1939 standards collection. It provides profound information on the J1939 message format and network management combined with a high level of readability.

Read more...

SAE J1939 Programming with Arduino - Transport Protocol – RTS/CTS Session (SAE J1939/21)

This post is part of a series about SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino. Test items include: Basic function Timing controlNaturally, for the RTS/CTS session we will need two SAE J1939 nodes. In my setup that means communication between the Arduino Uno and the Mega 2560 ECUs. [...]

Read More »


SAE J1939 Programming with Arduino - BAM Session (SAE J1939/21)

This post is part of a series about SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino. Test items include: Basic function Timing controlThe initial test of the BAM session requires only one ECU, in this case I am using the full protocol running on the Arduino Mega 2560 [...]

Read More »


SAE J1939 Programming with Arduino - Sending and Receiving Messages

This post is part of a series about SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino. Proving the capability of the most basic task of sending and receiving regular 8-byte (CAN) messages must be seen as an unnecessary test, since that had already taken place in previous chapters. Things change, however, with the transmission and reception of J1939 [...]

Read More »


SAE J1939 Programming with Arduino - Multi-Packet Peer-to-Peer (RTS/CTS Session)

This post is part of a series about SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino. The communication of destination specific (peer-to-peer) multi-packet messages is subject to flow-control. Connection Initialization – The sender of a message transmits a Request to Send message. The receiving node responds with either a Clear [...]

Read More »


SAE J1939 Programming with Arduino - SAE J1939/21 - Transport Protocol (TP)

This post is part of a series about SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino. Even though extremely effective in passenger cars and small industrial applications, the CAN Bus technology alone was not suitable to meet the requirements of truck and bus communications, especially since its communication between devices is limited to only 8 bytes per message. [...]

Read More »


SAE J1939 Programming with Arduino - Multi-Packet Broadcast (BAM Session)

This post is part of a series about SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino. In order to broadcast a multi-packet message, a node must first send the Broadcast Announce Message (BAM), which contains the following components: Parameter Group Number (PGN) of the multi-packet message Size of the multi-packet message Number of packagesThe BAM message allows all [...]

Read More »


SAE J1939 Programming with Arduino - The Two Elements of the SAE J1939 Protocol Stack

This post is part of a series about SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino. Any SAE J1939 hardware must support SAE J1939/1x and SAE J1939/21, otherwise they’re useless, because these standards describe the CAN Bus physical layer and the basic protocol features. That part is sufficiently covered (i.e. for demonstration purposes) by our CAN Bus [...]

Read More »