GPIOのパワーオン状態は何ですか?


35

電源が投入されたときのGPIOの状態は何ですか?例:高、低、高インピーダンス?

また、OSはロード時にGPIOの状態を変更しますか?うまくいけない。


データシートに記載されていない限り、確実に測定する必要があります。LinuxはGPIOを「認識」していないため、起動中にGPIOを変更することはありません(起動スクリプトを作成した場合を除きます)が、ROMが発生する可能性は常にあります。
Malvineous

@Malvineous、あなたは間違っています。LinuxはGPIOを認識しており、サポートはカーネルに直接組み込まれています。ここにいくつかのドキュメントがあります: kernel.org/doc/Documentation/gpio.txt
エマリーウィルソン

2
@DustyWilson:わからない場合は申し訳ありませんが、コアLinuxカーネルはブート中にGPIOを使用しません。ユーザースペースと特定のドライバーでのみ利用可能になります。そのため、ストックカーネルは、ブート中にGPIOピンの状態を変更すべきではありません。
悪意のある

@Malvineous:ああ、落とし穴。
エマリーウィルソン

回答:


11

russellstrongのおかげで、ここで答えを見つけました。以下の関連部分を引用します

プルアップ抵抗/プルダウン抵抗に対する回路の感度についての結論に飛びつきました。RPiは、最初の起動時にGPIOを出力に設定していません。740ミリ秒間プルダウン抵抗をオンにします。

2つの18K抵抗(3v3-> GPIO-> GND)を使用して、ピンの状態を正確に確認しました。これがトレースです。青い線は3v3電源、黄色の線はGPIO線です。

ここに画像の説明を入力してください


少し明確にできますか?Raspberry Piが起動すると、GPIOは高インピーダンスの入力状態に設定されますか?
アレックスチェンバレン

1
@ AlexChamberlain、broadcomチップはプルダウンで起動するように見えますが、ローダーはプルダウンをクリアするため、高インピーダンス(入力)になります
ジョンラルーイ

9

RPiに推奨されるDebianディストリビューションの使用を開始すると、GPIOは無効になります。各ピンを個別に有効にする必要があります。

/ sysを使用して実行している場合、「Sysfsのパス」が興味深いことがわかります(http://www.kernel.org/doc/Documentation/gpio.txt内で検索してください)。特に、ピンを「エクスポート」して有効にします。以下のコマンドは、root権限(sudoまたはそれ以外)で実行していること、または変更する仮想ファイルの許可/所有権を変更したことを前提としています。

echo 4 > /sys/class/gpio/export

これにより、GPIOピン#4が有効になり、複数の仮想ファイルを含む/ sys / class / gpio / gpio4が存在します。これらのファイルには、入力または出力ピンであるかどうかを定義する「方向」、入力に対して読み取り専用または出力に対して書き込み可能で、現在の値を含む「値」などが含まれます。

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

もちろん、既存のライブラリを使用して、選択した言語で提供または互換性のあるGPIOを実行することをお勧めします。ただし、シンプルなものが必要な場合は、sysfsと直接インターフェイスして、非常に基本的なGPIOを実行できます。


これは役に立ちます。データシートを見ましたが、ピンのデフォルト状態が見つかりませんでした。これは、ピンで物事を制御していて、OSのロード中に周辺機器の電源を入れたくない場合に重要です。
ジョンラルーイ

3
これは素晴らしい答えですが、それが本当に質問に答えているかどうかはわかりません。GPIOを有効にした直後の状態はどうなっていますか?と方向セット?
アレックスチェンバレン

@gnibbler:テストするだけでいいと思う。少し前に自分で試してみたが、何かがオンまたはオフにフリックすることに関して予期しないことは何もなかった。私の経験が期待されるものであることを知りませんし、約束もしません。テストしたいピンにマルチメーターなどを投げて、Piを何度も再起動または電源を入れ直してテストする必要があります。私が見たのは、各ピンを自分で有効にするまでPiに電源がまったくないかのように、すべてのピンがオフになっていることです。
エマリーウィルソン

@DustyWilson、おそらくそれらは入力として設定され、プルアップもプルダウンもありません。これは、FETに接続すると効果的にフローティングし、プルアップ/ダウン抵抗をゲートに追加しないとランダムな動作を引き起こすことを意味します
ジョンラルーイ

確かに... cat /sys/class/gpio/gpio4/directionは「in」と言います。プルアップ/プルダウンの状態を読み取ることができないことをデータシートで読みました。それらを測定しようとする
ジョンラルーイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.