Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос защиты GPIO от КЗ
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
AndyDev
Ситуация простая:

Есть 2 (или больше) микроконтроллера LPC2101, сидящие на одной параллельной (например 8-битной) шине, для реализации которой используются GPIO порты.
В нормальном состоянии, только один из контроллеров выдает на шину данные, а остальные читают.
Но не исключена ситуация, когда один из микроконтроллеров 'зависнет', оставив на шине активный '0' или '1'. В таком случае неизбежна коллизия, когда на одну линию разными микроконтроллерами выставляются противоположные значения, т.е. одним лог '1', другим '0'. Сразу имеем сквозной ток.
Как защитится, чтобы в такой ситуации не сгорели порты?

И еще, сколько на порт микроконтроллера LPC2101 можно посадить других портов LPC2101, которые только читают? 5? 10? 20? Как это рассчитать?
DASM
Резисторы поставьте, чтобы не сгорело ничего.. А можно еще повесить на шину один резистор, а контроллеры настроить на выход в режиме открытого стока - тогда тоже безопасно. А рассчитать нагрузочную способность - зависит от скорости - берите емкость входа и емкости платы, считаете время перезаряда этой емкости током выхода процессора
AndyDev
Цитата(DASM @ Nov 24 2007, 22:47) *
Резисторы поставьте, чтобы не сгорело ничего.. А можно еще повесить на шину один резистор, а контроллеры настроить на выход в режиме открытого стока - тогда тоже безопасно. А рассчитать нагрузочную способность - зависит от скорости - берите емкость входа и емкости платы, считаете время перезаряда этой емкости током выхода процессора

Резисторы не подходят, ибо на высокой частоте переключения (около 4Мгц) они совместно с емкостью навешанных на шину входов других микроконтроллеров образуют нехилый RC-фильтр, который завалит все фронты, это однозначно.

И второе, емкостью монтажа, думаю, можно пренебречь, а вот емкость входов мне не известна.
И даже в даташите на LPC2101 я ее что-то не нашел. Обычно пишут, например, 50пф, и рисуют эквивалентую схему. А на LPC2101 даже не потрудились. Или же у меня просто глаз замылился и я чего-то не замечаю.
DASM
При 50 омных резисторах сомневаюсь, что сильно что-то завалится, ну да ладно
rezident
Не экономьте "на спичках". Делайте нормальный диспетчер доступа к шине. Проще всего на ПЛИС.
AndyDev
Цитата(DASM @ Nov 24 2007, 23:58) *
При 50 омных резисторах сомневаюсь, что сильно что-то завалится, ну да ладно

Думаю, что все же завалятся.
Если предположить, что суммарная емкость всех входов, навешанных на одну линию 500пф (10 входов по 50пф), то емкостное сопротивление на частоте 4МГц будет равно 80Ом, что образует хороший делитель с этим самым последовательным 50 омным резистором. А если учесть, что такие 50Омные резисторы должны быть на ножках каждого микроконтроллера в этом устройстве, то получаем 100 Ом, а не 50. В общем, на таких частотах - это не выход.

Хотелось бы узнать о других методиках.
Возможно сам контроллер имеет защиту от перегрузки по току?
Или еще есть какие-то методы?


Цитата(rezident @ Nov 25 2007, 00:03) *
Не экономьте "на спичках". Делайте нормальный диспетчер доступа к шине. Проще всего на ПЛИС.

Я бы рад, но ввиду сверхдешевизны предполагаемого устройства, никакие плисы и другие буфера и шинные формирователи не подходят.

p.s.: Хотя, конечно, если больше ничего не останется, то придется сделать именно так...
DASM
Цитата(AndyDev @ Nov 25 2007, 00:07) *
Хотелось бы узнать о других методиках.
Возможно сам контроллер имеет защиту от перегрузки по току?
Или еще есть какие-то методы?

Не имеет. Тогда слушайте rezident- а имхо. А 50 пФ Вы откуда взяли ? Мне всегда казалось что там что-около 10 пФ
AndyDev
Цитата(DASM @ Nov 25 2007, 00:09) *
Не имеет. Тогда слушайте rezident- а имхо. А 50 пФ Вы откуда взяли ? Мне всегда казалось что там что-около 10 пФ

Если 10пф - это хорошо...
Хотя, как я уже говорил, в спецификации я этого не видел.
А 50пф взял усредненно.
DASM
Цитата(AndyDev @ Nov 25 2007, 00:09) *
Думаю, что все же завалятся.
Если предположить, что суммарная емкость всех входов, навешанных на одну линию 500пф (10 входов по 50пф), то емкостное сопротивление на частоте 4МГц будет равно 80Ом, что образует хороший делитель с этим самым последовательным 50 омным резистором. А если учесть, что такие 50Омные резисторы должны быть на ножках каждого микроконтроллера в этом устройстве, то получаем 100 Ом, а не 50. В общем, на таких частотах - это не выход.

А это Вы о чем ? Считаем время нарастания с выхода проца и на шину - в R подставляется именно 50 ом, и никак не 100


Цитата(AndyDev @ Nov 25 2007, 00:12) *
Если 10пф - это хорошо...
Хотя, как я уже говорил, в спецификации я этого не видел.
А 50пф взял усредненно.

Ну вот например SAM7X от Атмеля имеет 13.9 пФ на ногу в TQFP100 корпусе. Как-то нет оснований считать, что у NXP аж 50 стало
AndyDev
Цитата(DASM @ Nov 25 2007, 00:13) *
А это Вы о чем ? Считаем время нарастания с выхода проца и на шину - в R подставляется именно 50 ом, и никак не 100

100 ом - это 2 резистора по 50.
Т.е. так как шина общая, то каждый микроконтроллер подключен на нее через 50Омный резистор. Соответстввенно от точки передачи до точки приема будет лежать 2 последовательных 50 Омных резистора.
DASM
Цитата(AndyDev @ Nov 25 2007, 00:17) *
100 ом - это 2 резистора по 50.
Т.е. так как шина общая, то каждый микроконтроллер подключен на нее через 50Омный резистор. Соответстввенно от точки передачи до точки приема будет лежать 2 последовательных 50 Омных резистора.

И что ? Второе плечо то нагружено будет только на одну ногу - тау будет порядка 7e-10 - копейки
AndyDev
Цитата(DASM @ Nov 25 2007, 00:16) *
А это Вы о чем ? Считаем время нарастания с выхода проца и на шину - в R подставляется именно 50 ом, и никак не 100
Ну вот например SAM7X от Атмеля имеет 13.9 пФ на ногу в TQFP100 корпусе. Как-то нет оснований считать, что у NXP аж 50 стало

Ну хорошо, усредним о 15пф, плюс еще емкость платы, итого 25-30пф точно набежит, не меньше.

Конечно, в идеале хотелось бы обойтись без всяких резисторов и буферов, поскольку в принципе микроконтроллеры это позволяют. Вопрос только о защите от КЗ при зависании одного из них.
DASM
ну по даташиту КЗ допустимо (ток порядка 50 мА будет) но - 7] Only allowed for a short time period. Какой этот период - выяснять придется у NXP. Ну и думать, как коллизию отловить и быстро устранить
AndyDev
Цитата(DASM @ Nov 25 2007, 00:23) *
ну по даташиту КЗ допустимо (ток порядка 50 мА будет) но - 7] Only allowed for a short time period. Какой этот период - выяснять придется у NXP. Ну и думать, как коллизию отловить и быстро устранить

Вот это чудненько.
Теперь осталось выяснить, насколько оно короткое это допустимое время.

Кстати, тогда становится непонятна эквивалентная схема комплементарной пары полевых ключей выхода. Если ток ограничен 50мА, значит эти ключи идут на Vcc и Vss через 60 Омные внутренние резисторы.
DASM
Вообще тут случай не КЗ, а загрузки "1" одного проца "0" - ем другого. Но вот станет ли от этого сквозной ток 50/2 = 25 мА я не уверен. А вообще все равно некрасиво все это и нехорошо sad.gif

Цитата(AndyDev @ Nov 25 2007, 00:42) *
Кстати, тогда становится непонятна эквивалентная схема комплементарной пары полевых ключей выхода. Если ток ограничен 50мА, значит эти ключи идут на Vcc и Vss через 60 Омные внутренние резисторы.

Это зачем такие ужасы, а сопротивление открытого канла забыли ? Ненулевое отнюдь
AndyDev
Цитата(DASM @ Nov 25 2007, 00:48) *
Вообще тут случай не КЗ, а загрузки "1" одного проца "0" - ем другого. Но вот станет ли от этого сквозной ток 50/2 = 25 мА я не уверен. А вообще все равно некрасиво все это и нехорошо sad.gif
Это зачем такие ужасы, а сопротивление открытого канла забыли ? Ненулевое отнюдь

Возможно это и есть сопротивление открытого канала.
Вполне нормальное кстати.

А если так, то вообще, 50мА - это вполне нормальный ток. Не такой уж и большой.

А что касается некрасивости, так этот сквозной ток только в исключительном случае, которого и быть-то при стабильной работе системы не должно.
DASM
Цитата(AndyDev @ Nov 25 2007, 00:50) *
Возможно это и есть сопротивление открытого канала.
Вполне нормальное кстати.

А если так, то вообще, 50мА - это вполне нормальный ток. Не такой уж и большой.

А что касается некрасивости, так этот сквозной ток только в исключительном случае, которого и быть-то при стабильной работе системы не должно.

А почему должна быть нестабильная работы системы ? smile.gif Я не очень понял - коллизии это не рабочий вариант (как в Ethernet например) а именно глюк системы ?
PS что-то даже интересно стало, зачем на одной плате десяток LPC в одной да еще и параллельной шине ?
AndyDev
Цитата(DASM @ Nov 25 2007, 00:53) *
А почему должна быть нестабильная работы системы ? smile.gif Я не очень понял - коллизии это не рабочий вариант (как в Ethernet например) а именно глюк системы ?

Да, в случае глюка.
Т.е. например, один из контроллеров (когда пришла его очередь) выдал на шину '0' или '1', в общем активное значение и завис. Вот это и можно считать исключительным, но возможным случаем.
DASM
А "тестовые импульсы" в шину давать можно ? То есть каждый контроллер выдавая что-то проверяет - способен ли он "удержать" шину как в "1" так и в "0" ? Ну и лампочку красную зажгет если не может smile.gif
AndyDev
Цитата(DASM @ Nov 25 2007, 01:00) *
А "тестовые импульсы" в шину давать можно ? То есть каждый контроллер выдавая что-то проверяет - способен ли он "удержать" шину как в "1" так и в "0" ? Ну и лампочку красную зажгет если не может smile.gif

Тоже вариант )))
DASM
фиговый вообще-то вариант, т.к. неясно, что при такой коллизии будет считано с ноги - там явно что-то посередке.. так что дурацкая идея
AndyDev
Цитата(DASM @ Nov 25 2007, 01:05) *
фиговый вообще-то вариант, т.к. неясно, что при такой коллизии будет считано с ноги - там явно что-то посередке.. так что дурацкая идея

Почему же, вполне работоспособный.
Перед тем, как что то писать на шину, загружаем ее в 1, потом проверяем, стала ли 1, потом в 0, и провеям стала ли 0. И только потом пишем.
Хотя конечно это муторно.

p.s.: Что-то я туплю. Конечно легче вывести информацию на шину (полезную информацию, а не тестовую), и сразу проверить, встала ли шина в нужное состояние или нет.
Но это дополнительное лишнее время на проверку.
DASM
Ну допустим кто-то завесил на "1" . Мы пишем "1" - читаем "1". Пишем "0" - этот ноль может оказаться "сильнее" зависшей единицы - ну и прочтем ноль, т.е. вроде как "все нормально" но сквозняк дует вовсю.
AndyDev
Цитата(DASM @ Nov 25 2007, 01:12) *
Ну допустим кто-то завесил на "1" . Мы пишем "1" - читаем "1". Пишем "0" - этот ноль может оказаться "сильнее" зависшей единицы - ну и прочтем ноль, т.е. вроде как "все нормально" но сквозняк дует вовсю.

Да, дилема.
koyodza
В самом деле, как-то не вяжется "дешевизна" с "десятком LPC" и "параллельной шиной". Да еще и со скоростями "4МГц". Интересно, что это за монстр такой?

А вообще резисторы последовательно с ногами (33-51 Ом) не только облегчат критическую ситуацию, но и уменьшат "звон" на шине, улучшат EMI и ЕМС. И еще нужно добавить возможность проверки занятости шины - напр собрать со всех МК по одному выводу с ОК в одну точку и подтянуть к питанию. Прежде чем занять шину, смотрим на эту ногу: если она 1 - можем занимать. Но перед тем, как занять (перейти из Z-состояния в активное) опустить эту ногу в 0. После возврата в Z-состояние возвращаем в 1. Если нужно быстрее - можно сначала перевести порт в Push-Pull и выдать 1, а только потом в OpenDrain. Но на счет скорости сильно не обольщайтесь - АРМы очень плохо (медленно) работают с портами
AndyDev
Цитата(koyodza @ Nov 27 2007, 17:20) *
В самом деле, как-то не вяжется "дешевизна" с "десятком LPC" и "параллельной шиной". Да еще и со скоростями "4МГц". Интересно, что это за монстр такой?

А вообще резисторы последовательно с ногами (33-51 Ом) не только облегчат критическую ситуацию, но и уменьшат "звон" на шине, улучшат EMI и ЕМС. И еще нужно добавить возможность проверки занятости шины - напр собрать со всех МК по одному выводу с ОК в одну точку и подтянуть к питанию. Прежде чем занять шину, смотрим на эту ногу: если она 1 - можем занимать. Но перед тем, как занять (перейти из Z-состояния в активное) опустить эту ногу в 0. После возврата в Z-состояние возвращаем в 1. Если нужно быстрее - можно сначала перевести порт в Push-Pull и выдать 1, а только потом в OpenDrain. Но на счет скорости сильно не обольщайтесь - АРМы очень плохо (медленно) работают с портами

Десяток LPC - это в перспективе. Да и дешевизна не с потолка, учитывая, что LPC2101 стоит менее 2-х долларов.

По поводу уменьшения звона, EMI и EMC при подключении резюков 30-50 Ом, нельзя ли обосновать с научной
точки зрения?

На счет арбитража отдельным битиком свободно/занято - идея была, но это несколько усложняет дело, и необходимо только в том случае, если LPC не способны выдержать кратковременного (порядка 100мкс) сквозного тока с 1 на 0.

И еще, как это плохо (медленно) работают с портами? Те модельки, у которых есть FASTGPIO еще как резво работают.
Alex03
AndyDev
Описали б лучше проект свой. Т.е. что должен девайс делать, а не частный способ решения.
ИМХО даже если у вас чтото выйдет с этой параллельной шиной, то все ваши 10 LPC только и будут обмениваться данными. Т.е. на обмен данными на частоте 4МГц уйдёт всё процессорное время.
Deka
Где-то я читал про микросхемы от максима для защиты в подобных ситуациях. Даже купил себе пару штук, но до тестирования дело пока не долшло. Покупал в терраэлектронике. Думаю в новостях у них (прошлых) можно будет найти инфу.
koyodza
Цитата(AndyDev @ Nov 28 2007, 02:20) *
...
По поводу уменьшения звона, EMI и EMC при подключении резюков 30-50 Ом, нельзя ли обосновать с научной точки зрения?

Довольно странный вопрос. Это же RC-фильтр, литературы на эту тему масса.

Цитата(AndyDev @ Nov 28 2007, 02:20) *
...
На счет арбитража отдельным битиком свободно/занято - идея была, но это несколько усложняет дело, и необходимо только в том случае, если LPC не способны выдержать кратковременного (порядка 100мкс) сквозного тока с 1 на 0.

100мсек сквозной ток конечно же выдержит любой современный МК, даже без ограничивающих резисторов. Другое дело, что при слабом ИП может быть просадка и сброс
AndyDev
Цитата(Alex03 @ Nov 28 2007, 08:28) *
AndyDev
Описали б лучше проект свой. Т.е. что должен девайс делать, а не частный способ решения.
ИМХО даже если у вас чтото выйдет с этой параллельной шиной, то все ваши 10 LPC только и будут обмениваться данными. Т.е. на обмен данными на частоте 4МГц уйдёт всё процессорное время.

Я в курсе, сколько это займет. Но это все рассчитано, отсюда и взялись эти 4МГц.

Цитата(Deka @ Nov 28 2007, 10:20) *
Где-то я читал про микросхемы от максима для защиты в подобных ситуациях. Даже купил себе пару штук, но до тестирования дело пока не долшло. Покупал в терраэлектронике. Думаю в новостях у них (прошлых) можно будет найти инфу.

Подобных - это каких? Поясните пожалуйста тип защиты, и модельки микросхем.
Хотя цена, я думаю, будет неприемлимая на фоне таких дешевых МК.

Цитата(koyodza @ Nov 28 2007, 12:51) *
Довольно странный вопрос. Это же RC-фильтр, литературы на эту тему масса.
100мсек сквозной ток конечно же выдержит любой современный МК, даже без ограничивающих резисторов. Другое дело, что при слабом ИП может быть просадка и сброс

Так тот же самый RC получится, если принимать во внимание примерно 30-50 омное внутреннее сопротивление перехода выходного ключа.
А что касасется 100мкс - выдержит любой, хотелось бы документально так сказать увидеть...
Ну а всплески при слабом ИП можно компенсировать керамическими конденсаторчиками непосредственно рядом с МК. Это не проблема.
defunct
Так в чем суть проекта?
Может там и не надо никакой параллельной шины? SPI на 30Mhz работает, 30/8 ~4MByte/сек.
AndyDev
Цитата(defunct @ Nov 28 2007, 15:19) *
Так в чем суть проекта?
Может там и не надо никакой параллельной шины? SPI на 30Mhz работает, 30/8 ~4MByte/сек.

Во первых, к шине работающей на частоте 30МГц требования должны быть значительно выше, чем к той, что на 4МГц. Это хорошо, если она связывает 2 устройства, и имеет протяженность 1-2см. А как быть, если этих устройств 8? 10? Как быть с адресацией? Да и арбитраж и управление значительно усложнилось бы. В общем, для данной модели это неподходяще.

Да, и SPI уже занят общенем с переферией.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.