In the evolving landscape of embedded communication, SAE J1939 remains the backbone of networked control systems in heavy-duty vehicles, agriculture, construction equipment, and marine electronics. For embedded developers seeking a compact, scalable, and fully compliant implementation of the J1939 protocol, Embedded Systems Academy (EmSA) offers a modular and battle-tested solution: Micro J1939.
This blog dives deep into the components, features, and advantages of the Micro J1939 protocol stack and its available extensions, including BAM, CMDT, and NMEA 2000 fast-packet support.
🔧 What is Micro J1939?
Micro J1939 is EmSA’s lightweight implementation of the SAE J1939 protocol written in ANSI C, designed specifically for microcontrollers with limited resources (8- to 64-bit architectures). Unlike full-blown stacks that may consume excessive memory or CPU cycles, Micro J1939 is optimized for real-time systems that must operate efficiently even under constrained hardware conditions.
✅ Key Features of Micro J1939 Base Stack
-
📜 Full Source Code: Delivered as ANSI C source, enabling integration into any embedded environment without licensing restrictions.
-
📡 CAN Abstraction Layer: Allows easy porting to any microcontroller or RTOS. CAN driver interface is clearly separated.
-
⏱️ PGN Transmission Scheduling: Configure and schedule periodic PGNs for cyclic transmission, crucial for ECU applications.
-
🔄 Address Claiming: Implements the J1939 protocol’s unique address claiming and node management mechanism.
-
📥 Callback Architecture: Event-driven design provides application callbacks on PGN reception or key protocol events.
-
📦 Compact Memory Footprint: Ideal for devices with limited RAM/ROM — stack size can range from 4–14 KB depending on configuration.
-
🧩 Modular Add-ons Available: BAM, CMDT, and FP (Fast Packet) plug-ins to handle multi-packet messages.
🚛 Multi-Packet Communication: Add-on Plug-Ins
SAE J1939 includes support for multi-packet message transport, necessary when transmitting PGNs larger than 8 bytes (CAN frame limit). EmSA provides three plug-ins to support these use cases:
📡 Broadcast Announce Message (BAM) Plug-in
When messages need to be broadcast to all nodes without acknowledgment, the BAM protocol is used. It’s especially suitable for status messages or diagnostics where guaranteed delivery isn’t necessary.
Key Features:
-
Transmit PGNs > 8 bytes to all nodes without handshake
-
Full BAM protocol implementation (RTS/CTS logic not required)
-
Plug-and-play integration with the base stack
🔒 Connection Mode Data Transfer (CMDT) Plug-in
For critical data transfers (e.g., configuration, firmware updates), CMDT ensures reliable peer-to-peer communication using a handshake protocol with flow control.
Key Features:
-
Implements RTS (Request to Send) / CTS (Clear to Send) handshake
-
Robust handling of timeout and retry mechanisms
-
Essential for transmitting configuration data or command sequences between ECUs
🌊 Fast Packet (FP) Plug-in for NMEA 2000
The Fast Packet protocol is used predominantly in NMEA 2000 marine communication systems. It’s designed to transmit longer messages by segmenting them across sequential CAN frames, using a proprietary scheme for reassembly.
Key Features:
-
Specifically targets marine and recreational vehicle applications
-
Full support for NMEA 2000-compliant message segmentation and reassembly
-
Low-latency streaming of high-volume sensor data
🎯 Why Choose Micro J1939 by EmSA?
EmSA’s stack is production-proven and widely used in a range of industries, from off-highway vehicles to maritime and medical systems. Here’s why embedded developers trust it:
| Benefit | Description |
|---|---|
| 💼 Commercial Use Ready | Royalty-free license with full commercial rights |
| 🔄 Modular & Portable | Easily tailored to specific microcontroller environments |
| 📘 Comprehensive Documentation | Detailed API reference and integration guides |
| 📞 One Year Support Included | Access to EmSA engineers for integration and troubleshooting |
| 🔐 Robustness and Compliance | Fully adheres to SAE J1939 and NMEA 2000 specifications |
🔄 Integration Workflow
-
Install the Base Stack: Integrate the ANSI C code into your firmware project.
-
Add Plug-Ins as Needed: Insert BAM, CMDT, or FP modules for extended functionality.
-
Implement Callbacks: Use the event-driven model to define how your application responds to specific PGNs.
-
Test and Certify: Utilize EmSA’s test utilities or commercial CAN tools for validation.
📦 Where to Buy
You can purchase licenses directly through EmSA’s official store:
🧠 Final Thoughts
Whether you’re developing an agricultural ECU, a marine control system, or a diagnostic gateway, Micro J1939 by EmSA provides a powerful foundation for implementing SAE J1939/NMEA 2000 functionality in embedded systems. Its modular design, full source availability, and support for advanced transport protocols make it a top-tier choice for developers needing efficient and reliable CAN communication stacks.
SAE J1939 Starter Kit and Network Simulator
Our JCOM.J1939 Starter Kit and Network Simulator is designed to allow the experienced engineer and the beginner to experiment with SAE J1939 data communication without the need to connect to a real-world J1939 network, i.e., a diesel engine. It may sound obvious, but you need at least two nodes to establish a network. That fact applies especially to CAN/J1939, where the CAN controller shuts down after transmitting data without receiving a response. Therefore, 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.
The jCOM.J1939.USB gateway board is a high-performance, low-latency vehicle network adapter for SAE J1939 applications. The board supports the full SAE J1939 protocol according to J1939/81 Network Management (Address Claiming) and J1939/21 Transport Protocol (TP).










Comments are closed.