20180924

2018-09-24

目標:CUIのABSエンコーダ,AMT232A-Vを使えるようにする

  • 12bit
  • SSI
  • 8000RPM

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,クロックの立ち上がりでサンプリングする.

次にやること:オシロスコープで波形の確認がしたい

  • 20180924.txt
  • 最終更新: 2018/09/25
  • by yuki_kusakabe