hal_imu.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #ifndef __hal_imu_h__
  2. #define __hal_imu_h__
  3. #include <stdbool.h>
  4. #include <stdint.h>
  5. #include <string.h>
  6. #include "sdk_common.h"
  7. #include "SEGGER_RTT.h"
  8. #include "usr_config.h"
  9. #define IMU_BUFF_SIZE (LowPower_Interval * 2/10) //乘以2是为了防止fifo会满,导致fifo溢出。
  10. #define IMU_INIT_TIMES 1 //如果IMU初始化失败,重复初始化的次数
  11. #define IMU_SIGNAL_ON 1 //信号开启
  12. #define IMU_SIGNAL_OFF 0 //信号关闭
  13. //定义状态
  14. enum imu_state
  15. {
  16. STATE_SELF_CHECK_MODE = 1, //IMU自检模式
  17. STATE_LOW_POWER_MODE, //IMU低功耗模式
  18. STATE_FULL_POWER_MODE, //IMU全功率模式
  19. STATE_STANDBY_POWER_MODE, //IMU待机模式
  20. STATE_EXCEPT_SUSPEND_MODE //IMU异常挂起模式
  21. };
  22. //定义事件
  23. enum imu_event
  24. {
  25. EVENT_ENTER_SELF_CHECK_MODE = 1, //IMU开启自检模式
  26. EVENT_ENTER_FULL_POWER_MODE, //IMU开启全功率模式
  27. EVENT_ENTER_LOW_POWER_MODE, //IMU开启低功耗模式
  28. EVENT_ENTER_STANDBY_POWER_MODE //IMU开启待机模式
  29. };
  30. //定义信号
  31. typedef enum
  32. {
  33. SIGNAL_SELF_CHECK = 1, //IMU自检信号
  34. SIGNAL_LOW_POWER, //IMU低功耗信号
  35. SIGNAL_FULL_POWER, //IMU全功率信号
  36. SIGNAL_STANDBY_POWER //IMU待机信号
  37. }imu_signal;
  38. void IMU_Initialize(uint8_t is_host);
  39. void IMU_SetSlaveData(uint8_t* pdat,uint8_t len);
  40. int16_t IMU_Get_Front_Data_Num(void);
  41. void IMU_Get_Front_Data(int16_t index, int16_t *gry, int16_t *acc, int16_t *mag, int32_t *timestamp);
  42. void IMU_Get_Back_Data(int16_t *mag);
  43. /*------------------------------------------------------------------------------------------------------------------------*/
  44. void IMU_SetSignal(imu_signal signal, uint8_t on_off);
  45. uint8_t IMU_IsNoSignal(void);
  46. uint8_t IMU_GetCurrentMode(void);
  47. void IMU_PowerOffProcess(void);
  48. #endif