Как вы записываете в определенный регистр, используя связь I2C?
Я пытаюсь выполнить запись в микросхему зарядки (BQ24193) и пытаюсь понять, как использовать I2C для записи в определенный регистр, чтобы правильно настроить микросхему зарядки. Я посмотрел несколько видео по протоколу связи, но я не понимаю, как писать в регистр напрямую. Ваша помощь будет оценена по достоинству. Спасибо.
Технические данные: http://www.ti.com/lit/ds/symlink/bq24193.pdf
@Jay, 👍0
Обсуждение1 ответ
Лучший ответ:
Arduino использует библиотеку Wire.h
для связи по шине I2C. .
Запись в регистр I2C обычно выполняется путем отправки двух байтов на правильный адрес I2C. Первый байт обычно представляет собой адрес регистра, а второй — значение, которое нужно поместить в регистр:
#define CHIP_ADDRESS 0x6B
#define REGISTER_ADDRESS 0x12
Wire.beginTransmission(CHIP_ADDRESS);
Wire.write(REGISTER_ADDRESS);
Wire.write(0x18);
Wire.endTransmission();
Чтение из регистра немного сложнее, так как сначала вам нужно записать в чип, чтобы установить адрес регистра, а затем отдельной операцией вам нужно прочитать из этого адреса:
Wire.beginTransmission(CHIP_ADDRESS);
Wire.write(REGISTER_ADDRESS);
Wire.endTransmission();
Wire.requestFrom(CHIP_ADDRESS, 1); // We want one byte
uint8_t val = Wire.read();
Итак, с моей ИС, как мне найти адрес для каждого регистра? Я проверил таблицу данных, и она включала только адрес ведомого устройства., @Jay
@Jay, стр. 26: «8.5 Карта регистрации», @Sim Son
- Отправка и получение различных типов данных через I2C в Arduino
- Как работают функции вне цикла void?
- Как отображать переменные на 0,96-дюймовом OLED-дисплее с библиотекой u8glib?
- Как отправить строку на мастер с помощью i2c
- Как выбрать альтернативные контакты I2C на ESP32?
- Что означает в I2C «NACK получен»?
- NodeMCU с RFID RC522 и LCD-модулем интерфейса I2C вместе
- Несколько датчиков I2C с одинаковым адресом
использовать библиотеку проводов, @Juraj
цифра 18 в техпаспорте, @jsotola