47 #include "event_groups.h" 50 #include "fsl_debug_console.h" 53 #include "clock_config.h" 59 #include "fsl_i2c_cmsis.h" 84 .functionParam = NULL,
88 static void read_task(
void *pvParameters);
89 static void fusion_task(
void *pvParameters);
105 I2Cdrv->PowerControl(ARM_POWER_FULL);
106 I2Cdrv->Control(ARM_I2C_BUS_SPEED, ARM_I2C_BUS_SPEED_FAST);
118 xTaskCreate(read_task,
"READ", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 2, NULL);
119 xTaskCreate(fusion_task,
"FUSION", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 1, NULL);
122 vTaskStartScheduler();
127 static void read_task(
void *pvParameters)
130 portTickType lastWakeTime;
131 const portTickType frequency = 1;
132 lastWakeTime = xTaskGetTickCount();
136 vTaskDelayUntil(&lastWakeTime, frequency);
143 static void fusion_task(
void *pvParameters)
void initSensorFusionGlobals(SensorFusionGlobals *sfg, StatusSubsystem *pStatusSubsystem, ControlSubsystem *pControlSubsystem)
utility function to insert default values in the top level structure
The register_io_i2c.h file declares low-level interface functions for reading and writing sensor regi...
registerDeviceInfo_t i2cBusInfo
int8_t FXAS21002_Read(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
ControlSubsystem controlSubsystem
used for serial communications
#define BOARD_BootClockRUN
void initializeStatusSubsystem(StatusSubsystem *pStatus)
EventGroupHandle_t event_group
installSensor_t * installSensor
function for installing a new sensor into t
int8_t MPL3115_Read(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
void BOARD_InitDebugConsole(void)
The fxos8700.h file contains the register definitions for FXOS8700 sensor driver. ...
updateStatus_t * updateStatus
status=next status
he ControlSubsystem encapsulates command and data streaming functions.
The fxas21002.h contains the fxas21002 sensor register definitions and its bit mask.
int8_t FXOS8700_Read(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
StatusSubsystem() provides an object-like interface for communicating status to the user...
The top level fusion structure.
StatusSubsystem statusSubsystem
provides visual (usually LED) status indicator
applyPerturbation_t * applyPerturbation
apply step function for testing purposes
int8_t FXAS21002_Init(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
initializeFusionEngine_t * initializeFusionEngine
set sensor fusion structures to initial values
int8_t MPL3115_Init(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
int main(void)
This is a FreeRTOS (dual task) implementation of the NXP sensor fusion demo build.
int8_t FXOS8700_Init(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
setStatus_t * setStatus
change status indicator immediately
The sensor_fusion.h file implements the top level programming interface.
struct PhysicalSensor sensors[3]
This implementation uses three physical sensors.
Provides function prototypes for driver level interfaces.
The mpl3115.h contains the MPL3115 Pressure sensor register definitions, access macros, and device access functions.
uint8_t sUARTOutputBuffer[256]
main output buffer defined in control.c
#define I2C_S_DEVICE_INDEX
#define FXAS21002_I2C_ADDR
runFusion_t * runFusion
run the fusion routines
int8_t initializeControlPort(ControlSubsystem *pComm)
Initialize the control subsystem and all related hardware.
streamData_t * stream
function to create packets for serial stream
Non-recoverable FAULT = something went very wrong.
Application-specific status subsystem.
readSensors_t * readSensors
read all physical sensors
conditionSensorReadings_t * conditionSensorReadings
preprocessing step for sensor fusion
Defines control sub-system.
struct ControlSubsystem * pControlSubsystem
This structure defines the device specific info required by register I/O.
void BOARD_InitPins(void)
Configures pin routing and optionally pin electrical features.
setStatus_t * queueStatus
queue status change for next regular interval
SensorFusionGlobals sfg
This is the primary sensor fusion data structure.
An instance of PhysicalSensor structure type should be allocated for each physical sensors (combo dev...
#define FXOS8700_I2C_ADDR
int32_t loopcounter
counter incrementing each iteration of sensor fusion (typically 25Hz)
#define I2C_S_SIGNAL_EVENT