4

私は SPI が初めてです。Linux カーネルは、SPI バスとデバイスを宣言し、標準の Linux ドライバー モデルに従ってそれらを管理するための API を提供します。

struct spi_master の説明は、https ://www.kernel.org/doc/htmldocs/device-drivers/API-struct-spi-master.html にあります。

上記のリンクの説明には、「チップが選択されていない限り、これらの共有信号は無視されるため、各デバイスは異なるクロックレートを使用するように構成されている可能性があります」と書かれています。この文をコンテストに入れるために、「デバイス」とは SPI スレーブ デバイスを意味し、「これらの共有信号」とは MOSI、MISO、および SCK 信号を意味すると言わざるを得ません。

実際、構造体 spi_device ( https://www.kernel.org/doc/htmldocs/device-drivers/API-struct-spi-device.html ) には、構造体 spi_master には存在しない max_speed_hz という名前の属性があります。 . したがって、上記のステートメントの最初の部分で理解できます。「各デバイスは、異なるクロック レートを使用するように構成されている可能性があります」。

しかし、第二部はどういう意味ですか?「チップが選択されていない限り、これらの共有信号は無視されるため」とは、異なるレートでスレーブを有効/無効にすることで、異なるクロックレートを使用できるが、一度に1つしか使用できないことを意味しますか?

ご協力ありがとうございました!よろしく、

-- マッテオ

4

2 に答える 2

1

@Matteo M .: 実際には、SS1、SS2、および SS3 を同時にゼロに設定して、3 つの SPI スレーブすべてを同時に有効にすることは許可されていないと思います。その理由は、SPI スレーブが MOSI ラインでデータを受信して​​いる間、同時に MISO ラインでデータを送り返すためです。実際に3 つのスレーブすべてが (共有) MOSI ラインにデータを送信すると、データと電気の流れの両方に関して、非常に悪いことが起こる可能性があります。

于 2013-10-18T09:50:34.197 に答える