Версия или конфигурация кодирования на печатной плате

10

Мне нужно кодировать информацию о версии или конфигурации на плате / электрически, чтобы микропрограмма могла определить, какая схема платы используется.

Какие варианты возможны и каковы их плюсы / минусы?

Хенрик Хансен
источник
1
Там также есть этот вопрос некоторое время назад, ответы похожи на те, что уже даны (что хорошо!): Electronics.stackexchange.com/questions/41757/…
awjlogan

Ответы:

14

Вдобавок ко мне приходят два простых решения.

  1. У п линий , подключенных к GPIO вашего микроконтроллера. Свяжите их высоко или низко в зависимости от вашей версии платы. Это даст вам параметров конфигурации платы. Это будет использовать n контактов на вашем микроконтроллере. Статическое потребление тока будет незначительным.2N
  2. Имейте вход в АЦП микроконтроллера и используйте делитель напряжения с различными значениями в зависимости от конфигурации платы. Это будет использовать только один вывод микроконтроллера. Это имеет тот недостаток, что статический ток будет проходить через делитель. Это также может привести к ошибкам спецификации, в то время как первое предложение жестко привязано к плате.

Оба эти предложения имеют недостаток в том, что конечный пользователь может легко их изменить, скажем, открыть «заблокированные» функции. Это может не беспокоить вас, но что-то иметь в виду.

awjlogan
источник
1
Существует также комбинация [1] и [2]. Вы можете использовать один вывод микроконтроллера для АЦП, но использовать тот же компонент значения, подключенный параллельно, чтобы сформировать делитель напряжения. Так, например, у вас может быть четыре резистора 10 кОм, которые образуют 10 кОм / поплавок (pull to vcc), поплавок / 10 кОм (pull to gnd), 10k / 10k (vcc / 2), 5k / 10k (2/3 от vcc), 10 к / 5 КБ (1/3 от VCC). Короче говоря: одна строка в спецификации, просто другое количество и один вход АЦП. Это также помогает визуально.
Сократ
2
Вы можете избавиться от статического тока, потребляемого решением АЦП, если сможете сэкономить второй вывод: вместо делителя напряжения между VCC и GND замените VCC или GND на второй вывод - вам нужно только один раз прочитать конфигурацию платы. в начале программы, поэтому установите вывод высокий / низкий, как требуется для включения делителя напряжения, выполните измерение АЦП, затем переключите вывод так, чтобы оба конца делителя напряжения имели одинаковый потенциал и ток не протекал.
Алекси Торхамо
1
Версия GPIO также подвержена ошибкам спецификации, потому что обычно она настроена с нулевыми омами. Вы можете сделать это в схеме и макете, но это дороже (время макета стоит ).
Грэм
1
Что касается АЦП, это то, что мы использовали в продуктах, где я сейчас работаю. Вы должны быть осторожны с допусками резистора все же. Если ваши два резистора имеют допуск 1%, напряжение может доходить до 2%, поэтому самое большее вы получаете 50 шагов, которые вы можете решить. На практике безопаснее вдвое сократить это. Поэтому, если у вас есть 1% резисторов и диапазон 5 В на вашем АЦП, вы хотите, чтобы о версиях сообщалось с шагом 0,2 В.
Грэм
9

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

Если вам нужно иметь возможность изменять ID во время выполнения, то лучше использовать перемычки, а не связывать входы с трассировками.

Colin
источник
Я гуглил неуникальные кремниевые вариации серийных номеров, но это умная альтернатива. Особенно, если вы комбинируете его с одним проводным расширителем ввода-вывода.
Jeroen3
7

Некоторые варианты, которые я могу придумать:

SMD PADS / O ОМ резисторы. Используйте двоичную систему для конфигурации оборудования, чтобы уменьшить количество выводов для вашего процессора.

Перемычки. На плате будет 2xN разъема, добавляя перемычку к правому контакту, и вы сможете выбрать свою конфигурацию. Ошибка легче решить. Это может быть немного дорого и использовать больше места на доске в зависимости от перемычки.

Если на плате установлена ​​EEPROM, возможно, вы сможете встроить конфигурацию в память.

Можно ли изменить саму прошивку с помощью #define или аналогичной? Тогда вам не нужно место на плате и дополнительные контакты для определения версии.

R.Joshi
источник
1

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

Другие преимущества включают полезные функции, такие как гарантированные уникальные серийные номера.

Эта опция используется во многих системах, таких как датчики осциллографа и батареи, поскольку требуется только одна линия данных. ЭСППЗУ может даже получать питание от самой линии передачи данных.

Основным недостатком является стоимость. Стоимость не высока, но на продукты массового производства могут иметь значение несколько центов.

Примером такой EEPROM является DS2431, который хранит 1 КБ.

пользователь
источник