1

Raspberry Pi で SPI インターフェイスを使用しています。

次のコードを使用して、SPI0 に接続されているチップのレジスタ (最初の 20 個のレジスタ) を読み取ることができます。

spi=spidev.SpiDev()
spi.open(0,0)

x=spi.readbytes(20)

k=0
for i in x:
        print(k,hex(i),i)
        k=k+1

私の質問は、「spi.xfer」を使用して特定のレジスタの値を設定するにはどうすればよいですか? xfer(...) 関数が取るパラメーターがわかりません。

「spi.xfer」を使用して特定のレジスタから値を読み取るにはどうすればよいですか?

私は元の C コードを持っていますが。xfer(...) の使用方法をまだ解読できません。

Cコードは次のとおりです。

https://github.com/doceme/py-spidev/blob/master/spidev_module.c

4

1 に答える 1

1

このコード行が重要だと思います。

PyArg_ParseTuple(args, "O|IHB:xfer", &list, &speed_hz,
                 &delay_usecs, &bits_per_word)

ドキュメントによると、フォーマット文字列の意味は次のとおりです。

  • O-Pythonオブジェクト
  • |-以下がオプションであることを示します
  • I-int
  • H-ashort
  • B-achar
  • :-関数名文字列の開始(xfer

これらのうち、listは送信するデータであると想定するのが賢明であるように思われ、実際、送信するバイトのリストとして解釈されるようです。

SPIは並行して送受信する傾向があるため、コードをさらに読み取ると、の各値はlist、その特定のバイトが送信されたときに受信されたバイトに置き換えられると思います。奇妙ですが、それはあなたにとってのSPIです。

于 2012-11-16T12:50:05.667 に答える