Кодування версії або конфігурації на друкованій платі


10

Мені потрібно кодувати інформацію про версію чи конфігурацію на платі / електрично, щоб прошивка могла визначити, яка компонування плати використовується.

Які варіанти можливі та які їхні плюси?


1
Знову ще є і це запитання, відповіді схожі на ті, що вже були задані (що добре!): Electronics.stackexchange.com/questions/41757/…
awjlogan

Відповіді:


14

На голову приходять два простих рішення.

  1. Закріпіть n ліній до GPIO вашого мікроконтролера. Зв’яжіть ці високі або низькі, залежно від версії вашої дошки. Це дасть вам параметрів конфігурації плати. Це використовуватиме n контактів на мікроконтролері. Притягнення статичного струму було б незначним.2n
  2. Майте вхід до АЦП мікроконтролера та використовуйте дільник напруги з різними значеннями залежно від конфігурації плати. Це використовує лише один штифт мікроконтролера. Це має той недолік, що через дільник буде проводитись статичний струм. Це також було б схильним до помилок BOM, тоді як перша пропозиція жорстко підключена до плати.

Обидві ці пропозиції мають слабку сторону в тому, що кінцевий користувач може легко їх змінити, скажімо, відкрити "заблоковані" функції. Це може не турбувати вас, але щось слід пам’ятати.


1
Існує також поєднання [1] та [2]. Ви можете використовувати один контактний мікроконтролер для АЦП, але використовувати однаковий компонент значення, з'єднаний паралельно для формування дільника напруги. Так, наприклад, у вас може бути чотири 10k резисторів, що утворюють 10k / float (тягнути до vcc), float / 10k (тягнути до gnd), 10k / 10k (vcc / 2), 5k / 10k (2/3 від vcc), 10k / 5 к (1/3 від Vcc). Отже, коротко: потрібен один рядок у BOM, просто різна кількість та один вхід АЦП. Це також допомагає візуально.
Сократ

2
Ви можете позбутися від розтягування статичного струму рішення АЦП, якщо зможете зберегти другий контакт: Замість дільника напруги між VCC та GND, замініть або VCC, або GND другим штифтом - вам потрібно прочитати конфігурацію плати лише один раз , на початку програми, тому встановіть штифт високий / низький, як це потрібно, щоб увімкнути дільник напруги, зробіть вимірювання АЦП, потім перемкніть штифт так, щоб обидва кінці дільника напруги були з однаковим потенціалом і не було потоків струму.
Алексі Торхамо

1
Версія GPIO також схильна до помилок BOM, оскільки зазвичай це налаштовано з нульовими омними посиланнями. Ви можете зробити це в схемі та макеті, але це дорожче ( витрати на компонування часу ).
Грем

1
Повторно ADC, це те, що ми використовували на продуктах, де я зараз працюю. Ви повинні бути обережними з допуском резисторів. Якщо ваші два резистори мають допуск 1%, напруга може бути до 2%, тому максимум ви отримаєте 50 кроків. На практиці це безпечніше вдвічі зменшити. Тож якщо у вас на АЦП є 1% резистори та 5В діапазон, ви хочете, щоб про версії повідомлялося кроками 0,2 В.
Грем

9

Я раніше використовував реєстр зрушень із прив'язаними високими та низькими шпильками, щоб кодувати доопрацювання плати до цього часу, якщо ви вже використовуєте SPI для чогось на вашій дошці, тривіально її читати.

Якщо вам потрібно мати змогу змінити ідентифікатор під час виконання, то корисним буде використання перемичок, а не зав'язування входів зі слідами.


Я гуглив за унікальним варіантом ІС із силіконовим серійним номером, але це розумна альтернатива. Особливо, якщо ви поєднуєте його з одножильним розширювачем вводу-виводу.
Jeroen3

7

Я можу придумати кілька варіантів:

З'єднання резисторів SMD PADS / O OHM. Використовуйте двійкову систему для налаштування обладнання, щоб зменшити кількість контактів для вашого процесора.

Джемпери. На платі були би штифти роз'ємів 2xN, додаючи перемичку до правого штифта, ви зможете вибрати вашу конфігурацію. Помилку простіше вирішити. Це може бути трохи затратно і використовувати більше місця на дошці залежно від перемичок.

Якщо у вас на платі є EEPROM, можливо, ви зможете вбудувати конфігурацію в пам'ять.

Чи можна змінити прошивку за допомогою #define або подібного? Тоді вам не потрібно місця на дошці та додаткових штифтів для виявлення версії.


1

Один провід EEPROM - це приємне рішення, оскільки їм потрібен лише один GPIO, але може зберігати велику кількість конфігураційної інформації. Вони також дозволяють мікроконтролеру записати цю інформацію під час тесту на платі (наприклад, дані калібрування). У багатьох є шпилька для захисту від запису або одноразовий програмований біт для запобігання подальших змін.

До інших переваг можна віднести такі корисні функції, як гарантовані унікальні серійні номери.

Цей варіант використовується в багатьох системах, таких як зонди осцилографа та батареї, через те, що потрібна лише одна лінія даних. EEPROM може навіть живитися від самої лінії даних.

Основним недоліком є ​​вартість. Вартість не висока, але на масово випущеній продукції може мати значення кілька центів.

Прикладом такого EEPROM є DS2431, який зберігає 1 кб.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.