目標:CUIのABSエンコーダ,AMT232A-Vを使えるようにする
SPIで通信はできたみたいだけど数字がカクつく…最小値が63,一周で0~4095のはずが,半周で4095に到達し,二回繰り返される.
おそらくビットシフトあたりのせいだと思うけどなぁ…
SPIの送受信もーどにしてたためMOSIからなにかデータが出てたみたいで,これが悪さをしていた可能性が高い.
SPIの受信オンリーにしたら一応うまく動いた.
とうかそもそもエンコーダにMOSIの線がつながっていなかった.そりゃ受信オンリーにしないとstm32の中のシフトレジスタが悪さしてもおかしくなさそう
原因が断定できてるわけじゃないからなんとも言えないけどね
しかし半周で4095に達することは変化なく,しかも2ずつインクリメントしてたため,おそらくビットシフト演算周りがまだイマイチだと思われる.
12bitなら下位2bitは0のままのハズなので,2bitシフトすればいいと思ったけど,最下位1bitが0のまま変化ない,だから2ずつインクリメントし,半周で4095に達したとかんがられる.
じゃあ3bitシフトすればいいが,そうすると最上位2bitの偶数,奇数パリティビットが1つしか無い,最上位1bitはどこにいったんだろう.
SPIのタイミングとかが悪いんだろうイア,データシート読んだ感じだと合ってると思うけどなぁ
SPIタイミング
極性:アクティブLow(Idle時High),stm32の設定だとCPOL=1
クロックタイミング:2つ目のEdle,stm32の設定だとCPHA=1
よってSPIモードは3,クロックの立ち上がりでサンプリングする.
次にやること:オシロスコープで波形の確認がしたい