47 #include "event_groups.h" 50 #include "fsl_debug_console.h" 53 #include "clock_config.h" 54 #ifndef CPU_LPC54114J256BD64_cm4 62 #include "fsl_i2c_cmsis.h" 80 .functionParam = NULL,
84 static void read_task(
void *pvParameters);
85 static void fusion_task(
void *pvParameters);
96 I2Cdrv->PowerControl(ARM_POWER_FULL);
97 I2Cdrv->Control(ARM_I2C_BUS_SPEED, ARM_I2C_BUS_SPEED_FAST);
110 xTaskCreate(read_task,
"READ", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 2, NULL);
111 xTaskCreate(fusion_task,
"FUSION", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 1, NULL);
114 vTaskStartScheduler();
119 static void read_task(
void *pvParameters)
122 portTickType lastWakeTime;
123 const portTickType frequency = 1;
124 lastWakeTime = xTaskGetTickCount();
128 vTaskDelayUntil(&lastWakeTime, frequency);
135 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...
int main(void)
This is a FreeRTOS (dual task) implementation of the NXP sensor fusion demo build.
int8_t FXAS21002_Read(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
ControlSubsystem controlSubsystem
used for serial communications
#define BOARD_BootClockRUN
registerDeviceInfo_t i2cBusInfo
void initializeStatusSubsystem(StatusSubsystem *pStatus)
installSensor_t * installSensor
function for installing a new sensor into t
int8_t MPL3115_Read(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
void BOARD_InitDebugConsole(void)
StatusSubsystem statusSubsystem
provides visual (usually LED) status indicator
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.
SensorFusionGlobals sfg
This is the primary sensor fusion data structure.
StatusSubsystem() provides an object-like interface for communicating status to the user...
The top level fusion structure.
int8_t MAG3110_Read(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
EventGroupHandle_t event_group
applyPerturbation_t * applyPerturbation
apply step function for testing purposes
The mag3110.h contains the MAG3110 Magnetic sensor register definitions, access macros, and device access functions.
#define FXLS8962_I2C_ADDR
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)
setStatus_t * setStatus
change status indicator immediately
The sensor_fusion.h file implements the top level programming interface.
Provides function prototypes for driver level interfaces.
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.
This file contains the FXLS8962 Accelerometer register definitions, access macros, and device access functions.
readSensors_t * readSensors
read all physical sensors
conditionSensorReadings_t * conditionSensorReadings
preprocessing step for sensor fusion
Defines control sub-system.
struct ControlSubsystem * pControlSubsystem
int8_t FXLS8962_Read(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
struct PhysicalSensor sensors[4]
This implementation uses four physical sensors.
This structure defines the device specific info required by register I/O.
int8_t FXLS8962_Init(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
void BOARD_InitPins(void)
Configures pin routing and optionally pin electrical features.
setStatus_t * queueStatus
queue status change for next regular interval
int8_t MAG3110_Init(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
An instance of PhysicalSensor structure type should be allocated for each physical sensors (combo dev...
int32_t loopcounter
counter incrementing each iteration of sensor fusion (typically 25Hz)
#define I2C_S_SIGNAL_EVENT