Jump to content

    
Sign in to follow this  
Trashy_2

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

Recommended Posts

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

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

Share this post


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

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

Share this post


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

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

Edited by trientxp

Share this post


Link to post
Share on other sites

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

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

post-87869-1494613889_thumb.jpg

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this