STM32'deki (ARM Cortex M3) kullanılmayan pimler için varsayılan ayarlar için öneri - yukarı / aşağı çekilsin mi?


15

Şu anda STM32 mikrodenetleyici ailesinin çeşitli varyantlarını kullanıyoruz. Aşağıdakileri bilmek istiyorum:

  1. Hem pull up hem de pull down seçeneğine sahipseniz, genel olarak mikrodenetleyicilerin pinleri için önerilen varsayılan ayarlar nelerdir? Biriyle ya da diğeriyle gitmenin artıları ve eksileri nelerdir? (Bunları varsayılan olarak giriş olarak ayarlayacağınızı varsayarsak)

  2. Özellikle STM32 mikrodenetleyici ailesi için kullanılmayan pimlerle ne yapacağımı bilmek istiyorum. Bana açıktır ki pimleri yüzer halde bırakmamalıyız, (bu da veri sayfasının söylediği her şeydir :((), ama onları pull up veya pull down ile girdi olarak mı ayarlamalıyım? ESD'ye en az duyarlı bir ayar seçmek ve mümkünse en az miktarda güç tüketmek.

  3. Kritik pimler için, pimleri doğru varsayılan duruma ayarlamak için bellenime güvenmeli miyiz, yoksa bu sorumluluk harici donanıma mı (harici pull-up veya pull-down bağlama) bağlı mı? Harici dirençler için seçilen değerler dahili yukarı çekme veya aşağı çekme değerlerinden daha büyükse, bellenimdeki ayar önemli değildir.

Yukarıdakileri yapmak için görebildiğim pro, mikro herhangi bir nedenle (hatalı donanım veya beğeniler) düzgün bir şekilde başlamazsa, pimi doğru bir şekilde ayarlamak için bellenime güvenmememizdir.

Gördüğüm con, bu donanım yapmak için daha pahalıya mal olmasıdır.

Yukarıdakilere dökebileceğiniz herhangi bir ışık gerçekten takdir edilecektir.

Teşekkürler..


Neden kullanılmayan pinleri çıkış olarak ayarlamıyorsunuz? Bu, pull-up ve pull-down sorununu ortadan kaldıracaktır.
Connor Wolf

Not: "Herhangi bir sıfırlama olayı üzerine tüm GPIO'lar değişken girişlerdir. Bu, acil durumlarda GPIO'lara kazara zarar gelmesini önler." embedded-lab.com/blog/stm32-gpio-ports-insights
cp.engr

Yanıtlar:


11

Bu cevap STM32'ye özgü değildir, ancak uzun yıllar boyunca deneyime ve bu tür tartışmalara dayanmaktadır. Diğerleri buna ekleyebilir - ana noktaları kapsar (sanırım) ama tam olmayabilir.

Birinin bu basit ama temel soruları sorduğunu ve böyle "küçük şeylerin" gerçek hayatta nasıl "çete çağırabileceğini" bildiğini görmek cesaret verici.

yani "Mikro düzgün bir şekilde başlamazsa ..." gerçekten okursa ... ... mikro düzgün bir şekilde başlamazsa ... ":-) - ve bunu fark ettiğiniz açıktır.

Yani:

  • İyi bir sonuç almak için gerçekten istekli olanlar için harici çekme veya açma kullanımı şarttır. Bu, burada yapılması gereken en büyük tek şey. Geri kalan her şey bir bonus. Yani dahili pullxxx ile girişlerin ayarlanması neredeyse her zaman işe yarayacak bir uzlaşmadır.
    AMA "hemen hemen her zaman" tasarımınız için yeterince iyi değilse, o zaman harici çekme xxxs gerekir.

  • Yukarı veya aşağı çekmenin çok daha iyi bir sonucu olmadığı görülüyor. IC'ler arasında değişebilir, ancak veri sayfasından belirlenebilir. Her şeyin eşit olması (olabileceği gibi), cihazın harici devresine daha düşük kaçak akım potansiyeli olduğu için aşağı çekmeyi tercih ederim - ancak bu, uygun bir şekilde kaplanmış bir PCB ve / veya iyi huylu bir ortamda minimum düzeyde olabilir.

  • Gerçekten önemsiyorsanız başlangıç ​​eylemine bakmak isteyebilirsiniz. örneğin, yukarı çekilen bir pim bir aşamada düşük başlayacak ve yüksek bir şekilde geçecektir. Aşağı çekilen bir pim muhtemelen boyunca düşük kalacaktır. Bu muhtemelen önemli değildir, ancak bütünlükten bahsedilmektedir.

  • ESD duyarlılığı cihaza özgü, büyük olasılıkla simetrik ve ortalama olarak birçok işlemcide sürücüler muhtemelen asimetrik ise kaynaktan daha iyi batma eğiliminde olduğundan aşağı çekilmeyi tercih edecektir. ESD'ye çok önem veriyorsanız, düşük empedanslı bir yol (muhtemelen) daha iyi ESD koruması sunacağı için, çekme çıkışlı düşük çıkışlar kullanmak isteyebilirsiniz. Ancak ESD'yi çok önemsiyorsanız, bunun için başka şekillerde tasarım yapmak isteyecek ve ana korumanız olarak IC korumasına güvenmeyeceksiniz.

  • 3. soru - harici pullxxxs istenir, ancak uygun tasarımın sınırlayıcı yüksek ucunda olan değerleri kullanmak ve sonra istenirse paralel olarak dahili xxx'leri kullanmak güvenli görünmektedir. Ancak, dahili çekme xxxs genellikle 2: 1 Reffective'e sahip olduğundan, yalnızca harici kullanarak en büyük R ve en küçük akımı alabilirsiniz. Tabii ki kaçınmak istediğiniz şey, harici pull up'lar ve internal pull downs veya mengene bersa - ama bu bir sorun olmayacak.

  • "... uygun tasarımın üst ucunu sınırlamak" dediğimde, "Sadece sınırlamayı aşmak değil" demek istiyorum. yani pim, en kötü Vin spesifikasyonunun karşılanmasını sağlayan belirli bir direnç değerine sahip olacaktır. Daha büyük bir direnç, dirençte daha az akım alabilir, ancak dahili anahtarı çok az açmaya başlayabilir. yani dahili sürücü, kaçak akımın (son derece küçük olacaktır) dirvere giden akımı arttırdığını ve çok az fısıldadığını görmeye başladığında, Rpulldown_current'e karşı en düşük genel akım dengesine sahip olabilir.

  • Örneğin açılır menüyü kullanırsanız, pimi çıkışa ve düşük seviyeye çıkarmak için daha düşük güç bulabilirsiniz, ancak bu, zamanında karar verilebilecek bir seçenektir.

  • Neredeyse bir kenara - ASLA koruma diyotlarının çalışma sırasında herhangi bir aşamada "önemli akımları" işlemesine izin vermeyin. Bunu yapmalarına izin vermek tamamen açıklanamayan işlemci eylemine yol açabilir. Akım ne kadar azsa, gong'un yanlış yapma şansı o kadar düşük olur ve bunu yaparken bulmak daha zordur.


1
Çok anlayışlı bir cevap. Çok teşekkür ederim. Bu konuda biraz daha ayrıntı verebilir misiniz - "ESD hakkında çok önem veriyorsanız, düşük empedanslı bir yol (muhtemelen) daha iyi ESD koruması sunacağı için, aşağı çekmeli düşük çıkışlar kullanmak isteyebilirsiniz"? Bir çıkışa ayarlıyorsanız - varsayılan olarak açık tahliye veya itmeli (yüksek / düşük) gider misiniz?
IntelliChick

@IntelliChick Bir çıkış olduğunu belirlemenin tüm noktası, düşük empedansta bilinen bir duruma sürmektir, bu da sadece yüksek empedans olduğu için özellikle açık bir drenaja, özellikle bir HI çıkışlı açık drenaja ayarlayamayacağınız anlamına gelir.
DKNguyen

@DKNguyen 8+ yıl ... :-). Intellichick bu 8 yıldan fazla bir süredir görülmedi - AMA yine de yorumunuzu eklemeye değer.
Russell McMahon

@RussellMcMahon Geleneksel zaman algısı olan hapishaneden kurtulun.
DKNguyen

@DKNguyen Uzun zaman önce fotonlarla arkadaş oldum. Şimdi sonsuzda yaşıyoruz. Yine de yaptıklarını başarmayı başaramıyorum. TÜM fotonlar zamansız, "aralıksız" bir birliktelik içinde yaşarlar. Sol'u terk eden bir foton ve alfa centauri proksima bırakan bir foton her zaman bir aradadır, asla ilk veya son veya aradaki zamanın anlamını bilmezler. Onlara nasıl ulaşacaklarını sorduğumda sadece gülümsüyorlar. || Düzenli bir damlama, yayınlandıktan yıllar sonra yayınlarıma yorum yapar. Hatta düzenleyin. Sizin de, şüphesiz.
Russell McMahon

2

Ne için optimizasyon yapıyorsunuz? Maliyet optimizasyonu, çıkışlara kullanılmayan iğneler ayarlamanız gerektiğini belirtir. Güvenilirlik optimizasyonu, yazılımın kullanılmayan pinleri uygun gördüğü şeye ayarlama şansına sahip olmasından kısa bir süre önce bile tüm pin seviyelerinin tanımlandığını belirtir.

Bir keresinde bir işlemci kartının güvenilirlik hesaplamalarını kontrol etmek zorunda kaldım. Her yerde ayırma kapakları ve tüm G / Ç pimlerindeki her türlü direnç ile iyi tasarlanmıştı. Güvenilirlik mühendisi el kitabını çıkardı, ilgili tüm bileşenlerin başarısızlık oranlarını ekledi ve pasif bileşenlerin başarısızlık oranlarının egemen olduğu bir rakamla sonuçlandı. Bu rakam gereksinimden daha yüksekti, bu yüzden bir sorunumuz vardı. Bu dirençleri çıkarın ve şekil iyi olacaktır. Ancak bu teklifte elektrik mühendisleri öfkeyle bağırmaya başladı (haklı olarak IMO). Hikayenin nasıl bittiğini hatırlamıyorum; Sanırım müşteriye gittik ve önemli bir akım taşımadığı gerekçesiyle dirençlerin arıza oranlarını hesaplamadan atmaktan vazgeçtik.


1

Kullanılmayan pinleri çıkış olarak yapılandırıyorum ve düşük ayarlıyorum.


normalde onları itmeli veya açık gidere ayarlar mısınız? Ve her iki durumda da onları düşük olarak ayarlar mısınız? Neden birini diğerinden seçeceğinizi söyleyebilir misiniz?
IntelliChick

@Leon Heller - mikroişlemci düzgün bir şekilde başlatılmadığında veya Murphy ara sıra yaptığı gibi rastgele rastgele yarı yarıya döndüğünde "genellikle çalışır" testini karşılar, ancak başarısız olur. , çalışır.
Russell McMahon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.