Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Driver_Utility
[BMS_Driver]
Functions | |
uint16_t | Pec15_Calc (uint8_t len,uint8_t *data) |
Function: Pec15_Calc. | |
uint16_t | pec10_calc (bool rx_cmd, int len, uint8_t *data) |
Function: Pec10_Calc. | |
void | spiSendCmd (uint8_t tx_cmd[2]) |
Function: spiSendCmd. | |
void | spiReadData (uint8_t tIC, uint8_t tx_cmd[2], uint8_t *rx_data, uint8_t *pec_error, uint8_t *cmd_cntr, uint8_t regData_size) |
Function: spiReadData. | |
void | spiWriteData (uint8_t tIC, uint8_t tx_cmd[2], uint8_t *data) |
Function: spiWriteData. | |
void | adBmsReadData (uint8_t tIC, cell_asic *ic, uint8_t cmd_arg[2], TYPE type, GRP group) |
Function: adBmsReadData. | |
void | adBmsWriteData (uint8_t tIC, cell_asic *ic, uint8_t cmd_arg[2], TYPE type, GRP group) |
Function: adBmsWriteData. | |
uint32_t | adBmsPollAdc (uint8_t tx_cmd[2]) |
Function: adBmsPollAdc. | |
Variables | |
const uint16_t | Crc15Table [256] |
Precomputed CRC15 Table. |
Function Documentation
uint32_t adBmsPollAdc | ( | uint8_t | tx_cmd[2] ) |
Function: adBmsPollAdc.
PLADC Command.
Send poll adc command and retun adc conversion count.
Parameters:
- Parameters:
-
[in] tIC Total IC [in] *ic cell_asic structure pointer [in] tx_cmd Tx command byte
- Returns:
- Pladc_count(uint32_t)
Definition at line 638 of file adi_bms_utility.cpp.
void adBmsReadData | ( | uint8_t | tIC, |
cell_asic * | ic, | ||
uint8_t | cmd_arg[2], | ||
TYPE | type, | ||
GRP | group | ||
) |
Function: adBmsReadData.
Adbms Read Data From Bms ic.
This function sends the command read payload, parse data put it in structure and check pec error.(Ex: RDCFGA)
Parameters:
- Parameters:
-
[in] tIC Total IC [in] *ic cell_asic stucture pointer [in] cmd_arg command bytes [in] TYPE Enum type of resistor [in] GRP Enum type of resistor group
- Returns:
- None
Definition at line 369 of file adi_bms_utility.cpp.
void adBmsWriteData | ( | uint8_t | tIC, |
cell_asic * | ic, | ||
uint8_t | cmd_arg[2], | ||
TYPE | type, | ||
GRP | group | ||
) |
Function: adBmsWriteData.
Adbms Write Data into Bms ic.
This function write the data to DUT. (EX: WRCFGA)
Parameters:
- Parameters:
-
[in] tIC Total IC [in] *ic cell_asic stucture pointer [in] cmd_arg command bytes [in] TYPE Enum type of resistor [in] GRP Enum type of resistor group
- Returns:
- None
Definition at line 549 of file adi_bms_utility.cpp.
uint16_t pec10_calc | ( | bool | rx_cmd, |
int | len, | ||
uint8_t * | data | ||
) |
Function: Pec10_Calc.
CRC10 Pec Calculation Function
This function calculates and return the CRC15 value
Parameters:
- Parameters:
-
[in] Len Data length [in] *data Data pointer
- Returns:
- CRC15_Value
< PEC_SEED; 0000010000
< x10 + x7 + x3 + x2 + x + 1 <- the CRC15 polynomial 100 1000 1111 48F
< Perform modulo-2 division, a byte at a time.
< Bring the next byte into the remainder.
< Perform modulo-2 division, a bit at a time.
< Try to divide the current data bit.
<equivalent to remainder & 2^14 simply check for MSB
< Perform modulo-2 division, a bit at a time
< Try to divide the current data bit
<equivalent to remainder & 2^14 simply check for MSB
Definition at line 119 of file adi_bms_utility.cpp.
uint16_t Pec15_Calc | ( | uint8_t | len, |
uint8_t * | data | ||
) |
Function: Pec15_Calc.
CRC15 Pec Calculation Function
This function calculates and return the CRC15 value
Parameters:
- Parameters:
-
[in] Len Data length [in] *data Data pointer
- Returns:
- CRC15_Value
< initialize the PEC
< loops for each byte in data array
< calculate PEC table address
< The CRC15 has a 0 in the LSB so the remainder must be multiplied by 2
- Parameters:
-
len Number of bytes that will be used to calculate a PEC data Array of data that will be used to calculate a PEC
Definition at line 88 of file adi_bms_utility.cpp.
void spiReadData | ( | uint8_t | tIC, |
uint8_t | tx_cmd[2], | ||
uint8_t * | rx_data, | ||
uint8_t * | pec_error, | ||
uint8_t * | cmd_cntr, | ||
uint8_t | regData_size | ||
) |
Function: spiReadData.
Spi Read Data, Lower Level function for adBmsReadData
This function send command to DUT and read command corrospond data byte.
Parameters:
- Parameters:
-
[in] tIC Total IC [in] tx_cmd Tx command bytes [in] *rx_data Rx data pointer [in] *pec_error Pec error pointer [in] *cmd_cntr command counter pointer
- Returns:
- None
< Read the configuration data of all ICs on the daisy chain into readdata array
< executes for each ic in the daisy chain and packs the data
< Into the r_comm array as well as check the received data for any bit errors
< Get received pec value from ic
< Copy each ic correspond data + pec value for calculate data pec
< Calculate data pec
< Match received pec with calculated pec
Definition at line 220 of file adi_bms_utility.cpp.
void spiSendCmd | ( | uint8_t | tx_cmd[2] ) |
Function: spiSendCmd.
Send command over SPI
This function send bms command in spi line
Parameters:
- Parameters:
-
[in] tIC Total IC [in] *ic cell_asic structure pointer [in] tx_cmd Tx command byte array
- Returns:
- None
Definition at line 183 of file adi_bms_utility.cpp.
void spiWriteData | ( | uint8_t | tIC, |
uint8_t | tx_cmd[2], | ||
uint8_t * | data | ||
) |
Function: spiWriteData.
write data over SPI, Lower Level function for adBmsWriteData
This function write the data into bms ic
Parameters:
- Parameters:
-
[in] tIC Total IC [in] tx_cmd Tx command bytes [in] *data Data pointer
- Returns:
- None
< executes for each LTC68xx, this loops starts with the last IC on the stack
< The first configuration written is received by the last IC in the daisy chain
< dst, src, size
< calculating the PEC for each Ics configuration register data
Definition at line 296 of file adi_bms_utility.cpp.
Variable Documentation
const uint16_t Crc15Table[256] |
{ 0x0000,0xc599, 0xceab, 0xb32, 0xd8cf, 0x1d56, 0x1664, 0xd3fd, 0xf407, 0x319e, 0x3aac, 0xff35, 0x2cc8, 0xe951, 0xe263, 0x27fa, 0xad97, 0x680e, 0x633c, 0xa6a5, 0x7558, 0xb0c1, 0xbbf3, 0x7e6a, 0x5990, 0x9c09, 0x973b, 0x52a2, 0x815f, 0x44c6, 0x4ff4, 0x8a6d, 0x5b2e, 0x9eb7, 0x9585, 0x501c, 0x83e1, 0x4678, 0x4d4a, 0x88d3, 0xaf29, 0x6ab0, 0x6182, 0xa41b, 0x77e6, 0xb27f, 0xb94d, 0x7cd4, 0xf6b9, 0x3320, 0x3812, 0xfd8b, 0x2e76, 0xebef, 0xe0dd, 0x2544, 0x2be, 0xc727, 0xcc15, 0x98c, 0xda71, 0x1fe8, 0x14da, 0xd143, 0xf3c5, 0x365c, 0x3d6e, 0xf8f7,0x2b0a, 0xee93, 0xe5a1, 0x2038, 0x7c2, 0xc25b, 0xc969, 0xcf0, 0xdf0d, 0x1a94, 0x11a6, 0xd43f, 0x5e52, 0x9bcb, 0x90f9, 0x5560, 0x869d, 0x4304, 0x4836, 0x8daf, 0xaa55, 0x6fcc, 0x64fe, 0xa167, 0x729a, 0xb703, 0xbc31, 0x79a8, 0xa8eb, 0x6d72, 0x6640, 0xa3d9, 0x7024, 0xb5bd, 0xbe8f, 0x7b16, 0x5cec, 0x9975, 0x9247, 0x57de, 0x8423, 0x41ba, 0x4a88, 0x8f11, 0x57c, 0xc0e5, 0xcbd7, 0xe4e, 0xddb3, 0x182a, 0x1318, 0xd681, 0xf17b, 0x34e2, 0x3fd0, 0xfa49, 0x29b4, 0xec2d, 0xe71f, 0x2286, 0xa213, 0x678a, 0x6cb8, 0xa921, 0x7adc, 0xbf45, 0xb477, 0x71ee, 0x5614, 0x938d, 0x98bf, 0x5d26, 0x8edb, 0x4b42, 0x4070, 0x85e9, 0xf84, 0xca1d, 0xc12f, 0x4b6, 0xd74b, 0x12d2, 0x19e0, 0xdc79, 0xfb83, 0x3e1a, 0x3528, 0xf0b1, 0x234c, 0xe6d5, 0xede7, 0x287e, 0xf93d, 0x3ca4, 0x3796, 0xf20f, 0x21f2, 0xe46b, 0xef59, 0x2ac0, 0xd3a, 0xc8a3, 0xc391, 0x608, 0xd5f5, 0x106c, 0x1b5e, 0xdec7, 0x54aa, 0x9133, 0x9a01, 0x5f98, 0x8c65, 0x49fc, 0x42ce, 0x8757, 0xa0ad, 0x6534, 0x6e06, 0xab9f, 0x7862, 0xbdfb, 0xb6c9, 0x7350, 0x51d6, 0x944f, 0x9f7d, 0x5ae4, 0x8919, 0x4c80, 0x47b2, 0x822b, 0xa5d1, 0x6048, 0x6b7a, 0xaee3, 0x7d1e, 0xb887, 0xb3b5, 0x762c, 0xfc41, 0x39d8, 0x32ea, 0xf773, 0x248e, 0xe117, 0xea25, 0x2fbc, 0x846, 0xcddf, 0xc6ed, 0x374, 0xd089, 0x1510, 0x1e22, 0xdbbb, 0xaf8, 0xcf61, 0xc453, 0x1ca, 0xd237, 0x17ae, 0x1c9c, 0xd905, 0xfeff, 0x3b66, 0x3054, 0xf5cd, 0x2630, 0xe3a9, 0xe89b, 0x2d02, 0xa76f, 0x62f6, 0x69c4, 0xac5d, 0x7fa0, 0xba39, 0xb10b, 0x7492, 0x5368, 0x96f1, 0x9dc3, 0x585a, 0x8ba7, 0x4e3e, 0x450c, 0x8095 }
Precomputed CRC15 Table.
< This documentation provides details about BMS driver APIs and their usage. Using the BMS Driver Application can:
- Read/Write the configuration registers of the BMS devices stacked in daisy chaining.
- Send commands and Read the Cell Voltages, Aux Voltages and Status registers (Sum of cells, Internal Die temperature etc.)
<**************************************** BMS Driver APIs definitions
<
Definition at line 44 of file adi_bms_utility.cpp.
Generated on Thu Oct 13 2022 07:45:26 by
