foxBMS - Unit Tests
1.3.0
The foxBMS Unit Tests API Documentation
|
Headers for the driver for the MAX17841B ASCI and MAX1785x monitoring chip. More...
#include "database_cfg.h"
#include "mxm_cfg.h"
#include "mxm_17841b.h"
#include "mxm_1785x_tools.h"
#include "mxm_basic_defines.h"
#include "mxm_battery_management.h"
#include "mxm_crc8.h"
Go to the source code of this file.
Macros | |
#define | MXM_THRESHOLD_DIAGNOSTIC_AFTER_CYCLES (10u) |
Battery monitoring driver for MAX1785x battery monitoring ICs. More... | |
#define | MXM_VOLTAGE_READ_ARRAY_LENGTH (MXM_MAXIMUM_NR_OF_CELLS_PER_MODULE + 3u) |
#define | MXM_CELLS_IN_LSB (8u) |
#define | MXM_REF_UNIPOLAR_CELL_mV (5000u) |
Headers for the driver for the MAX17841B ASCI and MAX1785x monitoring chip.
SPDX-License-Identifier: BSD-3-Clause
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
We kindly request you to use one or more of the following phrases to refer to foxBMS in your hardware, software, documentation or advertising materials:
def
Definition in file mxm_1785x.h.
#define MXM_CELLS_IN_LSB (8u) |
number of cells that are in the LSB register of i.e. pin open diagnostic
Definition at line 101 of file mxm_1785x.h.
#define MXM_REF_UNIPOLAR_CELL_mV (5000u) |
unipolar full-scale reference value for cell voltage in mV
Definition at line 104 of file mxm_1785x.h.
#define MXM_THRESHOLD_DIAGNOSTIC_AFTER_CYCLES (10u) |
Battery monitoring driver for MAX1785x battery monitoring ICs.
This module supplies a driver for the Battery Monitoring ICs of the MAX1785x-family by Maxim Integrated.
Entry point for the module is the function MXM_Tick() in mxm_afe.c. It handles the measurement flow and the coordination of the underlying state-machines. Below this layer two state-machines are implemented.
The state-machine in mxm_battery_management.c is executed with the MXM_5XStateMachine()-function. This state-machine exposes commands of the Maxim Battery Management Protocol to the upper layers. Below, it translates these commands into state-changes for the underlying state-machine. This state-machine is implemented in mxm_17841b.c and executed with MXM_41BStateMachine(). It handles the register- and buffer-transactions required for the MAX17841B communication interface (Maxim calls this chip ASCI). threshold of iterations after which a diagnostic cycle is entered by the state-machine
Definition at line 95 of file mxm_1785x.h.
#define MXM_VOLTAGE_READ_ARRAY_LENGTH (MXM_MAXIMUM_NR_OF_CELLS_PER_MODULE + 3u) |
length of voltage-read array
Definition at line 98 of file mxm_1785x.h.
void MXM_CheckIfErrorCounterCanBeReset | ( | MXM_MONITORING_INSTANCE_s * | pInstance | ) |
Function that checks if the error counter can be reset.
[in,out] | pInstance | pointer to the state struct |
Definition at line 888 of file mxm_1785x.c.
STD_RETURN_TYPE_e MXM_ConstructBalancingBuffer | ( | MXM_BALANCING_STATE_s * | pBalancingInstance | ) |
Fill the balancing datastructure.
This function fills the data-structure that describes which balancing channels of the monitoring ICs should be activated.
[in,out] | pBalancingInstance | pointer to the balancing state |
Definition at line 1016 of file mxm_1785x.c.
void MXM_ErrorHandlerReset | ( | MXM_MONITORING_INSTANCE_s * | pInstance, |
bool | immediateReset | ||
) |
This error handler is used as a last resort and tries a reset of the complete driver.
A reset is done by setting the relevant flag in the state struct and waiting for the reset to occur (done by AFE on next tick). Before this last resort measure is taken, a error counter has to be counted up.
[in,out] | pInstance | pointer to the state struct in order to write the reset flag |
[in] | immediateReset | if set to true, a reset will be requested independently of the error counter |
Definition at line 901 of file mxm_1785x.c.
MXM_MODEL_ID_e MXM_GetModelIdOfDaisyChain | ( | void | ) |
returns the model ID of the daisy chain
this function is to be implemented by the driver in order to tell the rest of the driver which model is used. Currently, this implementation does not support mixed model daisy-chains.
dummy implementation for the model id
Definition at line 91 of file mxm_17852.c.
bool must_check_return MXM_HandleStateReadall | ( | MXM_MONITORING_INSTANCE_s * | pInstance, |
MXM_REG_NAME_e | registerName, | ||
MXM_STATEMACHINE_OPERATION_STATES_e | nextState | ||
) |
Handle the statemachine-transactions for a READALL.
Call this function and pass on the state-variable, the register to be read and the next state. The function will handle the communication with the lower state-machine and will transition into the next state, if the command has been sent successfully. Moreover it will return true when transitioning. The return value has to be checked and used to execute additional code if necessary.
[in,out] | pInstance | pointer to instance of the mxm monitoring state-machine |
[in] | registerName | register that should be read |
[in] | nextState | state that should be entered upon successful completion |
Definition at line 940 of file mxm_1785x.c.
void MXM_HandleStateWriteall | ( | MXM_MONITORING_INSTANCE_s * | pInstance, |
MXM_STATEMACHINE_OPERATION_STATES_e | nextState | ||
) |
Handle the statemachine-transactions for a WRITEALL.
Before calling this function, update the command buffer of the state-variable. Then call this function and pass on the state-variable and the next state. The function will handle the communication with the lower state-machine and will transition into the next state, if the command has been sent successfully.
[in,out] | pInstance | pointer to instance of the mxm monitoring state-machine |
[in] | nextState | state that should be entered upon successful completion |
Definition at line 912 of file mxm_1785x.c.
void MXM_InitializeStateStruct | ( | MXM_BALANCING_STATE_s * | pBalancingInstance, |
MXM_MONITORING_INSTANCE_s * | pMonitoringInstance | ||
) |
Initializes the state structs with default values.
This function is called through the startup of the driver in order to ensure proper default values.
[out] | pBalancingInstance | instance of the balancing state struct that shall be initialized |
[out] | pMonitoringInstance | instance of the monitoring state struct that shall be initialized |
Definition at line 1164 of file mxm_1785x.c.
MXM_MONITORING_STATE_e must_check_return MXM_MonGetVoltages | ( | MXM_MONITORING_INSTANCE_s * | pState, |
MXM_REG_NAME_e | regAddress | ||
) |
Encapsulation for reading voltages from a register.
This function encapsulates the request of state-changes and following conversion for the reading of an arbitrary measurement voltage of the daisy-chain. Its parameters are a variable for tracking the state of the underlying state-machines and the register address that has to be queried. It returns whether the action has been successful or not. In order to obtain all cell voltages this function has to be called for every relevant register address.
[in,out] | pState | pointer to the state-machine struct |
[in] | regAddress | register address that shall be queried |
Definition at line 1275 of file mxm_1785x.c.
STD_RETURN_TYPE_e MXM_ParseVoltagesIntoDB | ( | const MXM_MONITORING_INSTANCE_s *const | kpkInstance | ) |
Copies measured voltage data into the database.
This function copies the acquired voltage data from MXM_MONITORING_INSTANCE_s::localVoltages into the database-struct mxm_tableCellVoltages and copies this struct into the database. This action is required due to different data layouts. This driver always stores its cell-voltages in an array with 14*32 = 448 cells in order to reduce the amount of different configurations and variants.
This function maps these values into the database-struct which scales with the number of connected cells and monitoring ICs.
[in] | kpkInstance | pointer to the MXM_MONITORING_INSTANCE_s struct |
< invalid configuration!
Definition at line 1075 of file mxm_1785x.c.
STD_RETURN_TYPE_e MXM_PreInitSelfCheck | ( | MXM_MONITORING_INSTANCE_s * | pState | ) |
Execute all preinit selfchecks.
Executes the following self-checks:
These self-checks do not need an initialized daisy-chain and can therefore be executed at startup of the state-machine.
After execution of each test, the return value is stored in the supplied state-struct. The function returns whether the self-check has successfully passed.
[in,out] | pState | pointer to the state-struct, will write status into |
Definition at line 1237 of file mxm_1785x.c.
STD_RETURN_TYPE_e MXM_ProcessOpenWire | ( | const MXM_MONITORING_INSTANCE_s *const | kpkInstance | ) |
Processes the retrieved information on openwire.
Parses through a retrieved RX buffer and writes into the database.
[in,out] | kpkInstance | pointer to instance of the Maxim monitoring state-machine |
Definition at line 971 of file mxm_1785x.c.
void MXM_StateMachine | ( | MXM_MONITORING_INSTANCE_s * | pInstance | ) |
Main state-machine implementation.
This state-machine handles the main state of the driver. It runs the self-check, initializes communication and then transitions into the operation state in which it executes the state-machine described in MXM_StateMachineOperation().
[in,out] | pInstance | used as both input and output (stores state-information, requests and intermediate values) |
Definition at line 1314 of file mxm_1785x.c.
void MXM_StateMachineOperation | ( | MXM_MONITORING_INSTANCE_s * | pState | ) |
State-Machine implementation for operation state.
This state-machine contains the "program" with which the connected monitoring satellites are controlled. It is entered by MXM_StateMachine() once the daisy-chain has been initialized and is in operation state.
[in,out] | pState | used as both input and output (stores state-information, requests and intermediate values) |
dummy implementation for the Operation state machine
Mapping of voltage registers
This array maps registers of the monitoring IC onto cell-numbers. The register values are defined in the MXM_REG_NAME_e enum. For now the length of this array is MXM_VOLTAGE_READ_ARRAY_LENGTH as it is enabled for the measurement of all cells, two AUX-voltages and one block voltage. This has to be adapted once this driver is enabled for general operation.
Definition at line 95 of file mxm_17852.c.
STD_RETURN_TYPE_e TEST_MXM_ParseVoltageReadall | ( | uint8_t * | voltRxBuffer, |
uint16_t | voltRxBufferLength, | ||
MXM_DATA_STORAGE_s * | datastorage, | ||
MXM_CONVERSION_TYPE_e | conversionType | ||
) |
STD_RETURN_TYPE_e TEST_MXM_ParseVoltageReadallTest | ( | MXM_MONITORING_INSTANCE_s * | pInstance | ) |
STD_RETURN_TYPE_e TEST_MXM_ParseVoltagesIntoDB | ( | MXM_MONITORING_INSTANCE_s * | pInstance | ) |