bashi18
2021年5月24日 18時25分
no_cs オプションを指定しようとするとInvalid argumentになります。
spi = spidev.SpiDev() spi.open(1, 3) # 仮でSS3 spi.no_cs = True # CSは自前で制御
X1 Debian10の環境です。
pythonのspidevを使用してSPI通信を行っております。
ECSPI2でSS0~3までは問題なく通信できていたのですが、
CSが足りなくなったのでSS4にGPIOを割り当ててみたのですが、xfer2をコールすると
Invalid argumentになります。
そこでCSを自前で制御しようと思い、上記を試しております。
解決の方法はないでしょうか?
コメント
bashi18
入江様
回答ありがとうございます。
自己解決いたしました。
原因はbits_per_wordの指定でした。
通信サイズが24bitだったので、bits_per_word=24とし、xfer2([0x12, 0x34, 0x56])としていたのが悪かったようです。
bits_per_word=8とするか、bits_per_word=32でxfer2([0x12, 0x34, 0x56, 0x00])とすることでgpioを割り当てて制御できました。
また、no_cs = True の指定も自己流ですがいちおう実現できました。
http://nahitafu.cocolog-nifty.com/nahitafu/2018/12/zynqspilinux2-4.html
を参考に、ドライバの階層関係が分かりましたのでspi.cとspi-imx.cに少し手を加えることで可能になりました。
お騒がせしました。
at_akihito.irie
2021年5月26日 13時33分
入江です。
一点確認させてください。
> CSが足りなくなったのでSS4にGPIOを割り当ててみたのですが、xfer2をコールすると
> Invalid argumentになります。
CSを追加する際にdtsを修正したと思いますが、修正したdtsを添付していただ
くことは可能でしょうか。
以上、よろしくお願いいたします。