web-dev-qa-db-ja.com

デスクトップコンピューターのマザーボードにはGPIOがありますか?もしそうなら、それらをどのように読み書きするか

デスクトップコンピューターのマザーボードにマイクロコントローラーのGPIOピンなどのピンを2、3回見ました。もしそうなら、それらから読み書きすることは可能ですか?

22

通常のPCには、「汎用を目的としたピン」という意味でのGPIOはありません。 PCマザーボード上のコネクタ(内部ヘッダーまたは外部ポートに関係なく)はすべて、特定の機能向けに設計されています。しかし、それらのいくつかはあなた自身の目的のために転用することができます。

PCが持つGPIOに最も近いものは、おそらく、多数のデータラインとハンドシェイクラインを持つパラレルプリンターポートです。これらのラインは、GPIOピンのようなものですが、方向に関しては柔軟性が低くなります。 http://retired.beyondlogic.org/spp/parallel.htm

シリアルポートのハンドシェイクラインも、奇妙な電圧レベルを持っていますが、一般的なIOとして使用できます。

パラレルポートとシリアルポートは以前ほど一般的ではありませんが、買い物をしてみると、それらを備えたマザーボードを見つけるのは簡単です。

ケースのLED、ボタンなどを対象とした入力と出力を再利用することもできますが、詳細は特定のシステムに固有のものになると思います。

PCは、SMBUSと呼ばれるI2Cベースのバスを使用して、さまざまな管理機能を実行します。これまでに、I2Cデバイスをこのバスにはんだ付けすることで自分のI2Cデバイスを配置したという報告を見たことがあると思いますが、現時点ではリンクを見つけることができません。

モニターの識別に使用されるビデオポートには別のI2Cバスがあります。ソフトウェアにアクセスできるかどうかは、使用しているOSおよびビデオハードウェアによって異なります http://www.instructables.com/id/Worlds-Cheapest-I2C-I-Squared-C-Adapter/step5/ソフトウェアとプロジェクト/

そしてもちろん、USBもあります。これに接続するために使用できるUSBインターフェースを備えた安価なマイクロコントローラーがあります。

15
plugwash

これは古いトピックであることはわかっていますが、とにかく...

BIOSコードをプログラムしたら、すべてのマザーボードにGPIOがあり、それらはユーザーアドレス空間で完全に利用でき、ポートアドレスは通常、パラレルポートに非常に近いと言えます。標準のパラレルポートドライバーを使用してカスタムマザーボード用のカスタムドライバーを作成しました。アドレス番号を変更するだけで済みましたが、その番号を事前に知っていました。

使えますか?まあそれはBIOSをプログラムした人に依存します。すべてのGPIOの状態はプリコンパイルに設定する必要があります。未使用のGPIOはすべて無効に設定できます。

GPIOが未使用で未設定の場合、デフォルトの状態はどうなりますか?おそらく浮動しているだけです(ほとんどはトライステートなので幸運です)。

GPIOにはプルアップ/プルダウンがありますか? EEが追加したかどうかは誰にもわかりません。

未使用のGPIOの痕跡はありますか?疑わしいですが、何でも可能です。

つまり、未使用のGPIOが使用できるように設定されていることを幸運にする必要があります。 arduinoとよく似ていますが(実際のデフォルトはありません)、「INPUT/OUTPUT/TRI」と考えてください。マザーボードに、はんだ付けするピンまたはパッドがあると便利なトレースが必要です。次に、GPIOのアドレスの場所がわかっている場合は、標準のユーザー空間ドライバーを簡単に使用できます。

2
Ian Ide

マザーボードにGPIOが搭載されているかどうかは、モデルやメーカーによって異なります。一部の人はそうかもしれませんし、そうでない人もいます。

例えば。私のAsusデスクトップボードには、ファン制御と温度読み出し用のNuvoton NCT6775が含まれています。これは(ベンダーのカスタム)BIOSおよびWindowsデスクトップユーティリティからアクセスできます。ファン制御を機能させるには、Asusのソフトウェアを実行する必要があります。つまり、PWMファン制御はソフトウェアによって行われます。 Linuxインストールでは、これを手動で設定する必要があります kernel module およびpwmconfig。

Nuvoton NCT677xF データシートを見ると、PWMを制御し、温度と電圧を読み取り、SMBusを介してGPIOを読み取るための一般的なハードウェアが見つかります。両方を装備すれば、きちんと機能させることができます。理論的には、このチップセットをGPIO機能に使用できます。

しかし、私はそれに触れません。マザーボードの非常に特殊なモデルに飛び込んでリバースエンジニアリング(レイアウト、ピン割り当てなど)したくない場合を除いて、接続されているハードウェアがわかりません。コネクタにも折れません。

最も重要なのは、アプリケーションが数年間持続する必要がある場合、マザーボードモデルも同様に必要です。そうでない場合は、非常に特定のマザーボードハードウェアに接続することはお勧めできません。

2
Hans

PCには一般にi2cインターフェイスがあり、TI TCA9535DBRのようなi2cのIOエキスパンダーチップを見つけることができます。

したがって、速度要件に応じて間接的にこれを行うことができます。 PCを使用している場合、正確なタイミング要件はとにかくトリッキーです。

0
Hans