5. Cabling foxBMS

In the preceding sections, the foxBMS Master Unit has been connected to the power supply and the foxBMS firmware flashed on the MCU0 and MCU1. This section describes the foxBMS hardware in more details and how to connect the foxBMS Master Unit to the foxBMS Slave Units that perform the cell voltage and temperature measurements. The CAN communication is also described.


When the connection is made between the foxBMS Master Unit and the foxBMS Slave Units, both primary and secondary isoSPI daisy chains have to be connected.

5.1. Convention for Connector Numbering

Fig. 5.4 presents the convention for the connector numbering. It is used throughout the documentation.


Fig. 5.4 Supply connector pin out, receptable - rear view, header - front view (image source: MOLEX)

There are two types of connectors:

  • Header
  • Receptable, plugged into the header

The numbering shown on the left in fig. 5.4 is always valid when viewing in the direction indicated by the arrow with the indication viewing direction. This must be taken into account when crimping the receptables.

5.2. Global Description of the foxBMS Hardware

The foxBMS system can be mounted in a metal housing, shown in fig. 5.5.


Fig. 5.5 foxBMS Master Unit housing

In this configuration, the top plate can be removed to have access to the foxBMS electronic boards. This is done by unscrewing the four screws holding the top plate.

The open housing is shown in fig. 5.6.


Fig. 5.6 foxBMS Master Unit housing, top plate removed

The boards can be removed from the housing. The boards without housing are shown in fig. 5.7. To start, it is not necessary to remove the boards from the housing, but it is helpful to be able to look at the LEDs located on the BMS-Master Board.


Fig. 5.7 foxBMS board stack removed from the housing (both BMS-Master Board and BMS-Interface Board are shown)

Fig. 5.8 shows how to put the boards back in the housing.


Fig. 5.8 Introduction of the board stack in the foxBMS Master Unit housing

5.3. Detailed Description of the Hardware Parts

The heart of foxBMS is the BMS-Master Board, shown in fig. 5.9.


Fig. 5.9 foxBMS BMS-Master Board

As shown in fig. 5.9, the BMS-Master Board has two microcontroller units (MCU):

  • Primary (also called MCU0)
  • Secondary (also called MCU1)

Primary is the MCU where the foxBMS software is run. The secondary MCU is present for redundant safety when developing software code on the primary MCU.

Each MCU has a set of LEDs, as shown in fig. 5.9:

  • Power LED
  • Red indicator LED
  • Green indicator LED

The power LED must lit when power is supplied to the BMS-Master Board, and the indicator LEDs should blink, except during flashing of software on the MCU.

If a debugger is used, it must be connected to the debug port (i.e., JTAG-interface) corresponding to the MCU being used.

An extension board named BMS-Extension Board is present under the BMS-Master Board and is shown in fig. 5.10.


Fig. 5.10 foxBMS BMS-Extension Board

It is used to provide more I/O and interfaces than with the BMS-Master Board alone.

The BMS-Interface Board is located on top of the BMS-Master Board (shown in fig. 5.11).


Fig. 5.11 foxBMS BMS-Interface Board

Its purpose is to convert the signals sent by the Serial Peripheral Interface (SPI) of the BMS-Master Board to the first BMS-Slave Board in the daisy by using a proprietary isoSPI interface from Linear Technology.

An example of a BMS-Slave Board is shown in fig. 5.12.


Fig. 5.12 foxBMS BMS-Slave Board

The BMS-Slave Board is based on the LTC6811-1 battery cell monitoring chip. More information on the LTC6811-1 integrated circuit can be found in the datasheet ([ltc_datasheet6804] and [ltc_datasheet6811]). It supervises up to 12 battery cells connected in series. It performs voltage measurements, temperature measurements and passive cell balancing. In the daisy chain, the BMS-Slave Boards are connected via differential pair cables.

The BMS-Slave Board is not designed to be used in a specific housing.

5.4. Use of foxBMS in a Battery System

