Сопротивление контактов микроконтроллера при отсутствии питания?

У меня есть микросхема последовательной флэш-памяти, подключенная к микроконтроллеру ARM (AT91SAM9G20). Я хотел бы иметь возможность запрограммировать последовательную флэш-память после того, как оба чипа будут припаяны к печатной плате. Для каждой из последовательных линий флэш-памяти я могу добавить переходные отверстия, которые я могу довольно легко задеть с помощью пого-штифтов.

Нужно ли также отключать контакты последовательной флэш-памяти от микроконтроллера с помощью перемычек? Каково сопротивление контактов микроконтроллера, когда микроконтроллер не питается?

(Я измерил импеданс контактов микроконтроллера параллельно со вспышкой около 2 МОм с помощью мультиметра, но я не доверяю таким измерениям при работе с диодами.)

Прислушайтесь к голосу опыта: в какой-то момент развития проекта вы захотите запрограммировать последовательную флэш-память с помощью микроконтроллера. Независимо от того, насколько вы считаете, что изменения в полевых условиях маловероятны, вам следует написать свою прошивку, чтобы обновить последовательную флэш-память. Тогда вашему тестовому приспособлению нужно только поговорить с основным микроконтроллером.
На самом деле я уже могу запрограммировать последовательную флэш-память с микроконтроллера, но это относительно медленно из-за задействованного программного обеспечения JTAG. Но я серьезно подумываю о том, чтобы полностью отказаться от этого и придерживаться более медленного метода JTAG, потому что он, как известно, работает.

Ответы (2)

Импеданс контактов микроконтроллера, вероятно, довольно высок. Однако проблема в том, что эти контакты, вероятно (я не знаком с этим микроконтроллером и не искал его), имеют защитные диоды или схемы, аналогичные Vss и Vdd. Конечным результатом является то, что они выглядят как высокое сопротивление в пределах одного падения напряжения на землю (и мощность, поскольку мощность = земля при отсутствии питания). Если вы попытаетесь поднять его выше, это может привести к значительному току, а также может повредить микро. В некоторых случаях это может даже как бы включить микро, но не так, как это задумано.

Обычно есть два способа справиться с этим

  1. Включите оба устройства во время производственных испытаний и программирования. Тогда у вас есть нормальные строки данных, которые ведут себя так, как должны. Убедитесь, что микроконтроллер устанавливает для них высокий импеданс. Возможно, вам придется временно загрузить в него другой код для этой цели. Нет ничего необычного в том, что в рабочем коде есть специальный код производственного тестирования или режимы для производственного тестирования.

  2. Поместите последовательно достаточное сопротивление, чтобы микроконтроллер не повредился (хотя удачи в поиске четких спецификаций по этому поводу) и не загружал сигнал до такой степени, с которой не может справиться приспособление для программирования.

Далее к пункту №1. Большинство микроконтроллеров сохраняют свои линии ввода-вывода в состоянии высокого импеданса во время сброса. Таким образом, вам может понадобиться только убедиться, что микро находится в состоянии сброса при программировании другой части.
Я не могу легко использовать метод 1, потому что последовательная флэш-память содержит программу, которую будет запускать микро, поэтому метод 2 более привлекателен. Если я поставлю резисторы 10k последовательно со всеми выводами данных последовательной флэш-памяти, это ограничит ток до ~ 0,27 мА, когда я подтяну их к высокому уровню, и я уверен, что это ничего не сожжет. Я ожидаю, что связь между чипами все еще будет работать, потому что 10 кОм мало по сравнению с импедансом всех входов ~ МОм. Это звучит разумно?
@markrages: В одной строке, где у меня подключен светодиод, этот микро, кажется, пропускает ~ 50 мкА как при сбросе, так и при загрузке. Останавливается после загрузки Linux и драйвер sysfs вступает во владение. Как-то странно.
@pingswept, важен не статический импеданс контактов, а емкость входов. Емкость в сочетании с резисторами 10 кОм образует RC-фильтр нижних частот. Это плохо для высокоскоростной линии передачи данных. Вроде серийная флешка скорее всего есть.
@markrages Я мог бы уменьшить последовательные резисторы до 1k. Можно ли как-то оценить эффект? Все дорожки имеют ширину 5 мил и длину около 0,5 дюйма, в основном около 30 мил от плоскости земли.
@pings: не менее 10 пФ на землю, 20 было бы безопаснее. Затем вычислите постоянную времени и результирующее время нарастания. Например, 10 кОм x 20 пФ = 200 нс. Время нарастания 95% составляет 3 постоянные времени или в данном случае 600 нс. Вам также необходимо учитывать наводку шума на таком цифровом узле с относительно высоким импедансом.
@pingswept 50 мкА? Возможно микро держит слабые подтягивания в сбросе. В любом случае, 50 мкА не должно быть проблемой для вашего серийного флеш-программатора.
@OlinLathrop: я мог бы уменьшить последовательный резистор до 1k, что означало бы 95% времени нарастания за 60 нс, что кажется нормальным для моих последовательных часов с частотой 1 МГц. Но все это кажется достаточно рискованным, поэтому я думаю, что могу придерживаться более медленного программирования JTAG, которое у меня есть.

Микроконтроллеры и другие цифровые ИС почти всегда включают в себя некоторые схемы для защиты выводов от статического электричества путем отвода по крайней мере некоторого тока, когда напряжение на выводах начинает достигать опасного уровня. Обратите внимание, что если бы не было какой-либо схемы защиты и если бы контакт вообще не протекал до тех пор, пока не вышел из строя, даже пикоампер, протекающий через контакт, был бы достаточным, чтобы разрушить чип (даже пикоампер, протекающий в чип, вызовет напряжение будет увеличиваться до тех пор, пока либо не произойдет некоторая утечка, либо часть не выйдет из строя; на практике многие микросхемы начнут протекать больше, чем на пикоампер, прежде чем напряжение станет достаточно высоким, чтобы вызвать катастрофический отказ). Этого можно добиться двумя общими способами:

  1. Спроектируйте вывод так, чтобы, когда его напряжение значительно выше, чем VDD (более ~ 0,3 вольта), ток протекал от этого вывода к VDD; если контакт получает более ~ 0,7 вольта от VDD, ток заметно увеличится.
  2. Спроектируйте вывод таким образом, чтобы, если его напряжение слишком сильно превышало VSS (например, более ~ 5,5 вольт), ток протекал к VSS.
Первый способ защиты дешевле и эффективнее в тех случаях, когда нет необходимости запускать вывод выше VDD. Это, однако, будет означать, что любой контакт, на котором есть напряжение, когда VDD не находится, будет пытаться подать питание на устройство.

Чтобы узнать, какой тип защиты имеет контакт, проверьте раздел «Абсолютные максимальные рейтинги» в техническом описании. Если максимальное напряжение вывода указано как что-то вроде VDD+0,3 вольта, то вывод нельзя использовать, пока микросхема не запитана. Если он указан как что-то вроде «VSS + 5,5 вольт» или просто «5,5 вольт», то можно использовать контакт, когда устройство выключено.