图书馆设计师的新问题,如何确定定义值(在本例中为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中可以找到寄存器映射,如下所示:
c&#43;&#43; - 如何在设计库中找出硬件中的#define值-LMLPHP
看到连接了吗?
这些定义帮助您编写与组件的可读接口代码。

07-25 20:21