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

I2C, алгоритм сброса

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

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


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

Если имеется ввиду, что ведомый занял SCL, то никак, лишь отключением его питания.

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


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

8 minutes ago, Plain said:

Если имеется ввиду, что ведомый занял SCL, то никак, лишь отключением его питания.

Нет. На SDA и SCL высокий уровень.

Попадались упоминания первой редакции стандарта I2C от Филипс, в котором был описан алгоритм сброса конечного автомата слэйва в исходное состояние, но я не могу найти ни тот, ни другой какой-нибудь документ с описанием этого алгоритма.

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


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

15 minutes ago, tonyk_av said:

Нет. На SDA и SCL высокий уровень.

Попадались упоминания первой редакции стандарта I2C от Филипс, в котором был описан алгоритм сброса конечного автомата слэйва в исходное состояние, но я не могу найти ни тот, ни другой какой-нибудь документ с описанием этого алгоритма.

start->stop

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


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

14 minutes ago, Arlleex said:

Этот? Намекну только, что все эти сбросы ногодрыжные - филькина грамота.

А где в нём описана процедура сброса слэйва?

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


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

1 час назад, tonyk_av сказал:

На SDA и SCL высокий уровень.

Попадались упоминания первой редакции стандарта I2C от Филипс, в котором был описан алгоритм сброса конечного автомата

Нет там ничего подобного, а есть логичное требование:

 

Цитата

I2C-bus compatible devices must reset their bus logic on receipt of a START

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


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

Quote

I2C-bus compatible devices must reset their bus logic on receipt of a START

Хм, получается, что если девайс перестал общаться и на SDA=SCL="1", то нужно выдать "старт", а потом "стоп", так что ли?

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


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

1 hour ago, tonyk_av said:

Нет. На SDA и SCL высокий уровень. . . . 

Нет никакой особой процедуры "сброса", кроме предусмотренной протоколом самой I2C, те

1 hour ago, rkit said:

start->stop

Это сборс "автомата" самого интерфейса Вашего слейва. А если каким-то образом завис сам автомат - то ВСЕ.

Такое у меня было на 24LC16 - только холодный ресет его, через перевключение питания.

Процедуры "ресета" который Вы подразумеваете, может быть для конкретного типа слейва, курите даташит на Ваш девайс

(К примеру для ADC AD чтобы сбросить/ресет надо по SPI передать 0xFFFFFF и томуподобное).

Возможно, дело не в завесе, а Вы ввели слейва в режим ожидания итд итп, возможно на шине у Вас еще что-то висит и идет коллизия, возможно . . .  

ps - наименование девайса, схему что висит на шине, включая номиналы резисторов.

 

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


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

В NXP (им I2C досталась в наследство от Philips) рекомендуют аппаратный сброс (см. UM10204, 3.2.13 Unresponsive target reset). У Analog Devices помимо сброса по питанию есть вариант программного сброса (см. AN-686, Solution 1: Clocking Through the Problem), наверное его Вы и ищите.

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


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

Я ищу способ сброса любого девайса на шине путём подачи определённой последовательности "0" и "1" на шине. Видимо, кроме старт-стопа ничего сделать не получится.

 

Просто мне достались модули, у которых "Reset" тупо подключен к "+" питания, а они иногда уходят со связи. Ладно, сегодня пятница-развратница, поэтому будем пробовать технику старт-стоп.

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


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

Я для возможности сброса подвисших устройств просто на некоторое время отключал их питание, а потом включал снова. Для этого удобно использовать p-мосфет с ограничителем тока в 0.5А (которые применяются в USB-хабах): заодно и если там что-то где-то замкнет, то ничего не сгорит. В одной из таких схем у меня на каждом канале мультиплексора висит по 2 термодатчика с проводами длиной до трех метров, а шина питания для всех восьми - общая, через такой ключ. И предусмотрена процедура отключения/включения датчиков, если что-то начинает глючить (правда, де-факто не помогла она: видимо, проблема в том, что при некоторых положениях трубы телескопа физически пропадает контакт - надо было нормальные разъемы использовать или клеммники, а я сдуру использовал телефонные 4p4c).

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


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

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

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

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

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

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

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

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

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

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