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