Rekomendasi untuk pengaturan default untuk pin yang tidak digunakan pada STM32 (ARM Cortex M3) - tarik ke atas / tarik ke bawah?

13

Kami saat ini menggunakan berbagai varian keluarga mikrokontroler STM32. Saya ingin tahu yang berikut:

1) Apa pengaturan default yang disarankan untuk pin mikrokontroler secara umum jika Anda memiliki opsi untuk memilih pull up atau pull down? Apa pro dan kontra dari pergi dengan satu atau yang lain? (Dengan asumsi Anda akan mengaturnya secara default sebagai input)

2) Khususnya saya ingin tahu apa yang harus dilakukan dengan pin yang tidak digunakan untuk keluarga mikrokontroler STM32. Jelas bagi saya bahwa kita tidak boleh membiarkan pin mengambang, (yang semua itu mengatakan datasheet, :(), tetapi haruskah saya mengaturnya untuk input dengan pull up atau input dengan pull down? Secara khusus, saya ingin untuk memilih pengaturan yang paling rentan terhadap ESD dan juga jika mungkin, mengkonsumsi daya paling sedikit.

3) Untuk pin kritis, haruskah kita mengandalkan firmware untuk mengatur pin dengan benar ke keadaan default yang benar atau haruskah tanggung jawab ini terletak pada perangkat keras eksternal (menghubungkan tarikan ke atas atau ke bawah)? Jika nilai yang dipilih untuk resistor eksternal lebih besar daripada internal pull up atau pull down, pengaturan dalam firmware tidak menjadi masalah.

Pro yang dapat saya lihat untuk melakukan hal di atas, adalah bahwa jika mikro tidak menginisialisasi dengan benar untuk alasan apa pun (perangkat keras yang salah atau sejenisnya), kami tidak mengandalkan firmware untuk mengatur pin dengan benar.

The con saya lihat adalah bahwa biaya lebih banyak untuk melakukan ini adalah perangkat keras.

Cahaya apa pun yang dapat Anda berikan di atas akan sangat dihargai.

Terima kasih..

IntelliChick
sumber
Mengapa tidak menetapkan pin yang tidak digunakan sebagai output? Itu akan menghilangkan masalah pull-up vs pull-down.
Connor Wolf
Yang perlu diperhatikan: "Pada setiap acara reset semua GPIO adalah input mengambang. Ini mencegah kerusakan yang tidak disengaja pada GPIO dalam keadaan darurat." embedded-lab.com/blog/stm32-gpio-ports-insights
cp.engr

Jawaban:

10

Jawaban ini tidak spesifik STM32 tetapi didasarkan pada pengalaman dan banyak diskusi seperti itu selama bertahun-tahun. Orang lain dapat menambahkan ini - ini mencakup poin utama (saya pikir) tetapi mungkin tidak lengkap.

Sungguh menggembirakan melihat seseorang mengajukan pertanyaan-pertanyaan sederhana namun mendasar ini dan menunjukkan kesadaran bagaimana "hal-hal kecil" seperti itu dapat 'berkelompok' dalam kehidupan nyata.

yaitu "Jika mikro tidak diinisialisasi dengan benar ..." benar-benar berbunyi "... ketika mikro tidak menginisialisasi dengan benar ..." :-) - dan sudah jelas bahwa Anda menyadari hal ini.

