Перейти к содержанию
    

I2C - защита от дурака.

Есть еще I2C буферы с возможностью сброса и выдачей прерывания в случае подвисания на "той" стороне.

Если каждый блок будет иметь такой на входе, а это нормально если мы говорим о системе где есть hotswap замена блоков, тогда каждый блок будет сам разбираться со своими тараканами, шина при этом зависать не будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть еще I2C буферы с возможностью сброса и выдачей прерывания в случае подвисания на "той" стороне.

Это тогда надо тащить ресет на все слейвы. Кстати говоря. I2C изначально задумывался как внутри модульный, а не меж блочный интерфейс, да еще и с hotswap.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Че-то не понял, если устройство - слейв, как оно вообще что-то на клок выставляет?? В топку такие "умные" девайсы :wacko:

здрасте, как это не может? это не крутая SMBus. в стандарте филипка чотко заявлено, что ведомый может удерживать SCL в нуле до готовности получать данные. а посему и таймауты на шине - Ваша головная боль. прошу прощения, что на августовское сообщение отвечаю.

Изменено пользователем trientxp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

есть I2C свичи. И там даже если какой то канал выгорел, можно перестать к нему обращаться. Смотрите у техаса например

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно попробовать вот такую схему (в прикрепленном файле), копеечные 595 регистры и транзисторы BSS138 навряд ли сильно увеличат себестоимость устройства, правда понадобиться дополнительный интерфейс SPI для управления 595-ми, при необходимости схему можно переделать под другое управление. Соответственно при 5 вольтах на затворе шина I2C открыта для двухсторонней передачи информации между ведущим и ведомым, при 0 вольт на затворе - ведомый может получать от ведущего посылки, но передавать что-либо ведущему не может, то есть при проблемах, когда ведомый все время притягивает шину к земле - просто устанавливаем 0 на соответствующих затворах и отключаем глючное ведомое, при этом все остальные ведомые продолжают взаимодействовать с ведущим.

А вообще нужно разбираться почему ведомое зависает, может есть смысл подключить дополнительно конденсатор 0.1-1 микрофарад по питанию рядом с каждым ведомым, чтобы предотвратить зависание от помех по питанию.

post-87869-1494613889_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

стоит проверить поведение зависшей шины.

по факту детектирования зависания мастер должен подёргать стоп-старт-стоп-старт-стоп несколько раз.

далее, методом "деления пополам" на уровне схемы, вычислить, какой из чипов не соответствует спецификации I2C.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...