|
Шина I2C, отключение питания одного из slave на шине |
|
|
|
Aug 19 2008, 14:18
|
Участник

Группа: Новичок
Сообщений: 23
Регистрация: 11-04-07
Пользователь №: 26 949

|
Всем добрый день!
Вопрос такой: будет ли работать шина I2C, если отключить питание одного из нескольких I2C-Slave ? При этом физически подключение к шине незапитанной микросхемы остаётся. Мастером является AVR с аппаратной поддержкой I2C.
|
|
|
|
|
 |
Ответов
(45 - 58)
|
Aug 22 2008, 11:30
|

Знающий
   
Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065

|
Цитата(=GM= @ Aug 22 2008, 16:51)  А вот интересно, почему в качестве протокола для обмена в МК (и ПК) не используется код манчестер-2? Всего-то, договориться, что перепад 1-0 даёт 1, перепад 0-1 даёт 0, в начале байта посылать 0 в течение 3То/2. Манчестер-2 -- отличный протокол. Его достоинство -- работать там, где нет возможности передавать постоянную составляющую, для связи МК-ПК не даст ему преимущества. А учитывая повышенную сложность его реализации, приходишь к выводу, что есть более простые решения.
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
|
Aug 22 2008, 12:54
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(defunct @ Aug 22 2008, 13:33)  В SPI нечего патентовать. Любой студент в состоянии придумать такой интерфейс самостоятельно. I2C все же гораздо сложнее. Что-то мне кажется, что если бы дело было в патенте, то в AVR не было бы I2C вообще без покупки права использования, а с покупкой было бы и название (на ARM7 лиценизию купили и называют его ARM7). А так, как мне кажется, дело только в использовании "зарегистрированной торговой марки". Если бы Моторола зарегистрировала на себя слово SPI, то пришлось бы Атмелу независимо от простоты этого интерфейса или выдумывать другое слово (как выдумано для I2C), или покупать право использования слова. Может, раньше дело и в патенте было, да только срок действия истёк. Долго довольно если где-то было I2C - то но так и называлось, видать тогда без покупки права вообще нельзя было использовать, а с покупкой - можно и назвать "честно". А потом срок патента истёк и начали делать все, кому не лень, но называть по-другому. Цитата(zhevak @ Aug 22 2008, 14:30)  Манчестер-2 -- отличный протокол. Его достоинство -- работать там, где нет возможности передавать постоянную составляющую, для связи МК-ПК не даст ему преимущества. А учитывая повышенную сложность его реализации, приходишь к выводу, что есть более простые решения. У микрочиповских однопроводных EEPROM разве не манчестер-2? http://www.microchip.com/wwwproducts/Devic...ocName=en535099Кстати, обратите внимание - на этой страничке Микрочип возле слова I2C прикручивает , возле microwire и spi - нет. Возле слова manchester - тоже нет. Но возле своего слова UNI/O - прикручивает, теперь кто бы не сделал такое же - или должен купить у микрочипа право на применение слова, или придумывать другое.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Aug 22 2008, 14:03
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(zhevak @ Aug 22 2008, 10:30)  Его достоинство -- работать там, где нет возможности передавать постоянную составляющую, для связи МК-ПК не даст ему преимущества. А учитывая повышенную сложность его реализации, приходишь к выводу, что есть более простые решения Ну, положим, сложность манчестера вы преувеличиваете, он сопоставим по сложности с rs232, и на порядок проще, чем тот же I2C. Преимущества очевидны, один провод, нет постоянки, посылай хоть по радио. Но самое главное преимущество - СУЩЕСТВЕННОЕ ослабление требований к стабильности клоков приёмника и передатчика. Допустима общая нестабильность 25% на ОДИН бит, в то же время в rs232 всего 5% на ДЕСЯТЬ бит, что позволяет работать на МК с внутренним генератором без калибровки. Цитата(ReAl @ Aug 22 2008, 11:54)  У микрочиповских однопроводных EEPROM разве не манчестер-2? Да, он самый. Спасибо за ссылку, не знал, с удовольствием почитал. Много чего надстроили над физуровнем(:-)
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Aug 22 2008, 14:11
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(=GM= @ Aug 22 2008, 18:03)  Ну, положим, сложность манчестера вы преувеличиваете, он сопоставим по сложности с rs232, и на порядок проще, чем тот же I2C. Нет, это вы преуменьшаете. RS232 проще хотя бы потому, что приемнику не нужно восстанавливать тактовую частоту. I2C - вообще синхронная шина. Попробуйте на МК написать слейв, работающий как микрочиповский EEPROM - в диапазоне 10-100kHz.
|
|
|
|
|
Aug 22 2008, 15:03
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(aaarrr @ Aug 22 2008, 13:11)  RS232 проще хотя бы потому, что приемнику не нужно восстанавливать тактовую частоту Ну, это формальный подход, на самом деле, в манчестере тоже можно обойтись без восстановления, хотя можно и восстановить если надо. Пара-тройка дополнительных строчек кода. Цитата(aaarrr @ Aug 22 2008, 13:11)  I2C - вообще синхронная шина Хоть это и синхронный протокол, но гораздо сложнее манчестера. Одни старт-стопные условия замучают. Попробуйте съэмулировать с помощью АВР МК работу иипром с иис-протоколом хотя бы на скорости 400 кГц. Я знаю, о чём говорю, поскольку в своих изделиях применяю программный иис обмен на скорости 5Мбод, 200 нс такт. Цитата(aaarrr @ Aug 22 2008, 13:11)  Попробуйте на МК написать слейв, работающий как микрочиповский EEPROM - в диапазоне 10-100kHz Легко, при условии, что и вы в свою очередь напишете программу приёма одного байта по рс232 для того же диапазона скоростей. Заодно и объясните всем, на каком принципе вы будете различать байты 0хF0, 0xF8, 0xFC и тому подобное. (Замечу в скобках, что код для приёма будет работать на любой скорости 10-100, несмотря на то, что скорости заявленной иипром различаются в 10 раз, а манчестер допускает увеличение скорости на интервале одного бита не более, чем на 100%.)
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Aug 22 2008, 15:33
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(=GM= @ Aug 22 2008, 19:03)  Ну, это официозный подход, на самом деле, в манчестере тоже можно обойтись без восстановления, хотя можно и восстановить если надо. Пара-тройка дополнительных строчек кода. Если диапазон частот 10-100, то без восстановления делать нечего. Микрочиповские EEPROM'ы восстанавливают. Цитата(=GM= @ Aug 22 2008, 19:03)  Хоть это и синхронный протокол, но гораздо сложнее манчестера. Одни старт-стопные условия замучают. Очередная цитата из стандарта: Цитата 6.2 START and STOP conditions Within the procedure of the I2C-bus, unique situations arise which are defined as START (S) and STOP (P) conditions (see Fig.5). A HIGH to LOW transition on the SDA line while SCL is HIGH is one such unique case. This situation indicates a START condition. A LOW to HIGH transition on the SDA line while SCL is HIGH defines a STOP condition. Ну очень сложно. Цитата(=GM= @ Aug 22 2008, 19:03)  Попробуйте съэмулировать с помощью АВР МК работу иипром с иис-протоколом хотя бы на скорости 400 кГц. Я знаю, о чём говорю, поскольку в своих изделиях применяю программный иис обмен на скорости 5Мбод, 200 нс такт. Во-первых, I2S или I2C? Стандарт I2C не предусматривает передачи на скоростях выше 3.4 Mbit/s. Во-вторых, вы уже продемонстрировали, что не знаете элементарных вещей, поэтому позволю себе усомниться в ваших словах. Цитата(=GM= @ Aug 22 2008, 19:03)  Легко, при условии, что и вы в свою очередь напишете программу приёма одного байта по рс232 для того же диапазона скоростей. Заодно и объясните всем, на каком принципе вы будете различать байты 0хF0, 0xF8, 0xFC и тому подобное. Видите ли, стандарт RS232 не предполагает работу на плавающей скорости и не предусматривает механизмов для ее обеспечения (autobaud не в счет). Цитата(=GM= @ Aug 22 2008, 19:03)  (Замечу в скобках, что код для приёма будет работать на любой скорости 10-100, несмотря на то, что скорости заявленной иипром различаются в 10 раз, а манчестер допускает увеличение скорости на интервале одного бита не более, чем на 100%.) С восстановлением тактовой по синхропоследовательности будет.
|
|
|
|
|
Aug 22 2008, 18:09
|

