Advanced Distributed Systems module at HSLU
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
ADIS_Projects/McuLib/src/McuFXOS8700.h

707 lines
26 KiB

/* ###################################################################
** This component module is generated by Processor Expert. Do not modify it.
** Filename : McuFXOS8700.h
** CDE edition : Standard
** Project : FRDM-K64F_Generator
** Processor : MK64FN1M0VLL12
** Component : FXOS8700CQ
** Version : Component 01.036, Driver 01.00, CPU db: 3.00.000
** Compiler : GNU C Compiler
** Date/Time : 2021-12-26, 15:48, # CodeGen: 768
** Abstract :
** Implements a Driver for the MMA8451 accelerometer from Freescale.
** Settings :
** Component Name : McuFXOS8700
** Slave Address : 1E
** I2C Bus : McuGenericI2C
** Constant Offsets : Enabled
** X offset : 0
** Y offset : 0
** Z offset : 0
** Shell : Enabled
** Shell : McuShell
** Utility : McuUtility
** Contents :
** Enable - uint8_t McuFXOS8700_Enable(void);
** Disable - uint8_t McuFXOS8700_Disable(void);
** MagEnable - uint8_t McuFXOS8700_MagEnable(void);
** MagDisable - uint8_t McuFXOS8700_MagDisable(void);
** isEnabled - uint8_t McuFXOS8700_isEnabled(bool *isEnabled);
** SwReset - uint8_t McuFXOS8700_SwReset(void);
** ReadReg8 - uint8_t McuFXOS8700_ReadReg8(uint8_t addr, uint8_t *val);
** WriteReg8 - uint8_t McuFXOS8700_WriteReg8(uint8_t addr, uint8_t val);
** GetX - int16_t McuFXOS8700_GetX(void);
** GetY - int16_t McuFXOS8700_GetY(void);
** GetZ - int16_t McuFXOS8700_GetZ(void);
** GetRaw8XYZ - uint8_t McuFXOS8700_GetRaw8XYZ(void* *xyz);
** CalibrateX1g - void McuFXOS8700_CalibrateX1g(void);
** CalibrateY1g - void McuFXOS8700_CalibrateY1g(void);
** CalibrateZ1g - void McuFXOS8700_CalibrateZ1g(void);
** GetXmg - int16_t McuFXOS8700_GetXmg(void);
** GetYmg - int16_t McuFXOS8700_GetYmg(void);
** GetZmg - int16_t McuFXOS8700_GetZmg(void);
** MeasureGetRawX - uint16_t McuFXOS8700_MeasureGetRawX(void);
** MeasureGetRawY - uint16_t McuFXOS8700_MeasureGetRawY(void);
** MeasureGetRawZ - uint16_t McuFXOS8700_MeasureGetRawZ(void);
** GetXOffset - int16_t McuFXOS8700_GetXOffset(void);
** GetYOffset - int16_t McuFXOS8700_GetYOffset(void);
** GetZOffset - int16_t McuFXOS8700_GetZOffset(void);
** GetX1gValue - int16_t McuFXOS8700_GetX1gValue(void);
** GetY1gValue - int16_t McuFXOS8700_GetY1gValue(void);
** GetZ1gValue - int16_t McuFXOS8700_GetZ1gValue(void);
** SetFastMode - uint8_t McuFXOS8700_SetFastMode(bool on);
** WhoAmI - uint8_t McuFXOS8700_WhoAmI(uint8_t *value);
** GetTemperature - uint8_t McuFXOS8700_GetTemperature(int8_t *temperature);
** GetMagX - uint8_t McuFXOS8700_GetMagX(int16_t *value);
** GetMagY - uint8_t McuFXOS8700_GetMagY(int16_t *value);
** GetMagZ - uint8_t McuFXOS8700_GetMagZ(int16_t *value);
** ParseCommand - uint8_t McuFXOS8700_ParseCommand(const unsigned char *cmd, bool *handled,...
** MagneticSensorReset - uint8_t McuFXOS8700_MagneticSensorReset(void);
** Init - uint8_t McuFXOS8700_Init(void);
** Deinit - uint8_t McuFXOS8700_Deinit(void);
**
** * Copyright (c) 2013-2021, Erich Styger
** * Web: https://mcuoneclipse.com
** * SourceForge: https://sourceforge.net/projects/mcuoneclipse
** * Git: https://github.com/ErichStyger/McuOnEclipse_PEx
** * All rights reserved.
** *
** * Redistribution and use in source and binary forms, with or without modification,
** * are permitted provided that the following conditions are met:
** *
** * - Redistributions of source code must retain the above copyright notice, this list
** * of conditions and the following disclaimer.
** *
** * - 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.
** *
** * 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.
** ###################################################################*/
/*!
** @file McuFXOS8700.h
** @version 01.00
** @brief
** Implements a Driver for the MMA8451 accelerometer from Freescale.
*/
/*!
** @addtogroup McuFXOS8700_module McuFXOS8700 module documentation
** @{
*/
#ifndef __McuFXOS8700_H
#define __McuFXOS8700_H
/* MODULE McuFXOS8700. */
#include "McuLib.h" /* SDK and API used */
#include "McuFXOS8700config.h" /* configuration */
/* Include inherited components */
#include "McuGenericI2C.h"
#include "McuWait.h"
#include "McuLib.h"
#include "McuShell.h"
#include "McuUtility.h"
#ifdef __cplusplus
extern "C" {
#endif
#define McuFXOS8700_PARSE_COMMAND_ENABLED McuFXOS8700_CONFIG_PARSE_COMMAND_ENABLED /* set to 1 if method ParseCommand() is present, 0 otherwise */
/* 3-axis accelerometer control register addresses */
#define McuFXOS8700_CTRL_REG_1 0x2A
/* 3-axis accelerometer control register bit masks */
#define McuFXOS8700_ACTIVE_BIT_MASK 0x01
#define McuFXOS8700_F_READ_BIT_MASK 0x02
#define McuFXOS8700_CTRL_REG_2 0x2B
#define McuFXOS8700_CTRL_REG_2_MASK_RST (1<<4) /* software reset */
/* External 3-axis accelerometer data register addresses */
#define McuFXOS8700_OUT_X_MSB 0x01
#define McuFXOS8700_OUT_X_LSB 0x02
#define McuFXOS8700_OUT_Y_MSB 0x03
#define McuFXOS8700_OUT_Y_LSB 0x04
#define McuFXOS8700_OUT_Z_MSB 0x05
#define McuFXOS8700_OUT_Z_LSB 0x06
#define McuFXOS8700_WHO_AM_I 0x0D /* Who am I register, should return 0xC4 for preproduction devices and 0xC7 for production devices */
#define McuFXOS8700_WHO_AM_I_VAL 0xC7 /* production device value */
#define McuFXOS8700_XYZ_DATA_CFG 0x0E /* XYZ Data Configuration Register */
/* magnetometer control register */
#define McuFXOS8700_M_CTRL_REG_1 0x5B
#define McuFXOS8700_M_CTRL_REG_2 0x5C
#define McuFXOS8700_M_CTRL_REG_3 0x5D
/* Magnetometer data register addresses */
#define McuFXOS8700_M_OUT_X_MSB 0x33
#define McuFXOS8700_M_OUT_X_LSB 0x34
#define McuFXOS8700_M_OUT_Y_MSB 0x35
#define McuFXOS8700_M_OUT_Y_LSB 0x36
#define McuFXOS8700_M_OUT_Z_MSB 0x37
#define McuFXOS8700_M_OUT_Z_LSB 0x38
/* die temperature (needs to add an offset as not factory trimmed) */
#define McuFXOS8700_DIE_TEMP 0x51 /* die temperature register, signed 8bit in C */
#define McuFXOS8700_DIE_TEMP_OFFSET McuFXOS8700_CONFIG_TEMP_OFFSET /* offset to temperature reading as value on device is not calibrated */
#define McuFXOS8700_I2C_ADDR McuFXOS8700_CONFIG_I2C_DEVICE_ADDRESS /* I2C slave device address as set in the properties */
uint8_t McuFXOS8700_GetRaw8XYZ(uint8_t *xyz);
/*
** ===================================================================
** Method : GetRaw8XYZ (component FXOS8700CQ)
**
** Description :
** Returns in an array the x, y and z accelerometer as 8bit
** values.
** Parameters :
** NAME - DESCRIPTION
** * xyz - Pointer to an array of three unsigned 8bit
** values which are used to return the
** accelerometer values.
** Returns :
** --- - Error code, ERR_OK for no error.
** ===================================================================
*/
uint8_t McuFXOS8700_Deinit(void);
/*
** ===================================================================
** Method : Deinit (component FXOS8700CQ)
**
** Description :
** Counterpart to Init() method.
** Parameters : None
** Returns :
** --- - Error code, ERR_OK if everything is ok.
** ===================================================================
*/
uint8_t McuFXOS8700_Init(void);
/*
** ===================================================================
** Method : Init (component FXOS8700CQ)
**
** Description :
** Initializes the device driver
** Parameters : None
** Returns :
** --- - Error code, ERR_OK if everything is ok.
** ===================================================================
*/
void McuFXOS8700_CalibrateX1g(void);
/*
** ===================================================================
** Method : CalibrateX1g (component FXOS8700CQ)
**
** Description :
** Performs a calibration of the sensor. It is assumed that the
** Y and Z sensors have 0 g, and the X sensor has 1 g.
** Parameters : None
** Returns : Nothing
** ===================================================================
*/
void McuFXOS8700_CalibrateY1g(void);
/*
** ===================================================================
** Method : CalibrateY1g (component FXOS8700CQ)
**
** Description :
** Performs a calibration of the sensor. It is assumed that the
** X and Z sensors have 0 g, and the Y sensor has 1 g.
** Parameters : None
** Returns : Nothing
** ===================================================================
*/
void McuFXOS8700_CalibrateZ1g(void);
/*
** ===================================================================
** Method : CalibrateZ1g (component FXOS8700CQ)
**
** Description :
** Performs a calibration of the sensor. It is assumed that the
** X and Y sensors have 0 g, and the Z sensor has 1 g.
** Parameters : None
** Returns : Nothing
** ===================================================================
*/
int16_t McuFXOS8700_GetXmg(void);
/*
** ===================================================================
** Method : GetXmg (component FXOS8700CQ)
**
** Description :
** Returns the X value in mg
** Parameters : None
** Returns :
** --- - The g value in 1/1000g units
** ===================================================================
*/
int16_t McuFXOS8700_GetYmg(void);
/*
** ===================================================================
** Method : GetYmg (component FXOS8700CQ)
**
** Description :
** Returns the Y value in mg
** Parameters : None
** Returns :
** --- - The g value in 1/1000g units
** ===================================================================
*/
int16_t McuFXOS8700_GetZmg(void);
/*
** ===================================================================
** Method : GetZmg (component FXOS8700CQ)
**
** Description :
** Returns the Z value in mg
** Parameters : None
** Returns :
** --- - The g value in 1/1000g units
** ===================================================================
*/
uint16_t McuFXOS8700_MeasureGetRawX(void);
/*
** ===================================================================
** Method : MeasureGetRawX (component FXOS8700CQ)
**
** Description :
** Performs a measurement on X channel and returns the raw
** value.
** Parameters : None
** Returns :
** --- - X sensor value
** ===================================================================
*/
uint16_t McuFXOS8700_MeasureGetRawY(void);
/*
** ===================================================================
** Method : MeasureGetRawY (component FXOS8700CQ)
**
** Description :
** Performs a measurement on Y channel and returns the raw
** value.
** Parameters : None
** Returns :
** --- - Y sensor value
** ===================================================================
*/
uint16_t McuFXOS8700_MeasureGetRawZ(void);
/*
** ===================================================================
** Method : MeasureGetRawZ (component FXOS8700CQ)
**
** Description :
** Performs a measurement on Z channel and returns the raw
** value.
** Parameters : None
** Returns :
** --- - Z sensor value
** ===================================================================
*/
int16_t McuFXOS8700_GetXOffset(void);
/*
** ===================================================================
** Method : GetXOffset (component FXOS8700CQ)
**
** Description :
** Returns the offset applied to the X value.
** Parameters : None
** Returns :
** --- - Error code
** ===================================================================
*/
int16_t McuFXOS8700_GetYOffset(void);
/*
** ===================================================================
** Method : GetYOffset (component FXOS8700CQ)
**
** Description :
** Returns the offset applied to the Y value.
** Parameters : None
** Returns :
** --- - Error code
** ===================================================================
*/
int16_t McuFXOS8700_GetZOffset(void);
/*
** ===================================================================
** Method : GetZOffset (component FXOS8700CQ)
**
** Description :
** Returns the offset applied to the Z value.
** Parameters : None
** Returns :
** --- - Error code
** ===================================================================
*/
int16_t McuFXOS8700_GetX1gValue(void);
/*
** ===================================================================
** Method : GetX1gValue (component FXOS8700CQ)
**
** Description :
** Returns the value for 1g for channel X.
** Parameters : None
** Returns :
** --- - 1g value for X
** ===================================================================
*/
int16_t McuFXOS8700_GetY1gValue(void);
/*
** ===================================================================
** Method : GetY1gValue (component FXOS8700CQ)
**
** Description :
** Returns the value for 1g for channel Y.
** Parameters : None
** Returns :
** --- - 1g value for Y
** ===================================================================
*/
int16_t McuFXOS8700_GetZ1gValue(void);
/*
** ===================================================================
** Method : GetZ1gValue (component FXOS8700CQ)
**
** Description :
** Returns the value for 1g for channel Z.
** Parameters : None
** Returns :
** --- - 1g value for Z
** ===================================================================
*/
int16_t McuFXOS8700_GetX(void);
/*
** ===================================================================
** Method : GetX (component FXOS8700CQ)
**
** Description :
** Retrieves the value for the X axis. The value is adjusted
** with the zero calibration value (0 for 0 g, negative for
** negative acceleration and positive for positive acceleration).
** Parameters : None
** Returns :
** --- - Measured X value
** ===================================================================
*/
int16_t McuFXOS8700_GetY(void);
/*
** ===================================================================
** Method : GetY (component FXOS8700CQ)
**
** Description :
** Retrieves the value for the Y axis. The value is adjusted
** with the zero calibration value (0 for 0 g, negative for
** negative acceleration and positive for positive acceleration).
** Parameters : None
** Returns :
** --- - Measured Y value
** ===================================================================
*/
int16_t McuFXOS8700_GetZ(void);
/*
** ===================================================================
** Method : GetZ (component FXOS8700CQ)
**
** Description :
** Retrieves the value for the Z axis. The value is adjusted
** with the zero calibration value (0 for 0 g, negative for
** negative acceleration and positive for positive acceleration).
** Parameters : None
** Returns :
** --- - Measured Z value
** ===================================================================
*/
uint8_t McuFXOS8700_ParseCommand(const unsigned char *cmd, bool *handled, const McuShell_StdIOType *io);
/*
** ===================================================================
** Method : ParseCommand (component FXOS8700CQ)
**
** Description :
** Shell Command Line parser. This method is enabled/disabled
** depending on if you have the Shell enabled/disabled in the
** properties.
** Parameters :
** NAME - DESCRIPTION
** * cmd - Pointer to command string
** * handled - Pointer to variable which tells if
** the command has been handled or not
** * io - Pointer to I/O structure
** Returns :
** --- - Error code
** ===================================================================
*/
uint8_t McuFXOS8700_SetFastMode(bool on);
/*
** ===================================================================
** Method : SetFastMode (component FXOS8700CQ)
**
** Description :
** Turns the F_READ (Fast Read Mode) on or off
** Parameters :
** NAME - DESCRIPTION
** on - if to turn the F_READ mode on or off
** Returns :
** --- - Error code
** ===================================================================
*/
uint8_t McuFXOS8700_Enable(void);
/*
** ===================================================================
** Method : Enable (component FXOS8700CQ)
**
** Description :
** Enables the device with setting the ACTIVE bit in the CTRL
** register 1
** Parameters : None
** Returns :
** --- - Error code
** ===================================================================
*/
uint8_t McuFXOS8700_Disable(void);
/*
** ===================================================================
** Method : Disable (component FXOS8700CQ)
**
** Description :
** Disables the device with clearing the ACTIVE bit in the CTRL
** register 1
** Parameters : None
** Returns :
** --- - Error code
** ===================================================================
*/
uint8_t McuFXOS8700_isEnabled(bool *isEnabled);
/*
** ===================================================================
** Method : isEnabled (component FXOS8700CQ)
**
** Description :
** Returns the status of the the ACTIVE bit in the CTRL
** register 1
** Parameters :
** NAME - DESCRIPTION
** * isEnabled - Pointer to where to store the
** result, TRUE if ACTIVE bit is set, FALSE
** otherwise
** Returns :
** --- - error code
** ===================================================================
*/
uint8_t McuFXOS8700_WhoAmI(uint8_t *value);
/*
** ===================================================================
** Method : WhoAmI (component FXOS8700CQ)
**
** Description :
** Returns the value of the WHO_AM_I (0x0D) register
** Parameters :
** NAME - DESCRIPTION
** * value - Pointer to value to store
** Returns :
** --- - Error code
** ===================================================================
*/
uint8_t McuFXOS8700_GetTemperature(int8_t *temperature);
/*
** ===================================================================
** Method : GetTemperature (component FXOS8700CQ)
**
** Description :
** Returns the temperature of the die as signed 8bit values in
** degree Celsius
** Parameters :
** NAME - DESCRIPTION
** * temperature - Pointer to variable where
** to store the temperature
** Returns :
** --- - Error code
** ===================================================================
*/
uint8_t McuFXOS8700_GetMagX(int16_t *value);
/*
** ===================================================================
** Method : GetMagX (component FXOS8700CQ)
**
** Description :
** Returns the X magnetometer value.
** Parameters :
** NAME - DESCRIPTION
** * value - Pointer to where to store the value.
** Returns :
** --- - Error code
** ===================================================================
*/
uint8_t McuFXOS8700_GetMagY(int16_t *value);
/*
** ===================================================================
** Method : GetMagY (component FXOS8700CQ)
**
** Description :
** Returns the Y magnetometer value.
** Parameters :
** NAME - DESCRIPTION
** * value - Pointer to where to store the value.
** Returns :
** --- - Error code
** ===================================================================
*/
uint8_t McuFXOS8700_GetMagZ(int16_t *value);
/*
** ===================================================================
** Method : GetMagZ (component FXOS8700CQ)
**
** Description :
** Returns the Z magnetometer value.
** Parameters :
** NAME - DESCRIPTION
** * value - Pointer to where to store the value.
** Returns :
** --- - Error code
** ===================================================================
*/
uint8_t McuFXOS8700_MagneticSensorReset(void);
/*
** ===================================================================
** Method : MagneticSensorReset (component FXOS8700CQ)
**
** Description :
** Initiates a magnetic sensor reset cycle that will restore
** correct operation after exposure to an excessive magnetic
** field which exceeds the Full Scale Range but is less than
** the Maximum Applied Magnetic Field.
** Parameters : None
** Returns :
** --- - Error code
** ===================================================================
*/
uint8_t McuFXOS8700_ReadReg8(uint8_t addr, uint8_t *val);
/*
** ===================================================================
** Method : ReadReg8 (component FXOS8700CQ)
**
** Description :
** Reads an 8bit device register
** Parameters :
** NAME - DESCRIPTION
** addr - device memory map address
** * val - Pointer to value
** Returns :
** --- - Error code
** ===================================================================
*/
uint8_t McuFXOS8700_WriteReg8(uint8_t addr, uint8_t val);
/*
** ===================================================================
** Method : WriteReg8 (component FXOS8700CQ)
**
** Description :
** Write an 8bit device register
** Parameters :
** NAME - DESCRIPTION
** addr - device memory map address
** val - value to write
** Returns :
** --- - Error code
** ===================================================================
*/
uint8_t McuFXOS8700_SwReset(void);
/*
** ===================================================================
** Method : SwReset (component FXOS8700CQ)
**
** Description :
** Perform a software reset using the rst bit in the CTRL
** register 2
** Parameters : None
** Returns :
** --- - Error code
** ===================================================================
*/
uint8_t McuFXOS8700_MagEnable(void);
/*
** ===================================================================
** Method : MagEnable (component FXOS8700CQ)
**
** Description :
** Enables the magnetometer
** Parameters : None
** Returns :
** --- - Error code
** ===================================================================
*/
uint8_t McuFXOS8700_MagDisable(void);
/*
** ===================================================================
** Method : MagDisable (component FXOS8700CQ)
**
** Description :
** Disables the magnetometer
** Parameters : None
** Returns :
** --- - Error code
** ===================================================================
*/
/* END McuFXOS8700. */
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif
/* ifndef __McuFXOS8700_H */
/*!
** @}
*/