Created by the J1939 and J1708 Experts

J1708 Introduction

The SAE J1708 specification specifies a differential serial communications bus for inter-connecting ECUs on heavy-duty and commercial vehicles. It does this by standardizes a hardware and software protocol for sending messages.

Higher level protocols which operate on top of J1708 are J1922, which is used as a control network, and J1587, which is used as a diagnostic network. J1708 is being replaced by SAE J1939. J1939 is based on CAN bus, which is a high-speed fault-tolerant network invented by BOSCH.

J1708 Datalink

J1708 is a half duplex, multi-master, bidirectional network with 8, N, 1 byte framing at a network speed of 9600 bits per second (bps). The first byte of every message is a message identifier, refered to as MID. The last byte of every messages is the checksum. The max message length when the engine is running is 21 bytes, and is else wise unspecified.

J1708 Physical Layer

Physically J1708 is a twisted pair with differential signaling. J1708 networks use a RS-485 transceiver connected in passive mode, as opposed to active mode which is normally used for RS-485 networks. Using passive mode allows for non-destructive bus arbitration.

Connection of the RS-485 transceiver to the host processor is commonly incorrect. See the sample circuit provided in the J1708 specification. When connection is correct, a J1708 network has non-destructive arbitration, can handle a minium of 20 nodes, and has a maximum backbone length of 40 meters.

J1708 Bus States

The logical value transmitted onto the bus is the difference in voltage between the two wires. A logical 1 is when A is more than 200 mV than B. A 0 is when B is 200 mV more than A. When the voltage difference is less than 200mV, the bus state is undefined.

J1708 Idle Time

The bus is considered idle if the bus has been at the logic level 1 for at least 10 bit times, or 1041.7 ms. Once the bus is idle, a device can start transmission based on the message's priority. See the J1708 speification for a complete list of priorities and corresonding idle times.

J1708 Inter-character Bit Time

For bytes to be considered as part of a message, the time between bytes is not allowed to exceed 2 bit times. However, it is common for controllers to violate this part of the specification.

J1708 Bus Access Time

Once the bus is idle, and the message's priority time has elapsed the node is allowed to transmit. The time between the last time the software checked the state of the network and when it starts to send it's first byte, the falling edge of the start bit, is known as the bus access time. The maximum allowed bus access time is 50 microseconds.

J1708 Message Format

All J1708 messages have the following format.
   Message ID
   One or more data bytes

J1708 MIDs

A J1708 MID, which stands for message identifier, represents the source address for a message. Below is a subset for the MID list documented in SAE J1708.
   08-09:Brakes, Tractor
   10-11:Brakes, Trailer
   12-13:Tires, Tractor
   14-15:Tires, Trailer
   69-86:Set aside for SAE J1922
   ... :...
   128-255:Defined by SAE J1587

J1708 Checksum

The last byte of every message is the two's complement of the MID and data contained in the message.

J1708 Message Length

The maximum length, from the MID to the checksum, is 21 bytes. If the engine is not running and the vehicle is no moving, messages longer than 21 bytes may be transmitted.

J1708 Application Layer

For J1708 message definitions on a J1708 network, see J1708, J1587, J1922, or J2497. Selecting which document is determined by the MID of the message. SAE J1708 contains a table which ties each MID, and message, to a particular document.

J1939 CAN bus to Bluetooth J1708 to RS-232 J1708 to USB J1939 to RS-232 J1939 to USB J1939 to WiFi J1939 to UART
CAN Introduction J1939 Introduction J1708 Introduction J1587 Introduction J1922 Introduction
CANopen Software

J1708 Introduction | Copyright 2011 | Simma Software, Inc.