概要
pigpioを使ってSPIでモータを制御するときは、必ず最初にCS用のPINをHIGH(又はLOW)にすべし。
動作確認環境
Raspberry Pi 4
g++ (Raspbian 8.3.0-6+rpi1) 8.3.0
某モータドライバ, AZ用 EL用
詳細
pigpioを使ってSPIでモータを制御するとき、ピンのイン・アウト、プルアップの設定だけだと不十分。だった。。。。
AZ駆動用、EL駆動用に某モータ1台ずつ、計2台をMISO、MOSI共通でCSを切り替えながら制御していた。
EL駆動中にプログラムをKillして、再び最初からプログラムを走らせると、AZ駆動用モータドライバからのSPIのレスポンスが「FF FF FF FF FF FF FF FF FF FF FF FF」のみとなった。
波形をしらべてみると、起動時に本来HIGHであるはずのEL用のCSがLOWとなっていた。どうやらELモータの駆動を途中でKillしてしまったため、ELモータドライバ側でLOWに張り付いていた模様。
CSピンは、ちゃんとHIGH(SPIがアクティブLOWのとき)に初期化すべし。という教訓を得た。
コメント