When you're designing a battery pack for a robot, drone, or AGV, the chemistry and cell format get most of the attention. But the communication protocol between your battery management system (BMS) and your host controller is just as critical — and it's where many hardware startups make expensive mistakes late in development.
This guide covers the three protocols you'll encounter most often: CAN Bus, SMBus, and I2C. We'll look at what each one actually does, where it excels, and which applications it's wrong for.
What Does a Battery Communication Protocol Actually Do?
Before comparing protocols, it's worth being precise about what we're talking about. A battery communication protocol lets your BMS report state-of-charge (SOC), state-of-health (SOH), cell voltages, pack temperature, current draw, fault codes, and remaining runtime to the host system. It also lets the host send commands — like charge enable, discharge limit, or emergency shutdown.
Without this communication layer, your system is flying blind. You get a voltage on the power rail and nothing else. That's fine for a simple RC aircraft. It's not fine for a medical device, an autonomous robot, or any system where a surprise shutdown causes damage or injury.
CAN Bus: The Industrial Standard
Controller Area Network (CAN Bus) was developed by Bosch in the 1980s for automotive applications. It's a differential two-wire bus (CANH and CANL) that runs at speeds up to 1 Mbps and supports dozens of nodes on a single bus.
Why engineers choose CAN Bus:
CAN Bus is built for electrically noisy environments. The differential signaling means common-mode noise — the kind you get from motor controllers, inverters, and switching power supplies — is rejected at the receiver. In an AGV warehouse with 20 motors running simultaneously, this matters enormously.
CAN Bus also has hardware-level fault detection built in. Every message includes a CRC, and the protocol automatically handles bus arbitration when multiple nodes try to transmit simultaneously. You don't have to implement collision detection in firmware — the silicon handles it.
For multi-pack systems — like an AGV with a 48V main pack and a 24V auxiliary pack — CAN Bus lets both BMS units share a single two-wire bus back to the main controller. SMBus and I2C would require separate buses or complex multiplexing.
When CAN Bus is wrong:
CAN Bus adds cost and complexity. You need CAN transceivers on both ends, a proper 120Ω termination resistor at each end of the bus, and firmware that speaks CANopen or a custom message format. For a simple handheld medical device or a small consumer drone where the BMS and host MCU are 5cm apart on the same PCB, CAN Bus is overkill.
Sky Power packs that use CAN Bus: Our SKP-48V series for AGV applications ships with CAN Bus as the default interface, running CANopen DS401 for compatibility with standard robot controllers.
SMBus: The Smart Battery Standard
System Management Bus (SMBus) is a two-wire protocol derived from I2C, developed by Intel in 1995. It became the foundation of the Smart Battery Specification (SBS) — the standard that defines how laptop batteries communicate with chargers and hosts.
Why engineers choose SMBus:
If you're building something that needs to talk to off-the-shelf chargers, SMBus is your answer. The Smart Battery Specification defines exactly which registers to read: 0x09 for remaining capacity, 0x0F for battery status, 0x17 for cycle count, and so on. A BMS that implements SBS will work with any SBS-compliant charger without custom firmware.
SMBus also has tighter electrical specifications than raw I2C — defined voltage levels, timeout behavior, and a mandatory error recovery mechanism. This makes it more robust in practice, even though the underlying protocol looks similar.
For medical handheld devices seeking IEC 62133 or UL 2054 certification, SMBus with a full SBS implementation gives you a well-documented communication interface that certification bodies understand. This can simplify your compliance documentation significantly.
When SMBus is wrong:
SMBus is slow (100 kHz standard, 400 kHz in high-speed mode) and short-range. It's designed for on-board communication — BMS to charger IC to host MCU, all on the same PCB or connected by a short cable. Run SMBus across a cable longer than about 30cm in an electrically noisy environment and you'll start seeing communication errors.
SMBus also doesn't support multiple masters well. In a system where both a charger and a host controller need to query the BMS simultaneously, you'll need careful bus arbitration logic in firmware.
I2C: Flexible but Fragile
I2C (Inter-Integrated Circuit) is the grandfather of both SMBus and many BMS interfaces. It's a two-wire protocol (SDA and SCL) that supports multiple devices on the same bus using 7-bit addresses.
Why engineers choose I2C:
I2C is everywhere. Nearly every BMS IC — Texas Instruments BQ series, Maxim DS2782, Renesas ISL9238 — exposes an I2C interface. If you're doing a custom BMS design rather than buying a pre-built smart battery, you'll almost certainly be reading cell voltages and temperatures over I2C.
I2C is also simple to implement. Most microcontrollers have hardware I2C peripherals, and there are libraries for every platform from Arduino to STM32 to ESP32. For a drone startup doing their first custom battery pack, getting cell voltage telemetry over I2C in an afternoon is realistic.
When I2C is wrong:
I2C has no built-in error detection beyond an ACK/NACK from the receiver. In a noisy environment — near a brushless motor, a switching regulator, or a high-current discharge — you can get corrupted data with no indication that anything went wrong. Your SOC reading might be garbage and your firmware won't know.
I2C also has strict capacitance limits. The bus capacitance ceiling is 400pF, which limits cable length to roughly 1 meter at standard speeds. For any system where the BMS and host controller aren't on the same board, I2C becomes problematic.
Protocol Selection Guide
| CAN Bus | SMBus | I2C | |
|---|---|---|---|
| Best for | AGVs, multi-pack systems, industrial robots | Medical devices, SBS-compliant chargers | Custom BMS design, same-board communication |
| Noise immunity | Excellent | Good | Poor |
| Cable length | Up to 40m | <1m | <1m |
| Speed | Up to 1 Mbps | 100-400 kHz | 100 kHz - 3.4 MHz |
| Cost | Higher (transceiver ICs) | Low | Very low |
| Certification friendly | CANopen is well-documented | SBS is understood by certification bodies | Custom, requires more documentation |
| Multi-node | Excellent | Limited | Good |
Real-World Recommendations by Application
Drone / UAV: Start with I2C for your prototype — it's fast to implement and fine for the short distances inside a drone. Move to CAN Bus if you're building a larger platform (>10kg) where the flight controller and battery are separated by more than 30cm, or if you're integrating with a standard autopilot like PX4 that expects UAVCAN.
Ground robot / AGV: CAN Bus from day one. The motor noise alone will cause problems with I2C or SMBus. Use CANopen DS401 for maximum compatibility with off-the-shelf robot controllers.
Medical handheld device: SMBus with full Smart Battery Specification implementation. Your certification body will expect it, your charger IC probably already speaks it, and the short cable distances are fine for SMBus's limitations.
Electric small vehicle (e-scooter, e-bike, light EV): CAN Bus for anything with a separate BMS and vehicle controller. The wire run from battery to controller is usually too long for I2C or SMBus to be reliable.
Requesting a Pack with Your Protocol
When you contact Sky Power (US) for a custom pack quote, specify your communication protocol requirement upfront. Our standard configurations ship with:
- SKP-18650 / SKP-21700 series: I2C or SMBus selectable via BMS firmware
- SKP-48V AGV series: CAN Bus (CANopen DS401) standard, I2C available
- SKP Medical series: SMBus with full SBS 1.1 implementation, IEC 62133 and UL certified
All packs are UN38.3 and CE certified as standard. Lead time is typically 10 weeks from approved specification, with MOQ starting from 50 packs for development builds.
Free Tool
Simulate Your Battery Pack
Run a free certified thermal simulation and download a verification report for your engineering team.
Launch Simulator →