0x71 = 113、勝利の瞬間
多分10時間は普通にかけたと思います。でも、ようやくWHO_AM_I(0x75にアクセスすると0x71が返ってくる)が読み取れました!
ということで、やったことを時系列に書いていきます。
まず、始めるときはそもそもSPIの仕組みが良く分かっていない状況からのスタート。とりあえず、RSPIというものを使えばよいことを知りました。データシートを読みますが、まあどこをどうしたらよいかがわからん状態でした。そんなとき、ルネサスが周辺機能についていろいろと解説しているページを見つけました。授業みたいなスライドがあり、そこである程度のことを理解しつつ、設定のあたりを書きました。
が、「アドレスにアクセス」この一言が全く分からない状態がしばらく続きました。要するに、最初にアドレスを指定(アドレスにあったシリアル通信を送る)して、そのあとなんか適当にダミー送ってデータを受け取るということでした。
それを理解するも、色々おかしい。クロックは出ているのですが、マイコンから信号が出てこない…しばらく悩みましたが、アクセスをロングワードアクセスに直したら、動きました(なんででしょう、多分SPDRをLONGで指定しているから?)。
でも、ジャイロの反応がなく、またまた?でした。とりあえずオシロでクロックとMOSIを同時に見てみて、それを紙に適当に写してみました。そうしたら、一応正しい信号になっていることが、確認出来ました。
しばらくオシロで見てみると、MISOが不安定(ハイインピーダンス状態?)になっていることに気づきました。そこで、もしやと思い、モジュールのデータシートを読んで見たら、ここに罠がありました。ジャンパを切り替えなくてはならなかったのです。
切り替えたところ値は安定しているけれども、0のままという状態。でもかなりなんとかなりそうだなーと適当にいじっていたら、CSの切り替えタイミングがあっていない箇所があったようで、そこを直したら、MISOが動くようになり、値が返ってきました。
ざっと書いてこんな感じで悪戦苦闘してました。書いてみると短いと感じるかもしれませんが、SPIについて調べて理解するのにはかなりの時間がかかりました…。
といっても、ようやくジャイロと繋がり、これで回路の確認は、全て完了しました!
基板を再発注できます。あとは、ジャイロの実測値を読み取れるか確認してみます。ようやく、ようやくマウスが形になりそうです。
7/22追記 画像のはjyroじゃなく、gyroですね…(笑)。
今日はこの辺で。
0 件のコメント:
コメントを投稿