drv_qmc6310_v2.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #ifndef __DRV_QMC6310_V2_H__
  2. #define __DRV_QMC6310_V2_H__
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. /*Includes ------------------------------------------------------*/
  7. #include <stdint.h>
  8. #include <stdio.h>
  9. #include <stdbool.h>
  10. /*STRUCTION -----------------------------------------------------*/
  11. typedef enum{
  12. QMC_MAG_ODR_OFF = 0x00, //关闭地磁计
  13. QMC_MAG_ODR_10HZ = 0x31, //采样频率 - 10赫兹
  14. QMC_MAG_ODR_100HZ = 0x39, //采样频率 - 100赫兹
  15. QMC_MAG_ODR_200HZ = 0x3D, //采样频率 - 200赫兹
  16. } QMC_MAG_ODR_e;
  17. typedef enum{
  18. QMC_MAG_FS_30GS = 0x00, //量程 - 30高斯
  19. } QMC_MAG_FS_e;
  20. typedef struct
  21. {
  22. QMC_MAG_ODR_e mag_odr; //地磁计采样频率
  23. QMC_MAG_FS_e mag_fs; //地磁计量程
  24. } drv_qmc_config_param_t;
  25. typedef struct
  26. {
  27. int16_t mag[3]; //地磁计三轴
  28. } qmc_data_t;
  29. /*API -------------------------------------------------------*/
  30. /**
  31. @brief 初始化QMC6310驱动
  32. @param 无
  33. @return 错误代码 - [out] -1失败,0成功
  34. */
  35. int drv_qmc6310_Init(void);
  36. /**
  37. @brief QMC6310断电
  38. @param 无
  39. @return 错误代码 - [out] -1失败,0成功
  40. */
  41. int drv_qmc6310_power_off(void);
  42. /**
  43. @brief QMC6310上电(默认配置挂起)
  44. @param 无
  45. @return 错误代码 - [out] -1失败,0成功
  46. */
  47. int drv_qmc6310_power_on(void);
  48. /**
  49. @brief 设置MAG量程
  50. @param mag_fs - [in] MAG量程
  51. @return 错误代码 - [out] -1失败,0成功
  52. */
  53. int drv_qmc6310_set_mag_fs(QMC_MAG_FS_e mag_fs);
  54. /**
  55. @brief 获取配置MAG采样频率需要的步骤数量
  56. @return 错误代码 - [out] 配置MAG采样频率需要的步骤数量
  57. */
  58. int drv_qmc6310_get_mag_odr_flow(void);
  59. /**
  60. @brief 设置MAG采样频率
  61. @param mag_odr - [in] MAG采样频率
  62. @param flow - [in] 当前需要处理的步骤
  63. @return 错误代码 - [out] -1失败,0成功
  64. */
  65. int drv_qmc6310_set_mag_odr(QMC_MAG_ODR_e mag_odr, int flow);
  66. /**
  67. @brief 获取LSM配置参数
  68. @param param - [in] LSM配置参数
  69. @return 错误代码 - [out] -1失败,0成功
  70. */
  71. int drv_qmc6310_get_config_param(drv_qmc_config_param_t *p_param);
  72. /**
  73. @brief 获取LSM的ACC数据
  74. @param p_data - [out] 返回的ACC三轴数据
  75. @return 错误代码 - [out] -1失败,0成功
  76. */
  77. int drv_qmc6310_get_mag_data(qmc_data_t *p_data);
  78. int drv_qmc6310_get_mag_id(void);
  79. #ifdef __cplusplus
  80. }
  81. #endif
  82. #endif