foxBMS  1.1.0
The foxBMS Battery Management System API Documentation
mxm_mic.c File Reference

Measurement IC driver implementation. More...

#include "general.h"
#include "mic.h"
#include "mxm_17841b.h"
#include "mxm_1785x.h"
#include "mxm_battery_management.h"
#include "os.h"
Include dependency graph for mxm_mic.c:

Go to the source code of this file.

Functions

static void MXM_Tick (void)
 Tick function. More...
 
STD_RETURN_TYPE_e MIC_TriggerIc (void)
 
STD_RETURN_TYPE_e MIC_Init (void)
 
STD_RETURN_TYPE_e MIC_StartMeasurement (void)
 Makes the initialization request to the MIC state machine. More...
 
bool MIC_IsFirstMeasurementCycleFinished (void)
 Checks if the first MIC measurement cycle was made. More...
 
STD_RETURN_TYPE_e MIC_RequestIoWrite (uint8_t string)
 Makes the request to the MIC state machine to write to the IO port-expander. More...
 
STD_RETURN_TYPE_e MIC_RequestIoRead (uint8_t string)
 Makes the request to the MIC state machine to read from the IO port-expander. More...
 
STD_RETURN_TYPE_e MIC_RequestTemperatureRead (uint8_t string)
 Makes the request to the MIC state machine to read from the external temperature sensor on slaves. More...
 
STD_RETURN_TYPE_e MIC_RequestBalancingFeedbackRead (uint8_t string)
 Makes the request to the MIC state machine to read balancing feedback from the slaves. More...
 
STD_RETURN_TYPE_e MIC_RequestEepromRead (uint8_t string)
 Makes the request to the MIC state machine to read from the external EEPROM on slaves. More...
 
STD_RETURN_TYPE_e MIC_RequestEepromWrite (uint8_t string)
 Makes the request to the MIC state machine to write to the external EEPROM on slaves. More...
 
STD_RETURN_TYPE_e MIC_RequestOpenWireCheck (uint8_t string)
 Makes the request to the MIC state machine to perform open-wire check. More...
 

Variables

static MXM_41B_INSTANCE_s mxm_41b_state
 
static MXM_5X_INSTANCE_s mxm_5x_state
 
static MXM_MONITORING_INSTANCE_s mxm_state
 
static int32_t mxm_numberOfInstances = 0
 

Detailed Description

Measurement IC driver implementation.

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:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

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:

  • ″This product uses parts of foxBMS®″
  • ″This product includes parts of foxBMS®″
  • ″This product is derived from foxBMS®″
Author
foxBMS Team
Date
2020-06-16 (date of creation)
Updated
2021-07-14 (date of last update)
Prefix
MIC

Definition in file mxm_mic.c.

Function Documentation

◆ MIC_Init()

STD_RETURN_TYPE_e MIC_Init ( void  )

initializer, this function is called in order to initialize the MIC

Definition at line 188 of file mxm_mic.c.

Here is the call graph for this function:

◆ MIC_IsFirstMeasurementCycleFinished()

bool MIC_IsFirstMeasurementCycleFinished ( void  )

Checks if the first MIC measurement cycle was made.

this function returns whether the first measurement cycle has finished

Returns
true is the first measurement cycle was made, false otherwise

Definition at line 204 of file mxm_mic.c.

Here is the call graph for this function:

◆ MIC_RequestBalancingFeedbackRead()

STD_RETURN_TYPE_e MIC_RequestBalancingFeedbackRead ( uint8_t  string)

Makes the request to the MIC state machine to read balancing feedback from the slaves.

Parameters
stringstring addressed by the request

Definition at line 226 of file mxm_mic.c.

◆ MIC_RequestEepromRead()

STD_RETURN_TYPE_e MIC_RequestEepromRead ( uint8_t  string)

Makes the request to the MIC state machine to read from the external EEPROM on slaves.

Parameters
stringstring addressed by the request

Definition at line 231 of file mxm_mic.c.

◆ MIC_RequestEepromWrite()

STD_RETURN_TYPE_e MIC_RequestEepromWrite ( uint8_t  string)

Makes the request to the MIC state machine to write to the external EEPROM on slaves.

Parameters
stringstring addressed by the request

Definition at line 236 of file mxm_mic.c.

◆ MIC_RequestIoRead()

STD_RETURN_TYPE_e MIC_RequestIoRead ( uint8_t  string)

