2つ以上のSPIスレーブを追加する


12

私がスキームで見るように、スレーブ用の2つのチャネルがあります-CS0とCS1。MCP3008などの2つのチップしか接続できないということですか?または、これらの2つの接続されたスレーブにより多くのスレーブを接続できますか。

Raspberryスキームには、ウィキペディアから取得したこのSPIスレーブ接続スキームとのサポートまたは共通点がありますか?このようにすることは可能ですか?

SPIスレーブ


「このようにすることは可能ですか?」-> PiにはSS1、SS2、SS3の代わりにCE0とCE1があることを除いて、まさにその通りのようです。SCLK、MOSI、およびMISOバスラインは、両方の場合ですべてのデバイス間で共有されます。
goldilocks

回答:


12

たくさんの方法。

スレーブが選択するビットバンを並べ替えることができます。つまり、すべてのデバイスを共有MISO / MOSI / SCLKとグランド(ただしCSは別個)に接続できます。SPIドライバーを呼び出す前に、目的のデバイスのCSをLowに設定するだけです。SPIドライバーはCSを設定しようとしますが、接続されていないことを知りません。

40ピン拡張ヘッダーのあるPiには、3つのチップセレクトを備えた別のSPIデバイスがあります。私のpigpioライブラリはそのデバイスをサポートしています。

プロトコル全体をソフトウェアビットバンすることができます。

追加のハードウェアを追加して、CS回線を任意のデバイスに切り替えることができます。

追加するように編集されました

「適切な」Raspberry Pi Linux SPIドライバーは現在、レビューを行っており、CSとして任意のgpiosを使用できるようにしています。

2を追加するように編集

現在のLinux SPIドライバー(spi_bcm2853)は、チップの選択時に任意のGPIOをサポートすると言われています。/ boot / overlays / READMEを参照してください。


1
「任意のgpiosを許可する」というのは、それ自体が良いアイデアであり、組み込みシステムに期待できることです。入力いただきありがとうございます。
ガニマ

ジョーン、「pigpio」ライブラリで「3チップセレクトを備えた別のSPIデバイス」を使用する方法を説明するか、コード例にリンクしてください。これは質問に答えるのに役立ちます。ありがとう
アレックス

abyz.co.uk/rpi/pigpio/cif.html#spiOpenを参照してください。GPIO 16-21は補助SPIに接続されます。abyz.co.uk/rpi/pigpio/index.html#Type_3をご覧ください。あるいは、現在のLinux SPIドライバー(spi_bcm2853)は、チップの選択時に任意のGPIOをサポートすると言われています。/ boot / overlays / READMEを参照してください。
ジョアン

「40ピン拡張ヘッダーを備えた

1
@meh 40ピン拡張ヘッダーには5つのチップ選択があります。メインSPI用に2つ、補助SPI用に3つ。補助SPI信号はで小文字で示されているabyz.co.uk/rpi/pigpio/index.html#Type_3
ジョアン・

3

RaspberryPiがSPIバスでチップセレクトを2つしか提供しないのは正しいことです(こちらを参照)。そして、SPIドライバーとソフトウェアソリューションはその事実に依存していると仮定します(@joanの答えは、異なるライブラリがそれを異なる方法で処理し、公式ドライバーは将来、任意のGPIOピンをチップ選択として使用できるようにすることを示唆しています)。

ただし、チップセレクトは、Piの専用デジタル出力にすぎないことに注意してください。したがって、GPIOピンを使用すると、常により多くのチップセレクトを使用できます。ただし、その場合、ソフトウェアは適切なSPIスレーブに対応するために適切なピンを設定する必要があります。

チップセレクトの全体的なアイデアは相互に排他的に1つのスレーブを選択することなので、さらにいくつかの単純なデジタル回路を使用して「無駄な」GPIOピンの量を減らすことができます(他の目的にも必要な場合)。74HC / HCT138のようなものを3対8のラインデコーダ/デマルチプレクサを使用して、3つのGPIOピンで8つのチップセレクトを介して8つのスレーブをアドレス指定できます。

バスラインSCLKとMOSIはすべてのスレーブで共有されていることに注意してください。したがって、複数のスレーブをPiに接続する場合、Piのファンアウトが負荷(スレーブの入力ピンの抵抗と静電容量)を超えないようにしてください。ただし、これは低静電容量とデジタル入力の高抵抗。


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