Цитата
Хм что то не встречал такого поведения МАСТЕРА на I2C.
Обычно СТАРТ СТОП всегда дублируют друг друга.
А Вы посмотрите описание любой микросхемы I2C EEPROM-памяти, там практически в 100% случаев чтение с повторным стартом.
Цитата
Вот интересно почему в контроллере не реализовали прерывание на СТАРТ в slave.
Да ровно по той же причине, по которой весь модуль I2C в STM32 - сплошной костыль. Потому что криворукие инженеры там сидят, вот почему.
Написать полноценный хороший контроллер I2C Master или Slave на STM32 можно, даже со всеми обработками ошибок и т.д., и DMA прикрутить, но это все выйдет в денек-другой сплошного копания Reference Manual, что не всегда позволительно.
Цитата
Ну да ладно пусть будет так, но моя проблема решается только флагом ADDR.
Можно так же извратиться с использованием прерываний по EXTI фиксируя СТАРТ.
Я вот реально не понимаю, в чем Ваше недоверие, если это можно так назвать, к прерыванию по ADDR?
Зачем извращаться с EXTI, огребая от него еще кучу лишнего
геммороя набора особенностей, если по SCL/SDA пронесется лишний clock...