Чтение данных I2C из регистра SW6106
Я использую микросхему внешнего аккумулятора SW6106 в качестве I2C, но, как бы я ни старался, я не смог прочитать ничего, кроме «FF».
Техническое описание микросхемы.
Временная диаграмма чтения данных:
Временная диаграмма записи данных:
Код, который я использую:
#include <Wire.h>
byte ADDRESS_SLAVE = 0x3C;
byte REGISTER_XY = 0xB0;
byte READ_LENGTH = 1;
void setup() {
Serial.begin(115200);
Wire.begin();
Wire.setClock(400000); // установить I2C на «полную скорость»
Wire.beginTransmission(ADDRESS_SLAVE);
Wire.write(REGISTER_XY); // устанавливаем регистр для чтения
Wire.endTransmission();
}
void loop() {
Wire.requestFrom(ADDRESS_SLAVE,READ_LENGTH);
byte buff[READ_LENGTH];
Wire.readBytes(buff, READ_LENGTH);
for (int i = 0; i < READ_LENGTH; i++) {
Serial.println(buff[i], HEX);
}
Serial.println();
delay(1000);
}
Выход последовательного монитора:
Я действительно ничего не понял из этой временной диаграммы и не смог ничего прочитать из IC. Буду признателен за любую помощь.
Редактировать: Я немного отредактировал код, чтобы увидеть, что возвращает Wire.endTransmission();.
#include <Wire.h>
byte ADDRESS_SLAVE = 0x3C;
byte REGISTER_XY = 0xB0;
byte READ_LENGTH = 1;
void setup() {
Serial.begin(115200);
Wire.begin();
Wire.setClock(400000); // установить I2C на «полную скорость»
}
void loop() {
Wire.beginTransmission(ADDRESS_SLAVE);
Wire.write(REGISTER_XY); // устанавливаем регистр для чтения
int x = Wire.endTransmission();
Serial.println(x, DEC);
delay(200);
}
И он повторяет следующее:
Я действительно не знаю, где я ошибаюсь.
@efe, 👍0
1 ответ
Я знаю, что этот пост очень старый, но мне удалось получить карту регистров от производителя Ismartware. Вот ссылка на пакет данных для тех, кто может оказаться здесь в поисках того же самого.
- Проблемы с запуском проекта Arduino от 9-вольтовой батареи
- Могу ли я иметь резервное питание для устройства Arduino?
- Как перевести Arduino Nano в спящий режим с низким энергопотреблением (<0,05 мА)
- Энергопотребление esp32
- Последовательная связь между несколькими устройствами (или ардуино)
- nrf24l01+ не работает от аккумулятора, или очень ненадежно
- Проблемы с I2C и Wire.Available()
- Какой лучший способ питания ESP32 от аккумулятора?