i2c, окончание передачи slave'ом

beluchy

как i2c slave может сигнализировать об окончании передачи от slave к master?
растягивание clock slave'ом и стоп по таймауту от мастера как-то не очень оптимально получается.

Anturag

В общем случае никак, как и во всех протоколах, где передача данных инициируется мастером. При классическом подходе со стороны мастера ожидается строго определённое количество байт от слейва перед тем, как послать STOP, если что-то не пришло, то по таймауту передача считается незавершённой.

beluchy

де передача данных инициируется мастером. При классическом подходе со стороны мастера ожидается строго определённое количество байт от слейва перед тем, как послать STOP, если что-то не пришло, то по таймауту передача считается незавершённой.
странно, мне показалось, что протокол продвинутый и должно быть что-то такое предусмотрено
зы спасибо!

Anturag

странно, мне показалось, что протокол продвинутый и должно быть что-то такое предусмотрено
Для информации, здесь дело не в продвинутости протокола, а в специфике, когда передача данных всегда инициируется мастером. При работе и с более продвинутыми сериальными протоколами, типа SPI или даже USB, можешь столкнуться ровно с такой же проблемой, но по сути такая встреченная проблема свидетельствует либо об ошибке на стороне slave-устройства, либо же в софте драйвера контроллера мастера и выше — в драйвере шины, в реализации протоколов более высокого уровня или же в драйвере slave-устройства, мастер всегда должен знать, сколько информации в ответ на запрос пошлёт слейв.
Оставить комментарий
Имя или ник:
Комментарий: