ESP8266-I2C-Driver
ESP8266-I2C-Driver copied to clipboard
ошибка в формировании состояния линии i2c REPEATED START
Столкнулся с неправильным формированием "REPEATED START" состояния при взаимодействии с часами MAX31343. esp8266 - 1 master MAX31343 - slave pull-up`s 1K core 3.0.2
Полная посылка на чтения времени:

Более подробно интересующий нас фрагмент:


тут видно что из-за опережения фронта SCK ошибочно формируется еще и STOP состояние, что рушит обмен с часами

можно оценить несоответствие, а ведь SDA должен быть high задооооолго до SCK:

используемый мной фрагмент кода в котором формируется "REPEATED START"
i2c_handler->beginTransmission(MAX3134X_I2C_W); i2c_handler->write(reg); i2c_handler->endTransmission(false); i2c_handler->requestFrom(MAX3134X_I2C_R, len);
т.е. при endTransmission(false) становится заметна проблема. На мой поверхностный взгляд ошибка в функции twi_write_start (файл core_esp8266_si2c.cpp) там в первых строках по любому будет сформирован STOP.