AN137 - MagAlphaシリアルインタフェースの高度な機能の使用
はじめに
2018年6月19日 -このMagAlphaシリアルインタフェースには、データシートに記載されていない高度な機能がいくつかあります。このアプリケーションノートでは、それらが何であるか、およびそれらの使用方法について説明します。
パリティビット (SPIおよびSSI)
このパリティビットまたはチェックビットは、バイナリコードの文字列に追加されるビットであり、文字列内の1の総数が偶数になるようにします (表1を参照) 。パリティビットは、エラー検出コードとして使用されます。MagAlphaは、17番目のクロックエッジでパリティビットを送信します。
16ビットの角度値 | 「1」に設定されたビット数 | 16ビットの角度値+1ビットのパリティチェック |
0000000000000000 | 0 | 00000000000000000 |
1000110001100010 | 6 | 10001100011000100 |
1000110001100011 | 7 | 10001100011000111 |
0101110100000000 | 5 | 01011101000000001 |
表1: パリティビットの動作の概要16ビットの角度値
図1から図4は、パリティビットがある場合とない場合のSPIおよびSSIフレームを示しています。

図1: パリティビットのないSPIフレーム

図2: パリティビット付きSPIフレーム

図3: パリティビットのないSSIフレーム

図4: パリティビット付きSSIフレーム
連結された読み取り/書き込みレジスタ (SPIのみ)
複数の読み取りまたは書き込みレジスタコマンドを連結して、時間を節約することができます。読み取り / 書き込みフレームを連結するには、前のレジスタ値を読み取りながら次の読み取り / 書き込みコマンドを送信するだけです。
シーケンスの最後のSPIフレームは、センサを角度リードバックモードに設定するために、0x0000をMagAlphaに送信する必要があります (図5を参照) 。 これが行われない場合、次の読み取り角度操作は角度の代わりにレジスタ値を返します。

図5: シーケンスのSPI最後の連結フレームは0x0000値をセンサに送信する必要があります
図6から図9は、SPIプロトコルとSSIプロトコルの両方について、標準の読み取り / 書き込みコマンドと連結コマンドの違いを示しています。

図6: SPI標準読み取りコマンド

図7: SPI連結読み取りコマンド

図8: SPI標準書き込みコマンド

図9: SPI連結書き込みコマンド
SPIホストを使用してSSIで角度を読み取る
モード2 (CPOL 1、CPHA 0) でSPIインターフェースを使用してSSIホストをエミュレートすることができます (表2および表3を参照) 。
すべてのSPIモード2がそのまま動作するわけではないことに注意してください。一部のMCUは、最初のクロックの立ち上がりエッジではなくCSの立ち下がりエッジでMSBビットを伝搬するため、SPIフレームに余分なクロックを追加しません。この場合、正しいビット数を読み取るには、手動でクロックカウントを追加する必要があります (16ビット角度を読み取るには17クロックカウント) (図10を参照) 。
フレームの先頭にビットを追加する場合は、MSBビットをマスクすることを忘れないでください (以下の擬似コードを参照) 。
angle = spi17bitsOutputValue & 0x0FF;
SPI | SSI | |
クロック | SCLK | SSCK |
センサからホストへのデータ | MISO | SSD |
表 2:SSI SPI信号マッピング
SPIモード2 | SSI | |
クロックアイドル状態 | 高い | 高い |
データの伝播 | 立ち上がりエッジ | 立ち上がりエッジ |
データキャプチャエッジ | 立ち下がりエッジ | 立ち下がりエッジ |
表 2:SPIモード2でのSSIエミュレーション

図10: SSIエミュレーションで発生する可能性のあるクロックカウントの問題
アカウントにログイン
新しいアカウントを作成