|
【GD32F350分享】【四】L3G4200D陀螺仪驱动程序编写
[复制链接]
再计步算法中需要使用陀螺仪检测人体运动姿态的变化,这里使用L3G4200D陀螺仪,L3G4200D是意法(ST)半导体公司推出的一款MEMS运动传感器:三轴数字输出陀螺仪。可选-250~250、-500~500、-2000-2000dps。同时使用IIC接口进行数据输出,这里使用之前的模拟IIC可以方便移植。
同样再工程目录Driver文件夹下,添加l3g4200d源文件和头文件,同时重新配置接口:
- #define L3G4200_Addr 0xD2 //定义器件在IIC总线中的从地址,根据ALT ADDRESS地址引脚不同修改
- //***************L3G4200D内部寄存器地址***********
- #define WHO_AM_I 0x0F
- #define CTRL_REG1 0x20
- #define CTRL_REG2 0x21
- #define CTRL_REG3 0x22
- #define CTRL_REG4 0x23
- #define CTRL_REG5 0x24
- #define REFERENCE 0x25
- #define OUT_TEMP 0x26
- #define STATUS_REG 0x27
- #define OUT_X_L 0x28
- #define OUT_X_H 0x29
- #define OUT_Y_L 0x2A
- #define OUT_Y_H 0x2B
- #define OUT_Z_L 0x2C
- #define OUT_Z_H 0x2D
- #define FIFO_CTRL_REG 0x2E
- #define FIFO_SRC_REG 0x2F
- #define INT1_CFG 0x30
- #define INT1_SRC 0x31
- #define INT1_TSH_XH 0x32
- #define INT1_TSH_XL 0x33
- #define INT1_TSH_YH 0x34
- #define INT1_TSH_YL 0x35
- #define INT1_TSH_ZH 0x36
- #define INT1_TSH_ZL 0x37
- #define INT1_DURATION 0x38
复制代码
- //L3G4200D IIC控制函数
- void I2C_GPIO_Config(void);
- void I2C_Delay(void);
- uint8_t I2C_Start(void);
- void I2C_Stop(void);
- void I2C_Ack(void);
- void I2C_NoAck(void);
- uint8_t I2C_WaitAck(void);
- void I2C_SendByte(uint8_t SendByte);
- unsigned char I2C_RadeByte(void);
- uint8_t Single_Write(unsigned char SlaveAddress,unsigned char REG_Address,unsigned char REG_data);
- unsigned char Single_Read(unsigned char SlaveAddress,unsigned char REG_Address);
- void Init_L3G4200D(void);
- void READ_L3G4200D(void);
- void Send_data(uint8_t axis);
- void DATA_printf(unsigned char *s,short temp_data);
复制代码
使用串口调试打印输出的三轴角速度信息如下:
|
|