2025-03-03 2:17 AM - edited 2025-03-03 9:03 PM
I've been using B-WB1M-WPAN board with a modified example of motion service from BLE_HR_p2p_Sensor. but with IMU readings with a steval-mki217v1 shield connected with SPI.
I already have the CRC checked from CubeMX generation.
So far I have been able to read IMU data (polling) and send it through a BLE notifiacation service. but when I try to setup a MotionFx server it mulfunctions.
void ssfusn_setup(void)
{
/* Check if statically allocated memory size is sufficient to store MotionFX algorithm state and resize if necessary */
if (STATE_SIZE < MotionFX_GetStateSize())
{
// Error_Handler();
while (1)
{
/* code */
}
} /* Sensor Fusion API initialization function */
MotionFX_GetLibVersion(lib_version);
MotionFX_initialize((MFXState_t *)mfxstate);
MotionFX_getKnobs(mfxstate, &iKnobs);
iKnobs.acc_orientation[0] = 's';
iKnobs.acc_orientation[1] = 'e';
iKnobs.acc_orientation[2] = 'u';
iKnobs.gyro_orientation[0] = 's';
iKnobs.gyro_orientation[1] = 'e';
iKnobs.gyro_orientation[2] = 'u';
iKnobs.mag_orientation[0] = 'n';
iKnobs.mag_orientation[1] = 'e';
iKnobs.mag_orientation[2] = 'u';
iKnobs.gbias_acc_th_sc = GBIAS_ACC_TH_SC;
iKnobs.gbias_gyro_th_sc = GBIAS_GYRO_TH_SC;
iKnobs.gbias_mag_th_sc = GBIAS_MAG_TH_SC;
iKnobs.output_type = MFX_ENGINE_OUTPUT_ENU;
iKnobs.LMode = 1;
iKnobs.modx = DECIMATION;
// ____________________________________________________________________________
MotionFX_setKnobs(mfxstate, &iKnobs);
MotionFX_enable_6X(mfxstate, MFX_ENGINE_DISABLE);
MotionFX_enable_9X(mfxstate, MFX_ENGINE_ENABLE); /* Enable 9-axis sensor fusion */
}
here are some combinations I've tried. with this line of code above.
1. when initialize after MX_APPE_Init(); in main.c the device will enter a hardfault error in couple of loops. same goes when put on app context init.
2. when initialize before MX_APPE_Init(); it does not process the registered UTIL_SEQ_RegTask. But the device works fine.
When I remove the BLE stack and left with the IMU reading with SPI.
3. when initialize before main loop, The IMU stops returning data.