Makes the request to the MIC state machine to read from the IO port-expander.

Parameters
stringstring addressed by the request

Definition at line 216 of file mxm_mic.c.

◆ MIC_RequestIoWrite()

STD_RETURN_TYPE_e MIC_RequestIoWrite ( uint8_t  string)

Makes the request to the MIC state machine to write to the IO port-expander.

Parameters
stringstring addressed by the request

Definition at line 211 of file mxm_mic.c.

◆ MIC_RequestOpenWireCheck()

STD_RETURN_TYPE_e MIC_RequestOpenWireCheck ( uint8_t  string)

Makes the request to the MIC state machine to perform open-wire check.

Parameters
stringstring addressed by the request

Definition at line 241 of file mxm_mic.c.

◆ MIC_RequestTemperatureRead()

STD_RETURN_TYPE_e MIC_RequestTemperatureRead ( uint8_t  string)

Makes the request to the MIC state machine to read from the external temperature sensor on slaves.

Parameters
stringstring addressed by the request

Definition at line 221 of file mxm_mic.c.

◆ MIC_StartMeasurement()

STD_RETURN_TYPE_e MIC_StartMeasurement ( void  )

Makes the initialization request to the MIC state machine.

this function should tell the MIC that it should start measuring

Returns
true or false

Definition at line 193 of file mxm_mic.c.

Here is the call graph for this function:

◆ MIC_TriggerIc()

STD_RETURN_TYPE_e MIC_TriggerIc ( void  )

tick function, this function is called to advance the state machine

Definition at line 183 of file mxm_mic.c.

Here is the call graph for this function:

◆ MXM_Tick()

static void MXM_Tick ( void  )
static

Tick function.

This function is the central entry-point for this driver. It calls the state-machines via the functions MXM_StateMachine(), MXM_5XStateMachine() and MXM_41BStateMachine().

The state-machines are called in such a way that the main blocking point is the SPI interface. (That means the order is optimized so that every cycle a SPI command should be available for sending or receiving as this is the limiting ressource.)

Definition at line 161 of file mxm_mic.c.

Here is the call graph for this function:

Variable Documentation

◆ mxm_41b_state

MXM_41B_INSTANCE_s mxm_41b_state
static
Initial value:
= {
.aliveCounter = 0,
.extendMessageBytes = 0,
.waitCounter = 0,
.regRXIntEnable = 0x00u,
.regTXIntEnable = 0x00u,
.regRXStatus = 0x00u,
.regTXStatus = 0x00u,
.regConfig1 = 0x60u,
.regConfig2 = 0x10u,
.regConfig3 = 0x0Fu,
.spiRXBuffer = {0},
.spiTXBuffer = {0},
}
@ MXM_STATEMACH_41B_UNINITIALIZED
Definition: mxm_17841b.h:81
@ MXM_41B_ENTRY_SUBSTATE
Definition: mxm_17841b.h:98

state variable for the MAX17841B driver

Definition at line 67 of file mxm_mic.c.

◆ mxm_5x_state

MXM_5X_INSTANCE_s mxm_5x_state
static
Initial value:
= {
.substate = MXM_5X_ENTRY_SUBSTATE,
.commandPayload =
{
.regAddress = (MXM_REG_NAME_e)0x00u,
.lsb = 0x00u,
.msb = 0x00u,
},
.status41b = MXM_41B_STATE_UNSENT,
.numberOfSatellites = 0,
.numberOfSatellitesIsGood = STD_NOT_OK,
.lastDCByte = 0,
}
@ STD_NOT_OK
Definition: fstd_types.h:73
@ MXM_41B_STATE_UNSENT
Definition: mxm_17841b.h:124
@ MXM_STATEMACH_5X_UNINITIALIZED
@ MXM_5X_ENTRY_SUBSTATE
enum MXM_REG_NAME MXM_REG_NAME_e
MAX1785x register names.

state variable for the Battery Management protocol driver

Definition at line 85 of file mxm_mic.c.

◆ mxm_numberOfInstances

int32_t mxm_numberOfInstances = 0
static

counter variable for the number of all instances of this driver

Definition at line 140 of file mxm_mic.c.

◆ mxm_state

MXM_MONITORING_INSTANCE_s mxm_state
static

state variable for the Maxim monitoring driver

Definition at line 101 of file mxm_mic.c.