Versi pengkodean atau konfigurasi pada PCB

10

Saya perlu menyandikan informasi tentang versi atau konfigurasi di papan / elektrik, sehingga firmware dapat mendeteksi tata letak papan yang digunakan.

Opsi apa yang mungkin dan apa pro / kontra mereka?

Henrik Hansen
sumber
1
Ada juga Q ini sejak beberapa waktu lalu, jawabannya mirip dengan yang sudah diberikan (yang bagus!): Electronics.stackexchange.com/questions/41757/…
awjlogan

Jawaban:

14

Dari atas kepala saya, dua solusi mudah terlintas di benak saya.

  1. Memiliki n baris yang melekat pada GPIO mikrokontroler Anda. Ikat ini tinggi atau rendah tergantung pada versi papan Anda. Ini akan memberi Anda opsi konfigurasi papan. Ini akan menggunakan n pin pada mikrokontroler Anda. Undian statis saat ini akan diabaikan.2n
  2. Memiliki input ke ADC mikrokontroler dan menggunakan pembagi tegangan dengan nilai yang berbeda tergantung pada konfigurasi papan. Ini hanya akan menggunakan pin mikrokontroler tunggal. Ini memiliki kekurangan bahwa akan ada arus statis melalui pembagi. Itu juga akan rentan terhadap kesalahan BOM, sedangkan saran pertama adalah sulit ditransfer ke papan tulis.

Kedua saran ini memang memiliki kelemahan di mana pengguna akhir dapat dengan mudah mengubahnya, katakanlah untuk membuka fitur "terkunci". Ini mungkin bukan masalah bagi Anda, tetapi sesuatu yang perlu diingat.

awjlogan
sumber
1
Ada juga kombinasi [1] dan [2]. Anda dapat menggunakan satu pin mikrokontroler untuk ADC, tetapi menggunakan komponen nilai yang sama yang terhubung secara paralel untuk membentuk pembagi tegangan. Jadi misalnya Anda dapat memiliki empat resistor 10k membentuk 10k / float (tarik ke vcc), float / 10k (tarik ke gnd), 10k / 10k (vcc / 2), 5k / 10k (2/3 dari vcc), 10k / 5rb (1/3 vcc). Jadi singkatnya: satu baris di BOM, hanya kuantitas yang berbeda dan satu input ADC diperlukan. Ini juga membantu secara visual.
Socrates
2
Anda dapat menyingkirkan penarikan arus statis dari solusi ADC jika Anda dapat menyisihkan pin kedua: Alih-alih pembagi tegangan antara VCC dan GND, ganti VCC atau GND dengan pin kedua - Anda hanya perlu membaca konfigurasi papan sekali , pada awal program, jadi atur pin tinggi / rendah seperti yang diperlukan untuk mengaktifkan pembagi tegangan, lakukan pengukuran ADC, kemudian beralih pin sehingga kedua ujung pembagi tegangan berada pada potensial yang sama dan tidak ada arus mengalir.
Aleksi Torhamo
1
Versi GPIO juga rentan terhadap kesalahan BOM, karena biasanya ini dikonfigurasikan dengan tautan nol ohm. Anda bisa melakukannya dalam skema dan tata letak, tetapi itu lebih mahal ( biaya waktu tata letak ).
Graham
1
Kembali ke ADC, inilah yang kami gunakan pada produk tempat saya bekerja saat ini. Anda harus berhati-hati dengan toleransi resistor. Jika dua resistor Anda memiliki toleransi 1%, tegangan bisa mencapai 2%, sehingga paling banyak Anda mendapatkan 50 langkah yang bisa Anda selesaikan. Dalam praktiknya lebih aman untuk membagi dua itu. Jadi jika Anda memiliki resistor 1% dan kisaran 5V pada ADC Anda, Anda ingin versi dilaporkan dalam langkah-langkah 0.2V.
Graham
9

Saya telah menggunakan register geser dengan pin yang diikat tinggi dan rendah untuk menyandikan revisi papan sebelum sekarang, jika Anda sudah menggunakan SPI untuk sesuatu di papan Anda itu sepele untuk membacanya.

Jika Anda harus dapat mengubah ID pada saat run time maka menggunakan jumper daripada mengikat input dengan jejak akan menjadi ide yang baik.

Colin
sumber
Saya mencari-cari IC varian nomor seri silikon non-unik, tetapi ini adalah alternatif yang cerdas. Terutama jika Anda menggabungkannya dengan satu kawat IO expander.
Jeroen3
7

Beberapa opsi yang dapat saya pikirkan: -

Tautan Resistor SMD PADS / O OHM. Gunakan sistem biner untuk konfigurasi perangkat keras untuk mengurangi jumlah pin untuk prosesor Anda.

Jumper. Papan akan 2xN konektor pin menambahkan jumper ke pin kanan akan membiarkan Anda memilih konfigurasi Anda. Kesalahan lebih mudah diselesaikan. Ini mungkin sedikit mahal dan menggunakan lebih banyak ruang papan tergantung pada jumper.

Jika Anda memiliki EEPROM di papan tulis, maka dimungkinkan bagi Anda untuk menanamkan konfigurasi ke dalam memori.

Mungkinkah Anda mengubah firmware itu sendiri menggunakan #define atau serupa? Maka Anda tidak perlu ruang papan dan pin ekstra untuk deteksi versi.

R.Joshi
sumber
1

EEPROM satu kawat adalah solusi yang bagus karena mereka hanya memerlukan satu GPIO tetapi dapat menyimpan sejumlah besar informasi konfigurasi. Mereka juga memungkinkan mikrokontroler untuk menulis informasi itu selama tes papan (misalnya data kalibrasi). Banyak yang memiliki pin proteksi atau bit terprogram satu kali untuk mencegah perubahan lebih lanjut.

Keuntungan lain termasuk fitur yang berguna seperti nomor seri yang dijamin unik.

Opsi ini digunakan di banyak sistem, seperti probe osiloskop dan baterai, karena hanya membutuhkan satu baris data. EEPROM bahkan dapat diberdayakan dari jalur data itu sendiri.

Kerugian utama adalah biaya. Biayanya tidak tinggi, tetapi pada produk-produk yang diproduksi secara massal, beberapa sen bisa menjadi masalah.

Contoh dari EEPROM tersebut adalah DS2431, yang menyimpan 1kb.

pengguna
sumber