Как определить #define значения в оборудовании при проектировании библиотеки - PullRequest
0 голосов
/ 08 ноября 2019

Вопрос новичка для разработчиков библиотек, как определить значения #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

1 Ответ

2 голосов
/ 08 ноября 2019

Большинство кодов для встроенных контроллеров имеют много таких определений. Каждое определение представляет собой базовый адрес регистра смещения от этой базы. Тогда у вас также могут быть битовые маски, которые используются для доступа к определенным битам внутри адреса. Например,

#define MEMORYADD_OUTPUTENABLED (1<<5)

Вы, кажется, используете 3-осевой акселерометр MPU-6050. Если вы посмотрите в таблицу данных для этого устройства, они упоминают «Карта регистров MPU-6000 / MPU-6050 и описания регистров». Глядя в этот документ , вы можете найти карту регистров, которая выглядит следующим образом:

enter image description here

Видите соединение?

Эти определения помогут вам написать читаемый интерфейсный код с вашим компонентом.

...