SPI 経由で MCP3008 ACD に接続するために WiringPi ライブラリ (c++) を使用していますが、24 のアナログ入力を読み取る必要があるため、3 つの異なる MCP3008 に接続できる必要があります。WiringPi ライブラリで 3 つの異なるスレーブを管理する方法がわかりません。
回答: (私は自分の質問に答えるのに十分な評判を持っていないので、誰かに役立つ可能性がある場合に備えてここに残します)
mcp3004 ライブラリを使用すると、SPI インターフェイスを使用して AD コンバーターと通信できます。
MISO、MOSI、SCLK、および CE0 を対応するスレーブのピンに接続するだけです。主な問題は、3 つの異なるスレーブを使用する必要があったことですが、解決策は簡単です。すべてのスレーブは同じ MOSI、MISO、SCLK を持つ必要があるため、これらのピンをすべてラズベリーの MOSI、MISO、および SCLK ピンに接続する必要があります。
ここで、CE0 ラズベリー ピンを使用するスレーブに接続する必要があり、他のスレーブの CS ピンは HIGH にプルする必要があります (これはアクティブ ローであり、それらを非アクティブにしたいため)。これを行う方法として、OR-GATES (2 入力) を使用する方法があるため、スレーブごとに 1 つのゲートを使用します。入力の 1 つは CE0 ラズベリー ピン (他のスレーブでも同じ) で、もう 1 つの入力は GPIO ピン (スレーブごとに 1 つ異なる) で、OR-GATE 出力はスレーブ選択ピン (同じ) に接続されます。他のスレーブの場合)。
スレーブ 1 を使用する場合は、ピン 1 を LOW でプルし、digitalWrite(Pin1,LOW);
他のピンを HIGHでプルする必要がありdigitalWrite(Pin2,HIGH); digitalWrite(PINn,HIGH)
ます。これを行うと、最初のスレーブ CS ピンの値が CE0 になり、他のピンの値が HIGH になります (最初のスレーブが選択され、他のピンは選択されません)。
SPIは特定のタイミングでCSピンをプルアップおよびプルダウンするため、選択したいものを単純にLOWにプルし、もう一方をHIGHにプルすることはできません
@ Ptaq666、@ Jespe Juhl、および質問を読んで助けてくれた他の人に感謝します。