Знающий
   
Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065

|
Цитата(=GM= @ Aug 22 2008, 21:03)  на каком принципе вы будете различать байты 0хF0, 0xF8, 0xFC и тому подобное. 1. Приемник, работающий по протоколу Манчестер-2, ре-синхронизируется при каждом принятом. Приемник, работающий по последовательному протоколу (UART), осуществляет синхронизацию в начале последовательности по приему стартового бита. Иначе говоря, поскольку в UART синхрогнизация осуществляется один раз на 10 посылок (Start, 8 inforamtion bits and Stop), то получается, что устойчивость к стабильности частоты у UART-а на порядок ниже. Т.е. получается вроде как Манчестер-2 более пригоден на практике. Но сейчас многие МК имеют внутренние RC-генераторы со стабильностью 2% и менее, что вполне достаточно для устойчивой связи по последовательному итерфейсу. А с другой стороны, кварцевые резонаторы не так уж дорого и стоят. Т.е. опять-таки получается, что проблема (преимущество М-2) надумано. 2. Проблема остановки потока информации. (Например, клавиатура.) При использовании UART это решается легко. Устовие Stop на линии может длиться бесконечно долго. По условию Старт начинаем набирать байт. Вопрос. Что мы будем делать в М-2 в такой же ситуации? По-битовая синхронизация -- это конечно хорошо. Но нужна еще и по-байтовая синхронизация, а так же не надо забывать про по-пакетную синхронизацию. Т.е. при использовании М-2 для устройств типа клавиатура, мышь или еще какой-нибудь датчик, соблюсти все виды синхронизации оказывается сложнее, чем в том же UART-е.
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|