17 #include "fsl_debug_console.h" 20 #include "clock_config.h" 24 #include "fsl_i2c_cmsis.h" 38 #include "event_groups.h" 49 .functionParam = NULL,
53 static void read_task(
void *pvParameters);
54 static void fusion_task(
void *pvParameters);
65 I2Cdrv->PowerControl(ARM_POWER_FULL);
66 I2Cdrv->Control(ARM_I2C_BUS_SPEED, ARM_I2C_BUS_SPEED_FAST);
78 xTaskCreate(read_task,
"READ", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 2, NULL);
79 xTaskCreate(fusion_task,
"FUSION", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 1, NULL);
82 vTaskStartScheduler();
87 static void read_task(
void *pvParameters)
90 portTickType lastWakeTime;
91 const portTickType frequency = 1;
92 lastWakeTime = xTaskGetTickCount();
96 vTaskDelayUntil(&lastWakeTime, frequency);
103 static void fusion_task(
void *pvParameters)
EventGroupHandle_t event_group
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
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
int8_t MAG3110_Read(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
int8_t FXLS8952_Read(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
int8_t MAG3110_Init(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
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
he ControlSubsystem encapsulates command and data streaming functions.
#define BOARD_BootClockRUN
runFusion_t * runFusion
run the fusion routines
#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
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 FXLS8952_Init(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
int8_t initializeControlPort(ControlSubsystem *pComm)
Initialize the control subsystem and all related hardware.
SensorFusionGlobals sfg
This is the primary sensor fusion data structure.
struct PhysicalSensor sensors[3]
This implementation uses three physical sensors.
#define I2C_S_DEVICE_INDEX
int8_t FXAS21002_Read(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
#define FXLS8952C_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)
Provides a simple abstraction for a periodic interval timer.