Files
2024-09-18 11:50:26 +08:00

81 lines
2.3 KiB
C

/*
* qmc5883l.h
*
* Created on: Mar 4, 2024
* Author: gxms0
*/
#ifndef BSP_QMC5883L_H_
#define BSP_QMC5883L_H_
#include "ch32v20x.h"
#include <string.h>
#include <stdlib.h>
#include "drv_i2c.h"
#define QMC5883_REG_DATA 0x00
#define QMC5883_REG_OUT_X_L 0x00
#define QMC5883_REG_OUT_X_M 0x01
#define QMC5883_REG_OUT_Y_L 0x02
#define QMC5883_REG_OUT_Y_M 0x03
#define QMC5883_REG_OUT_Z_L 0x04
#define QMC5883_REG_OUT_Z_M 0x05
#define QMC5883_REG_STATUS 0x06
#define QMC5883_DRDY_BIT0 //0: no new data, 1: new data is ready
#define QMC5883_OVL_BIT1 //0: normal, 1: data overflow
#define QMC5883_DOR_BIT2 //0: normal, 1: data skipped for reading
#define QMC5883_REG_TEMP_OUT_L 0x07
#define QMC5883_REG_TEMP_OUT_H 0x08
#define QMC5883_REG_CTRL1 0x09
#define QMC5883_CMD_MODE_STANDBY 0x00 //mode
#define QMC5883_CMD_MODE_CON 0x01
#define QMC5883_CMD_ODR_10HZ 0x00 //Output Data Rate
#define QMC5883_CMD_ODR_50HZ 0x04
#define QMC5883_CMD_ODR_100HZ 0x08
#define QMC5883_CMD_ODR_200HZ 0x0C
#define QMC5883_CMD_RNG_2G 0x00 //Full Scale
#define QMC5883_CMD_RNG_8G 0x10
#define QMC5883_CMD_OSR_512 0x00 //Over Sample Ratio
#define QMC5883_CMD_OSR_256 0x40
#define QMC5883_CMD_OSR_128 0x80
#define QMC5883_CMD_OSR_64 0xC0
#define QMC5883_REG_CTRL2 0x0A
#define QMC5883_CMD_INT_ENABLE 0x00
#define QMC5883_CMD_INT_DISABLE 0x01
#define QMC5883_CMD_ROL_PNT_ENABLE 0x40 //pointer roll-over function,only 0x00-0x06 address
#define QMC5883_CMD_ROL_PNT_DISABLE 0x00
#define QMC5883_CMD_SOFT_RST_ENABLE 0x80
#define QMC5883_CMD_SOFT_RST_DISABLE 0x00
#define QMC5883_REG_SET_RESET 0x0B
#define QMC5883_CMD_SET_RESET 0x01
#define QMC5883_REG_PRODUCTID 0x0D //chip id :0xFF
typedef struct sQMC {
I2C_ptr i2c;
uint16_t address;
uint16_t (*read)(I2C_ptr ptr, uint16_t address, uint16_t reg,uint8_t *data, uint16_t len);
uint16_t (*write)(I2C_ptr ptr, uint16_t address, uint16_t reg,uint8_t *data, uint16_t len);
}QMC_t;
typedef QMC_t* QMC_ptr;
void qmcxxx_init(QMC_ptr ptr,I2C_ptr i2c,uint16_t address);
#endif /* BSP_QMC5883L_H_ */