エラーフラグ関連の動作も念のため確認してみた。
AS5048には、以下のダイアグのフラグがある
- COMP HIGH : 磁力が弱い
- COMP LOW : 磁力が強い
- COF : CORDICのオーバーフロー
- OCF : オフセット調整完了
正常時は、OCFのみ1でその他は0になるようだ。磁石とICの距離を変えてフラグをチェックしてみた。また同じレジスタにはAGC(automatic gain control)という自動でゲインを調整している機能があり、そのゲインレベルもみた。
磁石をめちゃ近くした状態では、以下のようになった(右に表示されているDiagnosticとAGC)
ちゃんとOCFだけ1になっている。ゲインは0×75で117なので、ちょうど半分くらい。でもOKな状態です。
磁石を遠くしてみた、結果は以下の通り
Comp Highのフラグが立っている。。確かに磁石を遠くしたので、磁力は弱くなっていると相関があっている。しかもゲインが0xFFなので最大になっているので、頑張って磁力を受けようとしている必死さを感じます。ちなみにこの状態でもエンコーダとしてはちゃんと動作しているので、磁力が弱いですよ〜注意してください〜程度でしょう。
これでも結構満足のいく結果になりましたが、エラー関連はまだあって、Parity Errorのチェックをしているようです。
前回、うまくいかなかった理由はこれが要因です。また原因もわかりました。どうやらCSピンとMISOピンの配線が近いと干渉してParity Errorが頻発しました。以下がその結果です。
magnetic error と angle error はそれぞれのデータの14bit目にErrorがあると表示させていまして、連発してます。
また、0×0001番地の値をみるとParity Error(2bit目)が出ていることがわかります。(右のerror_flag_2 : 0×4)
このレジスタは一度読むとフラグがクリアさせます。念のためチェックするとフラグが消えて、errorがなくなります。(cleared_flagが0×00になる)
ということで、無事にAS5048Aの評価が完了した感じデス!!ああ、よかった。よかった。
続きはこちら
[...] AS5048A magnetic rotary encoder の動作チェックと実装 -エラーフラグ- [...]
ピンバック by AS5048A magnetic rotary encoder の動作チェックと実装 | Analogfeeder — 2020/03/26 @ 00:16