图书馆设计师的新问题,如何确定定义值(在本例中为MPU6050.h)?我无法想象这些价值观是从哪里来的。(0x68、0x00等)
#define MPU6050_ADDRESS_AD0_LOW 0x68 // address pin low (GND), default for InvenSense evaluation board
#define MPU6050_ADDRESS_AD0_HIGH 0x69 // address pin high (VCC)
#define MPU6050_DEFAULT_ADDRESS MPU6050_ADDRESS_AD0_LOW
#define MPU6050_RA_XG_OFFS_TC 0x00 //[7] PWR_MODE, [6:1] XG_OFFS_TC, [0] OTP_BNK_VLD
#define MPU6050_RA_YG_OFFS_TC 0x01 //[7] PWR_MODE, [6:1] YG_OFFS_TC, [0] OTP_BNK_VLD
#define MPU6050_RA_ZG_OFFS_TC 0x02 //[7] PWR_MODE, [6:1] ZG_OFFS_TC, [0] OTP_BNK_VLD
#define MPU6050_RA_X_FINE_GAIN 0x03 //[7:0] X_FINE_GAIN
#define MPU6050_RA_Y_FINE_GAIN 0x04 //[7:0] Y_FINE_GAIN
#define MPU6050_RA_Z_FINE_GAIN 0x05 //[7:0] Z_FINE_GAIN
#define MPU6050_RA_XA_OFFS_H 0x06 //[15:0] XA_OFFS
#define MPU6050_RA_XA_OFFS_L_TC 0x07
#define MPU6050_RA_YA_OFFS_H 0x08 //[15:0] YA_OFFS
#define MPU6050_RA_YA_OFFS_L_TC 0x09
#define MPU6050_RA_ZA_OFFS_H 0x0A //[15:0] ZA_OFFS
最佳答案
大多数嵌入式控制器的代码都有很多这样的定义。每个define都表示从该基址偏移的寄存器基址。然后还可以使用位掩码来访问地址中的特定位。例如。
#define MEMORYADD_OUTPUTENABLED (1<<5)
您似乎正在使用MPU-6050 3轴加速度计。如果您在datasheet中查找该设备,它们会提到“MPU-6000/MPU-6050寄存器映射和寄存器描述”。在that document中可以找到寄存器映射,如下所示:
看到连接了吗?
这些定义帮助您编写与组件的可读接口代码。