21 #include "event_groups.h" 24 #include "fsl_debug_console.h" 26 #include "clock_config.h" 28 #ifndef CPU_LPC54114J256BD64_cm4 36 #include "fsl_i2c_cmsis.h" 53 .functionParam = NULL,
57 static void read_task(
void *pvParameters);
58 static void fusion_task(
void *pvParameters);
69 I2Cdrv->PowerControl(ARM_POWER_FULL);
70 I2Cdrv->Control(ARM_I2C_BUS_SPEED, ARM_I2C_BUS_SPEED_FAST);
91 xTaskCreate(read_task,
"READ", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 2, NULL);
92 xTaskCreate(fusion_task,
"FUSION", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 1, NULL);
95 vTaskStartScheduler();
100 static void read_task(
void *pvParameters)
103 portTickType lastWakeTime;
104 const portTickType frequency = 1;
105 lastWakeTime = xTaskGetTickCount();
109 vTaskDelayUntil(&lastWakeTime, frequency);
116 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)
Provides function prototypes for driver level interfaces.
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
int8_t MAG3110_Read(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
int8_t MAG3110_Init(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
Application-specific status subsystem.
conditionSensorReadings_t * conditionSensorReadings
preprocessing step for sensor fusion
Defines control sub-system.
The top level fusion structure.
struct PhysicalSensor sensors[4]
This implementation uses four physical sensors.
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)
SensorFusionGlobals sfg
This is the primary sensor fusion data structure.
#define I2C_S_SIGNAL_EVENT
The register_io_i2c.h file declares low-level interface functions for reading and writing sensor regi...
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.
int8_t FXLS8962_Read(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
EventGroupHandle_t event_group
setStatus_t * setStatus
change status indicator immediately
int8_t FXLS8962_Init(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
StatusSubsystem statusSubsystem
provides visual (usually LED) status indicator
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
registerDeviceInfo_t i2cBusInfo
int8_t initializeControlPort(ControlSubsystem *pComm)
Initialize the control subsystem and all related hardware.
ControlSubsystem controlSubsystem
used for serial communications
int main(void)
This is a FreeRTOS (dual task) implementation of the NXP sensor fusion demo build.
#define I2C_S_DEVICE_INDEX
This file contains the FXLS8962 Accelerometer register definitions, access macros, and device access functions.
int8_t FXAS21002_Read(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
#define FXLS8962_I2C_ADDR
void BOARD_InitDebugConsole(void)
void initializeStatusSubsystem(StatusSubsystem *pStatus)
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)