Как вы записываете в определенный регистр, используя связь I2C?

i2c charging

Я пытаюсь выполнить запись в микросхему зарядки (BQ24193) и пытаюсь понять, как использовать I2C для записи в определенный регистр, чтобы правильно настроить микросхему зарядки. Я посмотрел несколько видео по протоколу связи, но я не понимаю, как писать в регистр напрямую. Ваша помощь будет оценена по достоинству. Спасибо.

Технические данные: http://www.ti.com/lit/ds/symlink/bq24193.pdf

, 👍0

Обсуждение

использовать библиотеку проводов, @Juraj

цифра 18 в техпаспорте, @jsotola


1 ответ


Лучший ответ:

0

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