-
Notifications
You must be signed in to change notification settings - Fork 18
Description
Столкнулся с неправильным формированием "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.