GPIO'ların durumu nedir?


35

Güç uygulandığında GPIO'ların durumu nedir? örneğin, Yüksek, Düşük, Hi-Z?

Ayrıca herhangi bir işletim sistemi yüklendiğinde GPIO'ların durumunu değiştirir mi? Neyse ki değil.


Veri sayfasında değilse, emin olmak için ölçmeniz gerekir. Linux GPIO'ları "bilmez", bu yüzden açılışta değiştirmez (başlangıç ​​kodunu yazmazsanız), ancak ROM'un her zaman bir şansı olabilir.
Malvineous

@Malvineous, yanılıyorsun. Linux GPIO'ları biliyor ve tam da çekirdeğe destekleniyor. İşte bazı belgeler: kernel.org/doc/Documentation/gpio.txt
Emmaly Wilson

2
@DustyWilson: Üzgünüm belirsiz olsaydı, Linux çekirdeğinin açılış sırasında GPIO'lardan faydalanmadığı anlamına geliyordu. Onları yalnızca kullanıcı alanı ve belirli sürücüler için kullanılabilir hale getirir. Dolayısıyla, stok çekirdeği, önyükleme sırasında GPIO pinlerinin durumunu değiştirmemelidir.
Malvineous

@Malvineous: Ah, anladım.
Emmaly Wilson

Yanıtlar:


11

Cevabı burada russellstrong sayesinde buldum . Aşağıdaki ilgili kısmı alıntı yapıyorum

Yukarı çekme dirençlerim / devremin aşağı çekme dirençlerine duyarlılığım hakkında sonuca vardım. RPI, ilk açılışta GPIO'yu çıkış yapacak şekilde ayarlamıyor. 740 milisaniye boyunca bir aşağı çekme direnci açıyor.

Pinlerle tam olarak neler olup bittiğini görmek için iki 18K direnç kullandım (3v3 -> GPIO -> GND). İşte iz. Mavi çizgi 3v3 güç, sarı çizgi GPIO çizgisidir.

görüntü tanımını buraya girin


Biraz netleşebilir misin? Ahududu Pi açıldığında, GPIO yüksek empedanslı, giriş durumuna ayarlanmış mı?
Alex Chamberlain

1
@AlexChamberlain, Broadcom yongası pulldowns ile başlıyor gibi görünüyor, ancak yükleyici pulldownları temizliyor, bu yüzden yüksek engelsiz olacaklar (girişler)
John La Rooy

9

RPI için önerilen Debian dağıtımını kullanmaya başladığınızda, GPIO devre dışı bırakılır. Her bir pimi ayrı ayrı etkinleştirmeniz gerekir.

Eğer / sys üzerinden yapıyorsanız "Sysfs'deki Yollar" ı ilginç bulacaksınız ( http://www.kernel.org/doc/Documentation/gpio.txt içinde arama yapın ). Özellikle, bir pimi “dışa aktararak” mümkün kılıyor olacaksınız. Aşağıdaki herhangi bir komut, kök ayrıcalıklarıyla (sudo veya başka şekilde) çalıştığınızı veya değiştirilen sanal dosyaların izinlerini / sahipliğini değiştirdiğinizi varsayar.

echo 4 > /sys/class/gpio/export

Bu, daha sonra birkaç sanal dosya içeren / sys / class / gpio / gpio4'ün var olmasına neden olan GPIO pin 4'ü etkinleştirir. Bu dosyalar, bunun bir girdi mi yoksa bir çıkış pimi mi olduğunu tanımlayan "yön" 'ü, girdi için salt okunur olan veya çıktı için yazılabilir olan ve geçerli değeri ve diğerlerini içeren "değer" i içerir.

echo out > /sys/class/gpio/gpio4/direction # set it as an output pin
echo 1 > /sys/class/gpio/gpio4/value # set the value to ON
echo 0 > /sys/class/gpio/gpio4/value # set the value to OFF
echo in > /sys/class/gpio/gpio4/direction # set it as input
cat /sys/class/gpio/gpio4/value # get the value
echo 4 > /sys/class/gpio/unexport # disables pin 4 and removes the gpio4 directory

Elbette, seçtiğiniz dille birlikte verilen veya uyumlu GPIO'yu yapmak için önceden varolan bazı kütüphaneleri kullanmayı tercih edersiniz. Ancak basit bir şey istiyorsanız, çok temel GPIO'yu yapmak için doğrudan sysfs ile arayüz kurabilirsiniz.


Bu yardımcı olur. Veri sayfasına baktım ancak pinlerin varsayılan durumunu bulamadım. Bu, pimleri olan şeyleri kontrol ediyorsanız ve işletim sistemi yüklenirken çevre birimlerinin açılmasını istemiyorsanız önemlidir.
John La Rooy

3
Bu harika bir cevap ama soruyu gerçekten cevapladığından emin değilim. GPIO'nun etkinleştirilmesinden hemen sonraki durumu nedir? ve yön seti?
Alex Chamberlain

@gnibbler: Sadece test etmeniz gerekeceğine inanıyorum. Biraz önce kendim denedim ve bir şeyde veya üstünde sallanan bir şeyle ilgili beklenmeyen bir şey görmedim. Deneyimimin beklenen olduğunu bilmiyorum veya söz vermiyorum. Sadece bir multimetre ya da test etmek istediğiniz pinler gibi atmanız ve Pi'yi test etmek için birçok kez yeniden başlatmanız veya kapatmanız gerektiğini söyleyebilirim. Gördüğüm şey, her bir iğneyi kendim etkinleştirene kadar Pi'nin gücü olmadığından sanki tüm iğnelerin kapalı olduğu idi.
Emmaly Wilson

@DustyWilson, belki daha sonra çekme veya çekme olmadan giriş olarak ayarlanmışlardır. Bu, bir FET'e bağlandıklarında etkin bir şekilde yüzdükleri ve kapıya bir yukarı / aşağı direnci eklenmemesi durumunda rastgele davranışa neden olacakları anlamına gelir
John La Rooy

gerçekten ... cat /sys/class/gpio/gpio4/direction"in" diyor. Veri sayfasında, açılanların / açılanların durumunu okumak mümkün olmadığını okudum. Onları ölçmeye çalışacağım
John La Rooy
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.