追加のGPIOをデジタルI / Oとして使用していますか?


11

うまくいけば、この質問はかなり単純ですが、私のグーグル検索で答えが見つかりませんでした。

RPiには、使用できるいくつかのGPIOと特殊なGPIO(SPI、I2C、UARTなど)があることを知っています。私のプロジェクトでは、実際には通常のGPIOが不足しており、SPI、I2C、およびその他のGPIOを「通常の」GPIOとしても使用したいと考えています。これができることは知っていますが、SPI / I2C / etcモードで実行されず、通常のGPIOとして実行されるように設定する方法がわからないと思います。

これを正しく設定するために何かする必要がありますか?

回答:


10

短い答え

いいえ、あなたは(ほとんど)しません。これは実際には逆です。GPIOではなく、特別な目的のために設定する必要があります。唯一の例外はUARTピンです。また、I²Cピンはどういうわけか特別です。

UARTピン

UARTピンは、コンソールのカーネルによって使用されます。それらを使用できるようにしたい場合は、それらを使用しないようにシステムを構成する必要があります。

  • 編集/boot/cmdline.txtや削除console=ttyAMA0,115200kgdboc=ttyAMA0,115200パラメータ
  • 次の行を編集/etc/inittabしてコメント化します(#その前に文字を置きます)。

    T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
    
  • RaspberryPiを再起動します

これで、ピンはシステムで使用されなくなり、使用できます

I²Cピン

I²Cピンには、オンボードの1.8kプルアップ抵抗が取り付けられています。無効にすることはできません。これにより、いくつかの状況でこれらのピンの使用が制限されます(他の状況では便利な場合があります)。

追加のソリューション

GPIOピンが不足している場合は、追加の(ただし単純な)ハードウェアを使用して、その数を簡単に拡張できることがあります。たとえば、出力には、shift registersまたはI²C I/O expanders(I²Cバスエキスパンダーとも呼ばれます)を簡単に購入して使用できます。使用例はここにあります

PFC8574(またはこのファミリと同様)は非常に人気があり、すべての通信を処理するすぐに使用できるカーネルモジュールがあります(公式のRaspberryPiカーネルでは有効になっていません使用するには、独自のカーネルをコンパイルする必要があります)。このモジュールはと呼ばれgpio_pcf857xmodprobe(I²Cドライバーと共に)ロードし、チップをI²Cバスに接続している場合、次のようにアクティブ化できます。

echo pcf8574 0x27 > /sys/class/i2c-adapter/i2c-0/new_device

どこpcf8574あなたの実際のチップ名がある(このモジュールは、いくつかの異なるチップのように扱うことができるpca967xとするmax732x)と、0x27そのアドレスが上にあるI²C(それを配線するときに、チップのアドレスを設定することができます)。

これは、内のエントリが作成されます/sys/class/gpio/、あなたが使用している提供し、RaspberryPi内の他のGPIOポートとしてそれらを同じように使用できるようになりますディレクトリsys(例えばインタフェースwiringPiSetupSys()wiringPi中を)。残念ながら、PythonのRPi.GPIOモジュールはこのモードをサポートしていないため、このライブラリでこのピンを使用することはできません。ピンには、248-255などの高い数値があります。

注: PCF8574あるsinking current-それは20ミリアンペア限り(ロー状態で受け入れる)ドライブシンクを与えることができますが、それは高い状態にある唯一のソース0.1ミリアンペアすることができます。つまり、通常は逆のロジックで使用し+3.3V -> LED -> RESISTOR -> PCF8574_PINます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.