You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							41 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
	
	
							41 lines
						
					
					
						
							1.2 KiB
						
					
					
				| #pragma once
 | |
| 
 | |
| #include "system/sensord/sensors/i2c_sensor.h"
 | |
| 
 | |
| // Address of the chip on the bus
 | |
| #define BMX055_GYRO_I2C_ADDR        0x68
 | |
| 
 | |
| // Registers of the chip
 | |
| #define BMX055_GYRO_I2C_REG_ID         0x00
 | |
| #define BMX055_GYRO_I2C_REG_RATE_X_LSB 0x02
 | |
| #define BMX055_GYRO_I2C_REG_RANGE      0x0F
 | |
| #define BMX055_GYRO_I2C_REG_BW         0x10
 | |
| #define BMX055_GYRO_I2C_REG_LPM1       0x11
 | |
| #define BMX055_GYRO_I2C_REG_HBW        0x13
 | |
| #define BMX055_GYRO_I2C_REG_FIFO       0x3F
 | |
| 
 | |
| // Constants
 | |
| #define BMX055_GYRO_CHIP_ID         0x0F
 | |
| 
 | |
| #define BMX055_GYRO_HBW_ENABLE       0b10000000
 | |
| #define BMX055_GYRO_HBW_DISABLE      0b00000000
 | |
| #define BMX055_GYRO_DEEP_SUSPEND     0b00100000
 | |
| #define BMX055_GYRO_NORMAL_MODE      0b00000000
 | |
| 
 | |
| #define BMX055_GYRO_RANGE_2000      0b000
 | |
| #define BMX055_GYRO_RANGE_1000      0b001
 | |
| #define BMX055_GYRO_RANGE_500       0b010
 | |
| #define BMX055_GYRO_RANGE_250       0b011
 | |
| #define BMX055_GYRO_RANGE_125       0b100
 | |
| 
 | |
| #define BMX055_GYRO_BW_116HZ 0b0010
 | |
| 
 | |
| 
 | |
| class BMX055_Gyro : public I2CSensor {
 | |
|   uint8_t get_device_address() {return BMX055_GYRO_I2C_ADDR;}
 | |
| public:
 | |
|   BMX055_Gyro(I2CBus *bus);
 | |
|   int init();
 | |
|   bool get_event(MessageBuilder &msg, uint64_t ts = 0);
 | |
|   int shutdown();
 | |
| };
 | |
| 
 |