Fig. 5.13 present the organization of the hardware. The system consists of \(n\) battery modules and \(m\) BMS-Slave Boards. Each BMS-Slave Board is connected to a battery module, where it measures cell voltages and cell temperatures. The BMS-Slave Boards are connected in a daisy chain configuration: when a data package is sent to the daisy chain, it is first received by slave 1, which transmits it to slave 2 and so on until the data package is received by the last BMS-Slave Board.


Fig. 5.13 foxBMS in the battery system

The BMS-Interface Board converts the messages sent by the BMS-Master Board so that they can be transmitted to the daisy chain and vice versa.

The foxBMS Master Unit communicates with the current sensor (for instance, Isabellenhuette IVT-MOD or IVT-S) via CAN.

Communication with the control unit (for instance, a personal computer), is also made via CAN.

5.5. Hardware Setup of the BMS-Master Board and the BMS-Slave Board

Fig. 5.14 presents all the connectors of the BMS-Master Board.


Fig. 5.14 Front view of the foxBMS Master, indicating the location of each header

The connectors needed for this quickstart guide are indicated in the following parts.

5.5.1. Connecting the BMS-Slave Board to the BMS-Master Board


When the connection is made between the BMS-Master Board and the BMS-Slave Board, two communication lines have to be connected: the primary and the secondary daisy chain.

The pin assignments and cabling instructions for all different BMS-Slave Boards are documented in section Slaves.

5.5.2. CAN Connector

The connector indicated as CAN 0 in fig. 5.14 must be used on the BMS-Master Board. Its layout is described in table 5.1.

Table 5.1 Master CAN connection
Pin Signal Direction Description
1 GND_EXT0 Output  
2 NC  
3 CAN0_L Input/Output  
4 CAN0_H Input/Output  

Ground of CAN0 is shared with supply ground GND_EXT0. CAN0 is isolated from the MCU0 via the isolated CAN transceiver TJA1052. The CAN transceiver may be put into standby mode by MCU0.

5.6. Communication with the BMS-Master Board

Once foxBMS is running, CAN messages should be sent.


A periodic state request must be made to the system by sending a message with ID 0x152 on the bus CAN periodically. If not, the system will go into an error state. The period must be 100ms. More information on state requests can be found in the section Communicating over CAN. Typically the request Standby state can be made.

If voltages have been applied to the voltage connector, they are sent with the message IDs 0x550, 0x551, 0x552 and 0x553. Details can be found in the section Communicating over CAN.

If temperature sensors have been connected and the conversion function changed in the software, temperature are sent with the messages with IDs 0x353 and 0x354. Details can be found in the section Communicating over CAN.

5.7. Current Sensor Configuration

Further information on the current sensor tested with foxBMS can be found in the datasheet of the current sensor. By default, foxBMS uses the factory defaults of the current sensor, which works in cyclic (non-triggered) mode. Another possibility tested with foxBMS is to use the current sensor in triggered mode. For this, the current sensor IVT-MOD from Isabellenhuette has to be reprogrammed. The changes compared to factory default are then:

  • The CAN Message IDs was changed
  • The triggered measurement mode was activated

The two following parts sum up the differences between factory setup and triggered setup tested with foxBMS.

5.7.1. Factory Default

  • CAN IDs
    • 0x411 (dec: 1041) Command
    • 0x521 (dec: 1313) Current Measurement
    • 0x522 (dec: 1314) Voltage Measurement 1
    • 0x523 (dec: 1315) Voltage Measurement 2
    • 0x524 (dec: 1316) Voltage Measurement 3
    • 0x511 (dec: 1297) Response
  • Measurement Mode: Cyclic (Disabled and Triggered are other possible modes)

5.7.2. After Configuration

  • CAN IDs
    • 0x35B (dec: 859) Command
    • 0x35C (dec: 860) Current Measurement
    • 0x35D (dec: 861) Voltage Measurement 1
    • 0x35E (dec: 862) Voltage Measurement 2
    • 0x35F (dec: 863) Voltage Measurement 3
    • 0x7FF (dec: 2047) Response
  • Measurement Mode: Triggered