こんにちは。
マイコンについて非常に初心者であり、初歩的な質問で申し訳ないのですが、どなたかお教えいただきたいです。
RZ-T2MマイコンでSPI通信を行いたいと考えています。
スレーブ側の動きが少々複雑で、チップセレクト(CS)ピンの挙動が単なるH\Lだけでなく、複雑な信号入力が必要であったり、MOSIをHi-Zに設定する必要があったりします。
そのため、下記2点を確認したいです。
・GPIOピンをCSピンとして代用できないか?また同期のさせ方は?
・MOSIやSCLKをHi-Zに設定可能か?またその制約はないか?(CSがイネーブルのときのみなど)
以上、よろしくお願いいたします。
わわいです
そういう複雑なことをさせるなら、SPIデバイスを使うのはあきらめて、全ラインをGPIOにしてしまい、ソフトウエアでみんな実装する、という手を使えば簡単かと思います
そうなると、あまり速い速度では追いつかなくなりますんで、マスターの方で十分速度を遅くする必要があります
チップセレクト信号のアサート中が決まったデータ長でビット列(8の整数倍)の出入りがあるのならチップセレクト信号をGPIOで先にLOWして通信APIを実行し、受信完了後にHIGHに戻せば良いかと思います。Hi-Zにするのも同様です。もし8の倍数じゃない場合はHi-Zへの切り替えなら全部ソフトウェアでGPIO操作の方が現実的です。具体的に市場にあるデバイスならその型式まで書けばもっと詳しく教えてくれる方がいると思いますよ。
わわいさん
ありがとうございます。
4線すべてGPIOにするということですね。
そのまま使えたらな、と思っていましたが、検討してみます!
Shoji Yamamotoさん
スレーブのデバイスが未上市のものなのでわかりにくい質問となっていて申し訳ないです。
的外れだったらすみませんが、HiZやCSをGPIOする区間はチップセレクトをネゲートして別ピンで制御するということでしょうか?
RZシリーズの経験がないので自信がないですが、RXシリーズをはじめ多くのマイコンでGPIOとペリフェラルグループのどれを物理ピンに割り当てるかを決めるレジスタが存在します。それを使ってピンをGPIOの入力モードに切り替えればHiZ状態にできます。なお、一般的にSPIマスターのSCLK、CS、MOSIはHiZに切り替えません。一方、スレーブはCSがHighの時はMISOピンがHiZ状態になります。そんな処理を要求しているのは不思議な感じがします。
勉強になりました。
通常Hi-Zにはしないものなのですね。どうしても必要であればGPIOでの実装を検討したいと思います。