首页 > 解决方案 > 如何在设计库中找出硬件中的#define 值

问题描述

图书馆设计师的新手问题,如何确定#define 值(在本例中为 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

标签: c++ccontrollerembedded

解决方案


大多数嵌入式控制器的代码都有很多这样的定义。每个定义都代表从该基址偏移的寄存器基址。然后,您还可以拥有用于访问地址内部特定位的位掩码。例如

#define MEMORYADD_OUTPUTENABLED (1<<5)

您似乎正在使用 MPU-6050 3 轴加速度计。如果您查看该设备的数据表,他们会提到“MPU-6000/MPU-6050 寄存器映射和寄存器描述”。查看该文档,您可以找到寄存器映射,如下所示:

在此处输入图像描述

看到连接了吗?

这些定义帮助您编写与组件的可读接口代码。


推荐阅读