Здравствуйте, Уважаемые Друзья.
Есть I2C МАСТЕР который передает и принимает данные.
У меня реализован I2C подчиненный который принимает и отдает данные.
Мастер ведет себя не совсем корректно по отношению к протоколу I2C.
Он делает запрос чтения к моему устройству примерно так
СТАРТ->АДРЕСС ЗАПИСИ->ДАННЫЕ, а потом при низком SCL переводит SDA в высокий уровень. Затем снова выдет СТАРТ->АДРЕСС ЧТЕНИЕ-> читает данные после чего выдает СТОП.
Я по протоколу могу разобрать когда у меня закончится передача данных от мастера, но вопрос как это сделать аппаратно по прерыванию.
Вот тут затыка.
В режиме I2C слайв не работает прерывание SB (было сгенерированно условие СТАРТ).
Есть еще флаг BERR (Bus error) но он не реагирует на что либо после передачи байта.
Может кто сталкивался с подобным.
|