Begitu:

  • Penggunaan pullup atau pull-down eksternal sangat penting bagi mereka yang benar-benar ingin mendapatkan hasil yang terdefinisi dengan baik. Ini adalah satu-satunya hal yang harus dilakukan di sini. Semua sisanya adalah bonus. yaitu Pengaturan untuk input dengan pullxxx internal adalah kompromi yang hampir selalu akan bekerja.
    TETAPI jika "hampir selalu" tidak cukup baik untuk desain Anda, maka Anda memerlukan xxx pull eksternal.

  • Pullup atau down sepertinya tidak memiliki hasil yang lebih baik. Ini dapat bervariasi antara IC tetapi dapat ditentukan dari lembar data. Semua hal dianggap sama (seperti yang mungkin terjadi) Saya lebih suka pull-down karena ada potensi kebocoran yang lebih rendah untuk arus perangkat eksternal - tetapi ini mungkin minimal dalam PCB yang dilapisi dan / atau lingkungan yang jinak.

  • Anda mungkin ingin melihat aksi startup jika Anda benar-benar peduli. misalnya pin yang ditarik akan mulai rendah dan transit tinggi pada beberapa tahap. Pin yang ditarik ke bawah mungkin akan tetap rendah sepanjang. Ini mungkin tidak penting tetapi disebutkan untuk kelengkapan.

  • Kerentanan ESD akan spesifik untuk perangkat, kemungkinan besar simetris, dan rata-rata pada banyak prosesor mungkin lebih disukai karena driver cenderung tenggelam lebih baik daripada sumber jika asimetris. Jika Anda sangat peduli tentang ESD maka Anda mungkin ingin menggunakan output rendah dengan pull down - karena jalur impedansi rendah akan (mungkin) menawarkan perlindungan ESD yang lebih baik. Tetapi jika Anda sangat peduli tentang ESD Anda akan ingin merancang untuk itu dengan cara lain dan tidak mengandalkan perlindungan IC sebagai perlindungan utama Anda.

  • Pertanyaan 3 - pullxxxs eksternal diinginkan tetapi tampaknya aman untuk menggunakan nilai-nilai yang berada pada batas atas desain yang tepat dan kemudian menggunakan internal xxx secara paralel jika diinginkan. Namun, karena internal pull xxxs sering memiliki 2: 1 Reffective, Anda bisa mendapatkan R terbesar dan arus terkecil dengan hanya menggunakan eksternal. Yang tentu saja ingin Anda hindari adalah pull up eksternal dan pull down internal atau sebaliknya - tetapi itu tidak akan menjadi masalah.

  • Ketika saya mengatakan "... membatasi high end dari desain yang tepat ..." Maksud saya hanya itu dan bukan "melewati batas ...". yaitu pin akan memiliki nilai resistansi tertentu yang memungkinkan terpenuhinya kasus terburuk Vin spec. Sebuah resistor yang lebih besar mungkin mengambil lebih sedikit arus dalam resistor tetapi mungkin mulai sangat sedikit menghidupkan sakelar internal. yaitu mungkin ada Rpulldown_current versus tradeoff arus keseluruhan terendah saat driver internal mulai melihat kebocoran arus (yang akan sangat kecil) meningkatkan arus ke dirver dan membisikkannya sedikit.

  • Jika Anda menggunakan misalnya pull-down maka Anda mungkin menemukan itu lebih rendah daya untuk mengatur pin ke output dan mendorongnya rendah, tetapi ini adalah opsi yang dapat diputuskan pada waktunya.

  • Hampir di samping - TIDAK PERNAH mengizinkan dioda perlindungan untuk menangani "arus signifikan" pada tahap apa pun selama operasi. Mengizinkan mereka melakukannya dapat menyebabkan tindakan prosesor yang sama sekali tidak dapat dijelaskan. Semakin sedikit saat ini semakin rendah kemungkinan hal-hal gong salah - dan semakin sulit untuk menemukannya ketika mereka melakukannya.

Russell McMahon
sumber
1
Jawaban yang sangat mendalam. Terima kasih banyak. Bisakah Anda menjelaskan lebih jauh tentang ini - "Jika Anda sangat peduli tentang ESD maka Anda mungkin ingin menggunakan output rendah dengan pull down - karena jalur impedansi rendah (mungkin) akan menawarkan perlindungan ESD yang lebih baik"? Jika mengatur ke output - apakah Anda akan buka drain atau push pull (tinggi / rendah) secara default?
IntelliChick
2

Apa yang Anda optimalkan? Optimalisasi biaya menentukan bahwa Anda mengatur pin yang tidak digunakan ke output. Optimalisasi reliabilitas menentukan bahwa semua level pin ditentukan, bahkan dalam periode singkat sebelum firmware memiliki kesempatan untuk mengatur pin yang tidak digunakan sesuai dengan apa yang dianggapnya sesuai.

Saya pernah harus memeriksa perhitungan keandalan papan prosesor. Itu dirancang dengan baik, dengan topi decoupling di semua tempat dan resistor tarik-ke-apa pun pada semua pin I / O. Insinyur keandalan mengeluarkan buku pegangannya, menambahkan tingkat kegagalan semua komponen yang terlibat, dan berakhir dengan angka yang didominasi oleh tingkat kegagalan komponen pasif. Angka itu lebih tinggi dari persyaratan, jadi kami punya masalah. Hapus resistor itu, dan angkanya akan baik-baik saja. Tetapi pada proposal itu para insinyur listrik mulai berteriak dengan marah (memang demikian, IMO). Saya tidak ingat bagaimana kisah itu berakhir; Saya pikir kami pergi ke klien dan meminta dispensasi untuk menghilangkan tingkat kegagalan resistor dari perhitungan, dengan alasan mereka tidak membawa arus yang signifikan.

Wouter van Ooijen
sumber
1

Saya hanya mengkonfigurasi pin yang tidak digunakan sebagai output dan mengaturnya rendah.

Leon Heller
sumber
Apakah Anda biasanya mengaturnya untuk push-pull atau drain terbuka? Dan dalam kedua kasus apakah Anda akan mengaturnya ke rendah? Bisakah Anda memberi tahu saya mengapa Anda memilih yang satu dari yang lain.
IntelliChick
@Leon Heller - yang memenuhi tes "biasanya bekerja", tetapi gagal "ketika prosesor mikro tidak menginisialisasi dengan benar, atau ketika Murphy membalik agak semi secara acak, seperti yang sesekali dilakukannya. Pin Anda disetel ke output & atur rendah pulldown PLUS , bekerja
Russell McMahon