Wersja lub konfiguracja kodowana na płytce drukowanej

10

Muszę zakodować informacje o wersji lub konfiguracji na płycie / elektrycznie, aby oprogramowanie układowe mogło wykryć, który układ płytki jest używany.

Jakie opcje są możliwe i jakie są ich zalety / wady?

Henrik Hansen
źródło
1
Od jakiegoś czasu jest też to pytanie, odpowiedzi są podobne do tych, które już podano (co jest dobre!): Electronics.stackexchange.com/questions/41757/…
awjlogan

Odpowiedzi:

14

Z głowy przychodzą mi na myśl dwa proste rozwiązania.

  1. Miej n linii dołączonych do GPIO twojego mikrokontrolera. Zawiąż te wysokie lub niskie w zależności od wersji planszy. To dałoby ci opcje konfiguracji płyty . Użyłoby to n pinów na twoim mikrokontrolerze. Pobór prądu statycznego byłby znikomy.2n
  2. Wejdź do ADC mikrokontrolera i użyj dzielnika napięcia o różnych wartościach w zależności od konfiguracji płytki. Użyłoby to tylko jednego pinu mikrokontrolera. Ma to tę wadę, że przez dzielnik będzie pobierany prąd statyczny. Byłby również podatny na błędy BOM, podczas gdy pierwsza sugestia jest na stałe podłączona do płyty.

Obie te sugestie mają tę wadę, że użytkownik końcowy może je łatwo zmienić, powiedzmy, aby otworzyć „zablokowane” funkcje. Może to nie dotyczyć ciebie, ale o czymś pamiętać.

awjlogan
źródło
1
Istnieje również kombinacja [1] i [2]. Możesz użyć jednego styku mikrokontrolera dla ADC, ale użyć tej samej składowej wartości połączonej równolegle, aby utworzyć dzielnik napięcia. Na przykład możesz mieć cztery rezystory 10k tworzące 10k / float (pull to vcc), float / 10k (pull to gnd), 10k / 10k (vcc / 2), 5k / 10k (2/3 vcc), 10k / 5k (1/3 vcc). Krótko mówiąc: jedna linia na BOM, wymagana jest tylko inna ilość i jedno wejście ADC. Pomaga również wizualnie.
Sokrates
2
Możesz pozbyć się prądu statycznego pobranego przez rozwiązanie ADC, jeśli możesz oszczędzić drugi pin: Zamiast dzielnika napięcia między VCC i GND, zamień VCC lub GND na drugi pin - wystarczy raz przeczytać konfigurację płytki , na początku programu, więc ustaw pin wysoki / niski zgodnie z wymaganiami, aby włączyć dzielnik napięcia, wykonaj pomiar ADC, a następnie przełącz pin, aby oba końce dzielnika napięcia miały ten sam potencjał i nie płynął prąd.
Aleksi Torhamo
1
Wersja GPIO jest również podatna na błędy BOM, ponieważ zazwyczaj jest to skonfigurowane z zerowymi łączami omowymi. Można to zrobić w schemacie i układzie, ale jest to droższe ( koszty czasu układu ).
Graham
1
Co do ADC, tego właśnie używaliśmy w produktach, w których obecnie pracuję. Trzeba jednak uważać na tolerancje rezystorów. Jeśli twoje dwa oporniki mają tolerancję 1%, napięcie może wynosić do 2%, więc możesz uzyskać maksymalnie 50 kroków, które możesz rozwiązać. W praktyce bezpieczniej jest zmniejszyć o połowę. Więc jeśli masz 1% rezystorów i zakres 5 V w ADC, chcesz, aby wersje były zgłaszane w krokach co 0,2 V.
Graham
9

Do kodowania wersji płyty użyłem wcześniej rejestru przesuwnego z pinami powiązanymi górą i dolną częścią, jeśli już używasz SPI do czegoś na swojej płycie, to jest trywialne.

Jeśli musisz mieć możliwość zmiany ID w czasie wykonywania, dobrym pomysłem byłoby użycie zworek zamiast wiązania danych wejściowych ze śladami.

Colin
źródło
Poszukiwałem niejednoznacznych krzemowych wariantów numeru seryjnego, ale jest to sprytna alternatywa. Zwłaszcza jeśli połączysz go z pojedynczym ekspanderem IO.
Jeroen3
7

Niektóre opcje, o których mogę myśleć: -

Łączniki rezystorów SMM PADS / O OHM. Użyj systemu binarnego do konfiguracji sprzętu, aby zmniejszyć liczbę pinów w procesorze.

Zworki. Płytka podłączałaby piny złącza 2xN, dodając zworkę do prawego pinu, umożliwiłaby wybór konfiguracji. Błąd łatwiej rozwiązać. To może być trochę kosztowne i zajmuje więcej miejsca na desce, w zależności od skoczka.

Jeśli masz na płycie EEPROM, może być możliwe osadzenie konfiguracji w pamięci.

Czy możliwa jest zmiana samego oprogramowania układowego za pomocą #define lub podobnego? Wtedy nie potrzebujesz miejsca na planszy i dodatkowych pinów do wykrywania wersji.

R.Joshi
źródło
1

EEPROMy jednoprzewodowe są dobrym rozwiązaniem, ponieważ wymagają tylko jednego GPIO, ale mogą przechowywać dużą ilość informacji konfiguracyjnych. Pozwalają również mikrokontrolerowi zapisywać te informacje podczas testu płytki (np. Dane kalibracyjne). Wiele z nich ma pin zabezpieczający przed zapisem lub jednorazowo programowalny bit, aby zapobiec dalszym zmianom.

Inne zalety obejmują przydatne funkcje, takie jak gwarantowane unikalne numery seryjne.

Ta opcja jest używana w wielu systemach, takich jak sondy oscyloskopowe i baterie, ponieważ wymaga tylko jednej linii danych. EEPROM może być nawet zasilany z samej linii danych.

Główną wadą jest koszt. Koszt nie jest wysoki, ale w przypadku masowo produkowanych produktów kilka centów może mieć znaczenie.

Przykładem takiej pamięci EEPROM jest DS2431, który przechowuje 1kb.

użytkownik
źródło