host api design for mm7150 motion moduleww1.microchip.com/downloads/jp/appnotes/00001873a_jp.pdfbit7...

34
2015 Microchip Technology Inc. Advance Information DS00001873A_JP - p.1 はじめに 本書では、定義済み API( アプリケーション プログラミング インターフェイス ) と仮想レジスタを使って MM7150 モーション モジュールのデータにアクセスするアプリケーション ファームウェアを作成する方法を詳しく説明します。 また、この仕様と設計は Explorer 16 (PIC24FJ) 開発ボードのセンサ フュージョン サンプルコードと一緒に MM7150 使われています。このサンプルコードは公開されています。 対象ユーザ 本書は、組み込みコントローラのファームウェアの開発経験および HID over I 2 C プロトコルの基礎知識を持つ開発者を 対象としています。 参考文献 以下の文書も参照してください。製品の在庫状況については、弊社または代理店にお問い合わせください。 HID over I 2 C protocol specification(v1.0)Microsoft 社、 2012 4 24 (msdn.microsoft.com で入手可能 ) HID Sensor Usage Tables(Request #: HUTRR39usb.org で入手可能 ) MM7150 Motion Module/PICTail on Explorer 16 Development Board User’s Manual(Rev. A)Microchip MM7150 with Explorer 16 (PIC24) Sensor Fusion Sample Code(v1.3.1 以降 )Microchip MM7150 モーション モジュール向けホスト API 設計』における用語と略語 このセクションでは本書で使う用語と略語を説明します。 1-1: 用語集 用語 定義 HID Human Interface Device I 2 C Inter-Integrated Circuit ホスト MM7150 との通信に使う組み込みシステム内のアプリケーション プロセッサ Exp 16 サンプルコードでは PIC24FJ128GA010 デバイス /EC MM7150 モーション モジュールまたは SSC7150 センサハブ デバイス VREG 仮想レジスタ Acc, Mag, Gyro 加速度センサ、磁気センサ、角速度センサ ( 物理センサ ) Ori, Incl, Cmp オリエンテーション、傾斜計、コンパス ( 仮想センサ ) SF センサ フュージョン AN1873 MM7150 モーション モジュール向けホスト API 設計 Author: Tom Tse / Arjun M. Das Microchip Technology Inc. 注意 : この日本語版文書は参考資料としてご利用ください。最新情報は必ずオリジ ナルの英語版をご参照願います。

Upload: others

Post on 25-Jan-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

  • AN1873MM7150 モーション モジュール向けホスト API 設計

    注意 : この日本語版文書は参考資料としてご利用ください。最新情報は必ずオリジナルの英語版をご参照願います。

    はじめに

    本書では、定義済み API( アプリケーション プログラミング インターフェイス ) と仮想レジスタを使って MM7150 モーション モジュールのデータにアクセスするアプリケーション ファームウェアを作成する方法を詳しく説明します。

    また、この仕様と設計は Explorer 16 (PIC24FJ) 開発ボードのセンサ フュージョン サンプルコードと一緒に MM7150 で 使われています。このサンプルコードは公開されています。

    対象ユーザ

    本書は、組み込みコントローラのファームウェアの開発経験および HID over I2C プロトコルの基礎知識を持つ開発者を 対象としています。

    参考文献

    以下の文書も参照してください。製品の在庫状況については、弊社または代理店にお問い合わせください。

    •『HID over I2C protocol specification』(v1.0)、Microsoft 社、2012 年 4 月 24 日 (msdn.microsoft.com で入手可能 ) •『HID Sensor Usage Tables』(Request #: HUTRR39、usb.org で入手可能 )•『MM7150 Motion Module/PICTail on Explorer 16 Development Board User’s Manual』(Rev. A)、Microchip 社•『MM7150 with Explorer 16 (PIC24) Sensor Fusion Sample Code』(v1.3.1 以降 )、Microchip 社

    『MM7150 モーション モジュール向けホスト API 設計』における用語と略語このセクションでは本書で使う用語と略語を説明します。

    表 1-1: 用語集用語 定義

    HID Human Interface DeviceI2C Inter-Integrated Circuit

    ホスト MM7150 との通信に使う組み込みシステム内のアプリケーション プロセッサ Exp 16 サンプルコードでは PIC24FJ128GA010

    デバイス /EC MM7150 モーション モジュールまたは SSC7150 センサハブ デバイスVREG 仮想レジスタAcc, Mag, Gyro 加速度センサ、磁気センサ、角速度センサ ( 物理センサ )Ori, Incl, Cmp オリエンテーション、傾斜計、コンパス ( 仮想センサ )SF センサ フュージョン

    Author: Tom Tse / Arjun M. DasMicrochip Technology Inc.

    2015 Microchip Technology Inc. Advance Information DS00001873A_JP - p.1

  • AN1873

    1.0 システム概要ホスト空間は以下の 2 つに区分されます。

    • ホストユーザ空間• ホスト SF ライブラリ空間

    図 1-1: ホストのレイアウト

    ホスト アプリケーションはホストユーザ空間に、SF 関連インフラストラクチャは SF ライブラリ空間に格納されます。 ホスト アプリケーションは仮想レジスタを読み書きしてホスト SF ライブラリを使います。仮想レジスタはユーザ アプリケーションから見えるホスト SF ライブラリの最上位層です。しかし、ユーザーアプリケーションは最終的にSF ライブラリの全階層を駆動します。

    図 1-2: ホストデバイスのレイアウト

    SF Lib SpaceUser Space

    User Application

    V R E G

    VREGto

    HID/I2CTranslation

    HID/I2CParser

    I2C/SMBusDriver

    Host User Space Host SF Lib Space

    MM7150 Motion Module

    I2C CLK/DAT

    Alert Line

    Wake Up

    Read/Write

    DS00001873A_JP - p.2 Advance Information 2015 Microchip Technology Inc.

  • AN1873

    2.0 ホスト SF ライブラリの機能このセクションでは、ホスト SF ライブラリがサポート ( またはサポートを予定 ) している全機能をまとめています。

    表 2-1: ホスト SF ライブラリの機能機能 説明

    リセット MM7150 モジュールの HID/I2C リセットコマンドをサポートし、仮想レジスタを初期化します。

    センサハブ イネーブル センサハブを有効にします。センサハブ スリープ 有効にすると最も深い D3 スリープ状態に入ります。センサ表示 MM7150 モーション モジュールがサポートするセンサを表示します。センサ感度 センサの感度を設定します。

    センサ データレート / SPS

    センサのデータレート ( レポート間隔 ) を設定します。

    センサイネーブル センサからのレポートを有効にします。

    センサデータ 有効にしたセンサからデータを読み出します。

    PID, VID, DID 各種 ID を読み出します。ベンダー コレクション MM7150 ファームウェア ID を読み出し、センサ係数を更新し、設定ファイルを更新し、

    フラッシュ更新をサポートします。

    2015 Microchip Technology Inc. Advance Information DS00001873A_JP - p.3

  • AN1873

    3.0 ホスト SF ライブラリホスト SF ライブラリ空間は以下の 4 層で構成されています。

    • 仮想レジスタ層• VREG - HID 変換層• HID/I2C パーサ層• I2C/SMBus ドライバ層

    各層を以下に説明します。

    3.1 仮想レジスタ仮想レジスタとは RAM に実装された 16 ビットのレジスタです。このレジスタにアクセスすると、MM7150 モーションモジュールの設定と読み書きを実行します。

    仮想レジスタの特徴を以下に示します。

    • VREG に同じ値を繰り返し書き込んでも、その値には影響しません。 • VREG の中には自動クリアビット ( 処理が完了すると自動的にクリアされるビット ) を持つものがあります。• VREG の動作はアクセスタイプに厳密に従います。• VREGの多くはステータス レジスタに対応するビットがあり、VREG書き込みが成功したかどうかを確認できます。• VREG の中には、モジュールで特定のセンサが利用可能な場合のみ有効になり、それ以外は予約済みとなります。

    詳細は補遺 B:「仮想レジスタのマップ」を参照してください。

    3.1.1 レジスタの説明

    3.1.1.1 レジスタ 00h: センサハブ コンフィグレーション (SHC)- アクセスタイプ : R/W- POR 既定値 : 0x0001

    表 3-1: 仮想レジスタで使う用語の定義用語 / 略語 定義

    R 「R」はアクセスタイプの 1 つです。レジスタまたはビットが読み出し専用である事を示します。読み出し専用のビットとレジスタを読み出すと、現在値を返します。これらのビットまたはレジスタを読み書きしても、その値には影響しません。

    W 「W」はアクセスタイプの 1 つです。レジスタまたはビットが書き込み専用である事を示します。書き込み専用のビットとレジスタは、書き込みのみが可能です。これらのビットまたはレジスタを読み出すと、0 を返します。

    R/W 「R/W」はアクセスタイプの 1 つです。レジスタまたはビットが読み書き可能である事を示します。読み書き可能のビットとレジスタを読み出すと、現在の値を返します。値を書き込むと、レジスタまたはビットは更新されます。これらのビットまたはレジスタを読み出しても、その値には影響しません。

    表 3-2: VREG - 00h BIT15 BIT14 BIT13 BIT12 BIT11 BIT10 BIT9 BIT8

    RES RES Raw Gyro EN

    Raw Mag EN Raw Acc EN RES RES Incl EN

    BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

    Ori EN Cmp EN Gyro EN Acc EN MM_Reset MM_Start MM_Sleep MM_Wake

    DS00001873A_JP - p.4 Advance Information 2015 Microchip Technology Inc.

  • AN1873

    表 3-3: VREG - 00h ビットの説明ビット 説明

    0 - MM_Wake 既定値では、このビットはセットされています。スリープビットがセットされると、このビットは自動的にクリアされます。ホストをスリープから復帰させるには、このビットをセットします。

    1 - MM_Sleep このビットをセットすると、MM7150 モーション モジュールは最も深い D3 スリープ状態 に入ります。このスリープから復帰するには、ホスト SF ライブラリは MM_Wakeビット 0 をセットする事で復帰信号を発行する必要があります。このビットは自動クリアビットです。以下に示すビットの組み合わせ以外では、このレジスタをセットまたはクリアできません。

    • MM_Wake = 1 かつ MM_Sleep = 0 の場合、MM7150 はアクティブになります。• MM_Wake = 0 かつ MM_Sleep = 1 の場合、MM7150 はスリープに入ります。

    全てのセンサが無効な場合のみ、このビットは有効です。センサが 1 つでも有効な場合、このビットはセットできません。このビットをセットし、動作が正常に完了した場合、次の VREG 書き込みは MM_Wakeセットである必要があります。MM_Sleep の後に MM_Wake 以外の VREG 書き込みを発行しても無視されます。

    2 - MM_Start センサを有効にする前にこのビットをセットする必要があります。POR の後一度だけセットできます。このビットは、ホスト SF ライブラリ初期化で必ずセットする必要があります。POR 時のみクリアされます。このビットは、センサハブの起動に必要です。このビットがセットされていないと、センサ イネーブルビットはセットできません。この ビットはユーザ アプリケーションではセットする必要はなく、ユーザ アプリケーションか らは常に「1」として読み出されます。

    3 - MM_Reset このビットをセットすると、ホスト SF ライブラリは HID/I2C リセットを発行します。このリセットは SHC (MM_Start を除く )、感度、データレート、データの各仮想レジス タも POR 値にリセットします。これは自動クリアビットです。

    4 - Acc EN このビットをセットすると、Acc が有効になります。そのデータは Acc データレジスタから読み出せます。

    5 - Gyro EN このビットをセットすると、Gyro が有効になります。そのデータは Gyro データレジスタから読み出せます。

    6 - Cmp EN このビットをセットすると、Cmp が有効になります。そのデータは Cmp データレジスタから読み出せます。

    7 - Ori EN このビットをセットすると、Ori が有効になります。そのデータは Ori データレジスタから読み出せます。

    8 - Incl EN このビットをセットすると、Incl が有効になります。そのデータは Incl データレジスタから読み出せます。

    9, 10 - RES 予約済みビット11 - Raw Acc EN このビットをセットすると、Acc 生データレジスタから Acc の生データを読み出せます。12 - Raw Gyro EN このビットをセットすると、Gyro生データレジスタからGyroの生データを読み出せます。13 - Raw Mag EN このビットをセットすると、Mag生データレジスタからMagの生データを読み出せます。14, 15 - RES 予約済みビット

    Note: 生データを使うには、対応する物理 / 仮想センサを有効にする必要があります。詳細はセクション 3.2.2.1「レジスタ 00h: センサハブ コンフィグレーション (SHC)」を参照してください。

    2015 Microchip Technology Inc. Advance Information DS00001873A_JP - p.5

  • AN1873

    3.1.1.2 レジスタ 01h: センサ表示 (SL)- アクセスタイプ : R- POR 既定値 : 0x0000

    SL レジスタを使うと、センサハブ ソリューションで利用可能な全ての ( 物理および仮想 ) センサを確認できます。 例えば、BIT0 がセットされていれば、Acc センサが利用可能である事を示します。対応するビットがセットされていない場合、そのセンサが存在しない事を示します。そのセンサに関連する全てのレジスタとビットは予約済みであり、アクセスできません。

    3.1.1.3 レジスタ 02h ~ 0Bh: xxxx 感度- アクセスタイプ : R/W- POR 既定値 : 0x0000

    オフセット 02h ~ 0Bh のレジスタを使ってセンサ感度を設定します。例えば、ACSEN (Acc 感度 ) レジスタで Acc センサの感度を設定します。このレジスタを使ってセンサの現在の感度を読み取る事もできます。

    3.1.1.4 レジスタ 0Ch ~ 15h: xxxx データレート- アクセスタイプ : R/W- POR 既定値 : 0x0000

    オフセット 0Ch ~ 15h のレジスタを使って、センサのデータレートを ms 単位で設定します。最小レポート間隔は10 ms です。例えば、ACDXR レジスタは加速度センサのデータレート ( レポート間隔 ) を設定します。30 ms 間隔で サンプルを得るには、このレジスタを 0x001E に設定します。このレジスタを使ってセンサの現在のデータレート( レポート間隔 ) を読み取る事もできます。

    3.1.1.5 レジスタ 16h ~ 35h: xxxx データ- アクセスタイプ : R- POR 既定値 : 0x0000

    オフセット 16h ~ 35h のレジスタを使って、センサのデータを取得します。センサデータは、SHC レジスタでそのセンサが有効な場合のみ読み出せます。センサデータは、センサ既定値のレポート間隔またはユーザが設定したレポート間隔で更新されます。このレポート間隔はデータレート レジスタで設定します。ユーザ アプリケーションがセンサ データを読み出す際、レジスタ オフセットの昇順で読み出される事に注意が必要です。例えば、加速度センサは 3 つの データレジスタ (AccX, AccY, AccZ) を持ち、これらのレジスタは AccX、AccY、AccZ の順に読み出されます。センサを 無効にすると、これらのレジスタはクリアされます。

    3.1.1.6 レジスタ 36h: 製品 ID- アクセスタイプ : R- POR 既定値 : 0x0000

    このレジスタはデバイスの製品 ID を格納します。このレジスタは SHC レジスタの MM_Start ビットがセットされた後に書き込まれ、POR 後にのみクリアされます。

    表 3-4: VREG - 01hBIT15 BIT14 BIT13 BIT12 BIT11 BIT10 BIT9 BIT8

    RES RES RES RES RES RES RES RES

    BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0

    RES RES Cmp Ori Incli Gyro Mag Acc

    Note: SL レジスタが書き込まれるのは SHC レジスタの MM_Start ビットがセットされた後です。

    Note: Mag FluxX データ、Mag FluxY データ、Mag FluxZ データの各レジスタは、コンパスを有効にすると更新 されます。

    DS00001873A_JP - p.6 Advance Information 2015 Microchip Technology Inc.

  • AN1873

    3.1.1.7 レジスタ 37h: 製造者 ID- アクセスタイプ : R- POR 既定値 : 0x0000

    このレジスタはデバイスの製品 ID を格納します。このレジスタは SHC レジスタの MM_Start ビットがセットされた後に書き込まれ、POR 後にのみクリアされます。

    3.1.1.8 レジスタ 38h: デバイス ID- アクセスタイプ : R- POR 既定値 : 0x0000

    このレジスタはデバイスの製品 ID を格納します。このレジスタは SHC レジスタの MM_Start ビットがセットされた後に書き込まれ、POR 後にのみクリアされます。

    3.1.1.9 レジスタ 39 ~ 3Eh: 指数- アクセスタイプ : R- POR 既定値 : 0x0000

    レジスタ 0x39 ~ 0x3B で、各センサのデータレジスタの単位の指数値を提供します。

    レジスタ 0x3C ~ 0x3E で、各センサの感度レジスタの単位の指数値を提供します。

    表 3-5: 指数レジスタビットの定義レジスタ ビット センサ

    指数 1 (0x39) 0-3 Acc データの指数値4-7 Gyro データの指数値8-11 Cmp データの指数値12-15 Ori データの指数値

    指数 2 (0x3A) 0-3 Incl データの指数値4-11 予約済み12-15 Acc 生データの指数値

    指数 3 (0x3B) 0-3 Mag 生データの指数値4-7 Gyro 生データの指数値8-15 予約済み

    指数 CS1 (0x3C) 0-3 Acc 感度の指数値4-7 Gyro 感度の指数値8-11 Cmp 感度の指数値12-15 Ori 感度の指数値

    指数 CS2 (0x3D) 0-3 Incl 感度の指数値4-11 予約済み12-15 生の Acc 感度の指数値

    指数 CS3 (0x3E) 0-3 生の Mag 感度の指数値4-7 生の Gyro 感度の指数値8-15 予約済み

    2015 Microchip Technology Inc. Advance Information DS00001873A_JP - p.7

  • AN1873

    3.1.1.10 レジスタ 3F ~ 42h: xxxx ステータス - アクセスタイプ : R/W- POR 既定値 : 0x0000

    これらのレジスタは SHC/xxxx 感度 /xxxx データレートの各レジスタがサポートする動作のステータスを示します。動作が完了したか、エラーが発生したかどうかを示します。ステータス レジスタは全部で 4 つあります。ステータス レジスタのステータスをクリアする手順は全て同じです。

    3.1.1.11 レジスタ 3F: ステータス 1、レジスタ 40: ステータス 2 Bit0 ~ Bit3これらのビットは SHC レジスタのセンサ イネーブルビットのステータスを示します。各センサのイネーブルビットに 2 ビットが割り当てられています。ステータス レジスタをクリアできるのは、センサの有効化 / 無効化が失敗したと いうステータスを格納している時、またはリセット後のみです。2 ビットで以下のステータスを表します。

    表 3-6: 単位の指数の符号化と意味 値 指数 10 の累乗

    0x00 1x10E0 10x01 1x10E1 100x02 1x10E2 1000x03 1x10E3 1 0000x04 1x10E4 10 0000x05 1x10E5 100 0000x06 1x10E6 1 000 0000x07 1x10E7 10 000 0000x08 1x10E-8 0.00 000 0010x09 1x10E-7 0.0 000 0010x0A 1x10E-6 0.000 0010x0B 1x10E-5 0.00 0010x0C 1x10E-4 0.0 0010x0D 1x10E-3 0.0010x0E 1x10E-2 0.010x0F 1x10E-1 0.1

    表 3-7: センサ有効化 / 無効化ステータスxxxx ステータス 1 xxxx ステータス 0 説明

    0 0 ステータス レジスタをクリアする0 1 センサの有効化が成功した1 0 センサの無効化が成功した1 1 センサの有効化 / 無効化が失敗した

    DS00001873A_JP - p.8 Advance Information 2015 Microchip Technology Inc.

  • AN1873

    3.1.1.12 レジスタ 40: ステータス 2 Bit4 ~ Bit15、レジスタ 41 ~ 42: ステータス 3、4ステータス 2、3、4 の各レジスタは、センサ感度変更およびセンサ データレート VREG のステータスビットも格納 しています。各センサの感度およびデータレート レジスタに 2 ビットが割り当てられています。3 ビットで以下の ステータスを表します。

    3.1.1.13 レジスタ 42: Bit 3 ~ 6ビット 3 および 4 は、SHC レジスタの MM_Start ビットのステータスを表します。下表にステータスを示します。

    同様にビット5および6は、SHCレジスタのリセットビットのステータスを表します。以下の表にステータスを示します。:

    3.1.1.14 レジスタ 42: Bit 7 ~ 9MM_Sleep と MM_Wake 用に 3 ビットが割り当てられています。この 3 ビットで以下のステータスを表します。

    表 3-8: センサのデータレートと感度の変更ステータス xxxx CS/データ2 ( エラービット )

    xxxx CS/ データ 1 ( データレート ビット )

    xxxx CS/データ0 ( 感度ビット ) 説明

    0 0 0 データレート ステータスビットをクリアする0 1 0 データレートの変更が成功した0 0 1 感度の変更が成功した0 1 1 データレートと感度両方の変更が成功した1 0 0 感度ステータスビットをクリアする1 1 0 データレートの変更に失敗した1 0 1 感度の変更に失敗した1 1 1 データレートと感度の変更に失敗した

    表 3-9: MM_Start ビットのステータスMM_Start ステータス 1 MM_Start ステータス 0 説明

    0 0 ステータス レジスタをクリアする0 1 MM_Start が成功した1 0 未使用1 1 MM_Start が失敗した

    表 3-10: MM_Reset ビットのステータスMM_Reset ステータス 1 MM_Reset ステータス 0 説明

    0 0 ステータス レジスタをクリアする0 1 MM_Reset が成功した1 0 未使用1 1 MM_Reset が失敗した

    表 3-11: MM_Sleep および MM_Wake ビットのステータスxxxx CS/データ2 ( エラービット )

    xxxx CS/データ1 (SH 復帰ビット )

    xxxx CS/ データ 0 (SH スリープビット ) 説明

    0 0 0 MM_Wake ステータスビットをクリアする0 1 0 MM_Wake が成功した0 0 1 MM_Sleep が成功した0 1 1 未使用1 0 0 MM_Sleep ステータスビットをクリアする1 1 0 MM_Wake が失敗した1 0 1 MM_Sleep が失敗した1 1 1 未使用

    2015 Microchip Technology Inc. Advance Information DS00001873A_JP - p.9

  • AN1873

    3.1.2 VREG アクセスVREG マップ内の全 VREG アクセス用に2つの API を提供しています。• HOST_SF_Lib_VREG_write• HOST_SF_Lib_VREG_read

    3.1.2.1 関数のプロトタイプ

    UINT8 HOST_SF_LIB_VREG_read (UINT8 offset, UINT16* data)仮想レジスタの内容を読み出す関数

    offset 仮想レジスタのオフセットdata* REG データを読み込むポインタreturn 成功した場合は 0 を返し、それ以外はエラーコードを返す

    UINT8 HOST_SF_LIB_VREG_write (UINT8 offset, UINT16 data)仮想レジスタへの書き込み要求をキューに登録する関数

    offset 仮想レジスタのオフセット ( レジスタのアドレス )data VREG に書き込む内容return 成功した場合は 0 を返し、それ以外はエラーコードを返す

    3.1.2.2 VREG 書き込み機能ユーザ アプリケーションは 2 バイト値を使って VREG 書き込みを発行できます。成功すると 2 バイト値は VREG に 書き込まれます。書き込みが失敗するとエラーコードが返されます。しかし、VREG 書き込みの成功は必ずしも希望の動作が正常に実行された事を示しません。ステータス VREG のステータスビットは、VREG に関する動作のステータスを示すものです。

    3.1.2.3 VREG 読み出し機能アプリケーションが VREG 読み出しを発行するたびに、ホスト SF ライブラリは直ちにレジスタの 2 バイト値を返します。データレジスタの場合、センサレジスタをオフセットの昇順に読み出す必要があります。

    3.1.2.4 VREG 書き込み / 読み出しエラーコード

    Note: VREG_write と VREG_read は両方ともノンブロッキング コールです。

    表 3-12: VREG エラーコードエラーコード 説明

    0x00 成功0x01 アクセスタイプのエラー0x02 認識できない VREG オフセット

    DS00001873A_JP - p.10 Advance Information 2015 Microchip Technology Inc.

  • AN1873

    3.1.3 VREG の初期化 ( ホスト SF ライブラリの初期化 )SF ライブラリの初期化中に以下の動作シーケンスを実行する必要があります。

    • I2C CLK およびデータラインを設定する。 • GPIO 割り込み監視ラインを設定する。• GPIO ウェイクアップ ラインを設定する。• 全ての仮想レジスタを初期化する。• SHCレジスタのMM_Startビットをセットする (このビットはホストSFライブラリ初期化で必ずセットされる )。

    3.2 VREG から HID への変換各仮想レジスタの設定は、ほとんどの場合変換後、直接的または間接的に HID/I2C パケットに納める必要があります。本セクションでは仮想レジスタへのアクセスを説明します。また、VREG マップに示すビット / レジスタの HID 変換に関する情報も説明します。

    3.2.1 仮想レジスタの HID/I2C プロトコルへの変換仮想レジスタの内容の HID/I2C プロトコル変換は以下のようにして実行します。仮想レジスタは HID/I2C バックエンドサポートに基づいて以下の 2 つに区分されます。

    • コマンド要求ベース • デバイスデータ読み出しベース

    3.2.2 コマンド要求ベースこの区分に含まれる仮想レジスタは、クラス特有の要求 (HID/I2C 仕様による ) に基づいています。以下のレジスタがあります。

    • センサハブ コンフィグレーション レジスタ• センサ感度レジスタ• センサ データレート レジスタ

    3.2.2.1 レジスタ 00h: センサハブ コンフィグレーション (SHC)

    Note: HID/I2C仕様ではデバイスのHID/I2Cのリセットに最大5 sを要するため、初期化プロセスには約5 s必要です。

    表 3-13: センサハブ コンフィグレーションの動作 ビット HID/I2C 要求シーケンス HID 要求の前後に実行される動作

    MM_Wake このビットがセットされると、ホスト SFライブラリは復帰信号を発行し、11 ms 待機 してから以下の HID/I2C 要求シーケンスを送ります。

    1. SET POWER (ON)

    Note: 次のコマンドをモーションモジュールに送る前に30 ms待機 します。

    以下の動作が実行されます。

    1. 正常に復帰した後、このレジスタのビット 1(MM_Sleep ビット ) がクリアされる。

    MM_Sleep このビットがセットされると、ホスト SFライブラリは以下のHID/I2C要求を送ります。1. SET POWER (SLEEP)

    Note: スリープコマンド発行後、復帰信号を発行する前に 70 ms待機 します。

    このビットが有効なのは全センサが無効の場合のみです。有効なセンサが 1 つでもあるとこのビットは効力を持たず、このビットをセットしようとする動作を中止させます。

    2015 Microchip Technology Inc. Advance Information DS00001873A_JP - p.11

  • AN1873

    MM_Start HID/I2C 要求シーケンス :1. HID ディスクリプタを取得2. SET POWER (ON)3. RESET4. レポート ディスクリプタを取得5. 利用可能な全センサの機能レポート

    を取得

    手順 1、3、4 が失敗した場合、エラーを発行して処理を中止します。

    以下の動作が実行されます。

    1. HID ディスクリプタを解析• 最大入力レポート長を取得する• レポート ディスクリプタ、要求レジスタ、データ

    レジスタのレジスタアドレスを取得する

    • レポート ディスクリプタ長を取得する2. レポート ディスクリプタを解析• 利用可能なセンサを取得し、結果をセンサ表示

    (VREG) に書き込む• 各種センサのレポート ID を識別する• 全ての機能レポートのサイズを取得する• 入力レポートのセンサ データフィールドのオフ セットを識別する

    • 機能レポートの既定値の感度とデータレートのオフセットを識別する

    3. 機能レポートを解析• 全センサの既定値の感度とデータレートを取得し、取得した値をセンサのデータレートおよび感度仮想レジスタに書き込む

    • 全センサの指数値を取得し、センサ指数仮想レジスタに書き込む

    MM_Reset このビットがセットされると、ホスト SFライブラリは以下のHID/I2C要求を送ります。1. RESET手順 1 が失敗した場合、エラーを発行し処理を中止します。

    以下の動作が実行されます。

    1. リセットが正常に完了すると、このビットをクリア

    2. 感度、データレート、ステータスの各仮想レジスタは、MM_Start ステータスビットを除き、POR 値にリセット

    3. 全センサはリセットで無効となるため、MM_Start ビットを除く SHC の全ビットをクリア

    表 3-13: センサハブ コンフィグレーションの動作 ( 続き )ビット HID/I2C 要求シーケンス HID 要求の前後に実行される動作

    DS00001873A_JP - p.12 Advance Information 2015 Microchip Technology Inc.

  • AN1873

    上記の表に加えて、生のセンサを有効にするには対応するセンサも有効にする必要があります。

    複数のビットがセットされている場合、下表の優先度に従います。MM_Reset ビットがセットされた場合、デバイスと他の全レジスタの全ビットをリセットします。MM_Wake と MM_Sleep は常に相補的であるため、両者に同じ値を書き込もうとすると両方とも変更されません。MM_Sleep をせっとできるのは、その他の全ビット (MM_Start を除く )がクリアされている場合のみです。

    Acc ENGyro ENCmp ENOri ENIncl ENRaw Acc ENRaw Gyro ENRaw Mag EN

    これらのビットのうちいずれかがセットされると、ホスト SF ライブラリは以下のHID/I2C 要求を送ります。1. GET FEATURE REPORT2. SET FEATURE REPORT• センサのパワーステートを

    HID_USAGE_SENSOR_PROPERTY_POWER_S

    TATE_D0_FULL_POWER_ENUM に設定する

    • センサレポート ステートをHID_USAGE_SENSOR_PROPERTY_REPORTIN

    G_STATE_ALL_EVENTS_ENUM に設定する

    3. SET FEATURE REPORT手順 1、2、3 のいずれかが失敗した場合、エラーを発行し動作は中止します。手順 2で設定する機能レポートは手順 3 で受けたものと同じである必要があります。異なる場合、手順 2 および 3 を最大 3 回繰り返す必要があります。それでもコマンド シーケ ンスが失敗する場合、エラーを発行し最初に戻ります。このビットがクリアされると上記と同じ動作を実行します。ただし手順 2 でセンサ電源ステートを HID_USAGE_SENSOR_PROPERTY_POWER_STATE

    _D1_LOW_POWER_ENUM に設定します。

    以下の動作が実行されます。

    1. 選択したセンサに応じた適切なレポート IDを添えて機能レポート取得コマンドを発行

    2. 機能レポート長もレポート ディスクリプタ から取得

    3. センサデータ仮想レジスタを読み出せるのは、このビットがセットされている場合のみ

    RES 予約済みビット

    Note: 生のセンサで希望のデータレートを得るには、2 つの感度レジスタ ( 生のセンサと対応するセンサ ) を両方ともゼロに設定する事を推奨します。生のセンサと対応するセンサのどちらかの感度がゼロでない場合、データレート レジスタで設定した生のセンサのデータレートは ( 特にレポート間隔 ( データレート ) が 60 ms を超える場合 ) 保証されません。

    表 3-14: センサハブ コンフィグレーションの優先度 ビット 優先度

    MM_Wake -MM_Sleep -MM_Start -MM_Reset 高Acc EN 中Gyro EN 中Cmp EN 中Ori EN 中Incl EN 中Raw Acc EN 中Raw Gyro EN 中Raw Mag EN 中

    表 3-13: センサハブ コンフィグレーションの動作 ( 続き )ビット HID/I2C 要求シーケンス HID 要求の前後に実行される動作

    2015 Microchip Technology Inc. Advance Information DS00001873A_JP - p.13

  • AN1873

    3.2.2.2 レジスタ 02h ~ 0Bh: xxxx 感度このレジスタを書き込むと、以下の HID/I2C 要求が発行されます。1. GET FEATURE REPORT2. SET FEATURE REPORT3. GET FEATURE REPORT

    以下の動作が実行されます。

    1. SET FEATURE REPORT を発行する。このとき、感度以外のフィールドは現状と同じ値が使われる。2. SET FEATURE REPORT の結果を GET FEATURE REPORT で検証し、感度が変更されていない場合、

    SET FEATURE REPORT を再発行する。このシーケンスは 3 回繰り返す。それでも感度が設定されない場合、 エラーを発行し最初に戻る。

    3.2.2.3 レジスタ 0Ch ~ 15h: xxxx データレートこのレジスタを書き込むと、以下の HID/I2C 要求が発行されます。1. GET FEATURE REPORT2. SET FEATURE REPORT3. GET FEATURE REPORT

    以下の動作が実行されます。

    1. 全フィールド ( 今回値が更新されたレポート間隔フィールドを除く ) が等しい機能レポート設定コマンド (SETFEATURE REPORT) を発行する。

    2. SET FEATURE REPORT の結果を GET FEATURE REPORT で検証し、レポート間隔が変更されていない場合は、 SET FEATURE REPORT を再発行する。このシーケンスは 3 回繰り返す。それでもレポート間隔が設定され ない場合、エラーを発行し最初に戻る。

    3.2.3 デバイスデータ読み出しベースこの区分に含まれる仮想レジスタは、MM7150 から読み出したデータに基づいています。

    • センサデータ レジスタ

    3.2.3.1 レジスタ 16h ~ 35h: xxxx データMM7150 がアラートラインを Low に駆動すると、ホストから最新データを読み出せます。入力レポートを読み出すと、以下の動作が実行されます。

    1. 入力レポートを読み出すと、レポート ID を識別するために解析されます。レポート ID に対応するセンサの識別後、データを解析し適切なセンサレジスタに書き込みます。

    2. センサ有効時、ユーザはデータレジスタを常時読み出す事ができます。センサデータ レジスタが更新中 ( または ロック中 ) にデータを読み出そうとすると、旧データが読み出されます。

    センサが無効の場合、そのセンサのデータレジスタは 0x0000 として読み出されます。

    Note: 他のセンサを有効にする前に、加速度センサを有効にする事を推奨します。これにより、デバイスの動きを検出し適切なデータレートを得る事ができます。

    Note: 感度をゼロに設定すると、動きの影響を除いた正しいデータレートを得る事ができます。

    DS00001873A_JP - p.14 Advance Information 2015 Microchip Technology Inc.

  • AN1873

    3.2.4 その他のレジスタとその機能

    3.2.4.1 レジスタ 01h: センサ表示 (SL)このレジスタは HID/I2C とは直接関係しません。このレジスタは、ハードウェア上で利用可能なセンサのデータを保持します。このレジスタは、SHC の MM_Start ビットをセットすると書き込まれます。このレジスタは 1 度だけ書き込まれ、POR でクリアされます。

    3.2.4.2 PID、VID、DID レジスタこれらのレジスタは、SHC の MM_Start ビットをセットすると書き込まれます。これらのレジスタは 1 度だけ書き込まれ、POR でクリアされます。

    3.2.4.3 レジスタ 39 ~ 3Eh: 指数レジスタこれらのレジスタは、SHC の MM_Start ビットをセットすると書き込まれます。これらのレジスタは 1 度だけ書き込まれ、POR でクリアされます。

    3.2.4.4 ステータス レジスタレジスタの書き込み可能ビットは全て、ステータス レジスタ内に対応するビットを持っています。これらのステータス ビットは、特定の VREG での VREG 書き込みの成功 / 失敗に基づいて書き込まれます。

    3.2.5 VREG 実装の概要各 VREG ビットにはそれぞれ対応する動作があります。VREG ビットに基づいて VREG から HID への変換が実行され、ステータス レジスタが該当するステータスに更新されます。VREG ビットに基づいた動作を再発行する場合、対応する ステータスビットをクリアする必要があります。ホスト SF ライブラリは、以下の条件に従って VREG - HID 変換を 開始します。

    • VREG でビットがセットされているかどうかを確認する。• 対応するステータスビットがクリアされているかを確認する。

    3.3 HID/I2C パーサHID/I2C パーサは HID API を提供する層です。このセクションでは HID I2C プロトコルについて説明します。ホスト SF ライブラリの要求制御フローからの I2C 要求は、以下の 2 つの部分に分けられます。

    • ディスクリプタ要求シーケンス• デバイスコマンド要求シーケンス

    3.3.1 ディスクリプタ要求シーケンス

    3.3.1.1 HID ディスクリプタホスト SF ライブラリは、デバイス ディスクリプタの読み出しシーケンスの I2C 組み合わせ読み出しを実行し、0x1E バイトを読み出します。

    図 3-1: デバイス ディスクリプタの読み出し例

    Note: この例では、デバイス ディスクリプタのアドレスは 0x0001 です。デバイス ディスクリプタ レジスタは フラッシュ内の特定の位置に配置され、利用可能である事が必要です。

    2015 Microchip Technology Inc. Advance Information DS00001873A_JP - p.15

  • AN1873

    3.3.1.2 レポート ディスクリプタホスト SF ライブラリは、デバイス ディスクリプタ読み出しが成功するとレポート ディスクリプタを要求します。また、 ホスト SF ライブラリはデバイス ディスクリプタで指定したレポートアドレスを発行し、レポート ディスクリプタを 読み出します。この読み出しシーケンスに I2C 組み合わせ読み書きを使います。

    3.3.2 デバイスコマンド要求シーケンスホスト SF ライブラリで注意する必要がある各種コマンドを以下に示します。• RESET• GET REPORT• SET REPORT• SET POWER

    3.3.2.1 RESETリセットコマンドは、ホスト SF ライブラリがデバイスに対して常時発行できる要求です。

    3.3.2.1.1 RESET 要求RESET 要求のタイプを以下に示します。

    3.3.2.1.2 Reset 応答ホスト SF ライブラリが RESET コマンドをコマンドレジスタに発行すると、デバイスは自身をリセットし初期状態に戻ります。また、リセットが完了するとデバイスは 2 バイトの 0 を入力レジスタに書き込み、割り込みをアサートして初期化が完了した事を示します。ホスト SF ライブラリは、リセット時に必ず入力レジスタを読み出し、値が書き込まれている場合デバイスがリセットを完了したと判断します。

    図 3-2: レポート ディスクリプタの読み出し例

    Note: この例では、レポート ディスクリプタのアドレスは 0x0002 です。

    表 3-15: RESET 要求のタイプデータ 値 備考

    上位バイト

    予約済み 0000b この値は予約済みであり、必ず 0000b に設定されています。オペコード 0001b この値は RESET コマンド用に予約済みです。

    下位バイト

    予約済み 00b この値は予約済みであり、必ず 00b に設定されています。レポートタイプ 00b ホスト SF ライブラリが常にこの値を特定の値に設定します。

    デバイスはこの値を無視し、ゼロとして扱います。

    レポート ID 0000b ホスト SF ライブラリが常にこの値を特定の値に設定します。デバイスはこの値を無視し、ゼロとして扱います。

    Note: デバイスはこの要求に対して 5 秒以内に応答する必要があります。そうでないと、ホスト SF ライブラリはそのデバイスを動作不能として認識します。

    DS00001873A_JP - p.16 Advance Information 2015 Microchip Technology Inc.

  • AN1873

    3.3.2.1.3 RESET コマンドのシーケンス この要求に関するホスト SF ライブラリ側とデバイス側の動作シーケンスを以下に示します。

    3.3.2.2 GET REPORTGET REPORT コマンドは、ホスト SF ライブラリがデバイスに対して発行できる ( 入力または機能レポートの ) 要求 です。このコマンドを使うと、初期化後は常時デバイスからレポートを取得できます。

    3.3.2.2.1 GET REPORT 要求GET REPORT 要求のタイプを以下に示します。

    3.3.2.2.2 GET REPORT 応答ホスト SF ライブラリが GET_REPORT コマンドをコマンドレジスタに発行すると、デバイスはデータレジスタにレポートを書き込みます。デバイスはクロックを伸長し、反復スタートで次のホスト SF ライブラリを読み出す事もできます。このデータは以下のようにパッケージ化されます。

    • レポート長 (2 バイト )• レポート ID 付きレポート

    表 3-16: RESET コマンドの動作ホスト SF ライブラリ側 デバイス (MM7150) 側

    手順 1 ホストSFライブラリがRESETをコマンドレジスタに送る。

    手順 2 デバイスが自身の初期化を完了した後、入力レジスタのデータ長フィールドを 0x0000 で更新し、割り込みをトリガする。

    図 3-3: RESET コマンド例

    表 3-17: GET REPORT 要求のタイプデータ 値 備考

    上位バイト

    予約済み 0000b この値は予約済みであり、必ず 0000b に設定されています。オペコード 0001b この値は GET_REPORT コマンド用に予約済みです。

    下位バイト

    予約済み 00b この値は予約済みであり、必ず 00b に設定されています。レポートタイプ { 入力 (01) |

    機能 (11)}ホスト SF ライブラリは、常にこれをホスト SF ライブラリが取得しようとしているレポートタイプに基づいた特定の値に設定します。デバイスはこの値を受け取り、レポート ディスクリプタでサポート される場合のみデータを返します。

    レポート ID xxxxb ホスト SF ライブラリは、常にこれをホスト SF ライブラリが取得しようとしている TLC 特有のレポートに基づいた特定の値に設定します。デバイスは、以下の Note の規則に従ってこの値を受け取ります。

    2015 Microchip Technology Inc. Advance Information DS00001873A_JP - p.17

  • AN1873

    このコマンドが完了しデータがホスト SF ライブラリに返されるまで、ホスト SF ライブラリがデバイスに対して新規コマンド (RESET コマンドを除く ) を発行する事はありません。ホスト SF ライブラリが定義した時間 ( 通常は5 秒以上 ) 内にデバイスが応答しない場合、ホスト SF ライブラリはデバイスをリセットできます。

    3.3.2.2.3 GET REPORT のコマンド シーケンス この特有の要求に関するホスト SF ライブラリ側とデバイス側の動作シーケンスを以下に示します。

    3.3.2.3 SET REPORTSET REPORT コマンドは、ホスト SF ライブラリがデバイスに対して発行できる要求です。このコマンドを使って 初期化後いつでもデバイスにレポートを設定できます。

    3.3.2.3.1 SET REPORT 要求ホスト SF ライブラリはこの要求をコマンドレジスタに発行し、デバイスへ送るレポートをデータレジスタに書き込みます。このデータは以下のようにパッケージ化されます。

    • レポート長 (2 バイト )• レポート ID 付きレポート

    表 3-18: GET REPORT のコマンド動作ホスト SF ライブラリ側 デバイス (MM7150) 側

    手順 1 ホスト SF ライブラリが GET_REPORT をコマンドレジスタに送る。

    手順 2 デバイスはデータレジスタにレポートとデータの長さを書き込み、ホスト SF ライブラリにレポートを返す。

    手順 3 ホストSFライブラリはデータレジスタの先頭2バイトを読み出してレポート長を識別し、データレジスタから( 指定された長さの ) 残りのデータを読み出す。

    図 3-4: GET REPORT コマンド例

    表 3-19: SET REPORT 要求のタイプ データ 値 備考

    上位バイト

    予約済み 0000b この値は予約済みであり、必ず 0000b に設定されています。オペコード 0011b この値は SET_REPORT コマンド用に予約済みです。

    下位バイト

    予約済み 00b この値は予約済みであり、必ず 00b に設定されています。

    DS00001873A_JP - p.18 Advance Information 2015 Microchip Technology Inc.

  • AN1873

    3.3.2.3.2 SET REPORT 応答デバイスのレジスタにデータを受信した後、デバイスは応答する必要はありません。

    3.3.2.3.3 SET REPORT のコマンド シーケンス この要求に関するホスト SF ライブラリ側とデバイス側の動作シーケンスを以下に示します。

    3.3.2.4 SET POWERSET POWER コマンドは、ホスト SF ライブラリがデバイスに対して発行する要求です。このコマンドを使って デバイスが移行する電力ステートを設定します。

    3.3.2.4.1 SET POWER 要求SET_POWER 要求の場合、下位バイトは特別なフォーマットを使います。下位バイトには電力ステートが含まれます。

    定義されている電力ステートの値を以下に示します。 00 = ON

    01 = スリープ

    1x = 予約済み

    レポートタイプ { 出力 (10) | 機能 (11)}

    ホスト SF ライブラリは、常にこれをホスト SF ライブラリが設定しようとしているレポートタイプに基づいた値に設定します。デバイスは、特定の TLC のレポート ディスクリプタでレポートタイプ がサポートされている場合、このレポートを受け入れます。

    レポート ID xxxxb ホスト SF ライブラリは、常にこれをホスト SF ライブラリが設定しようとしている TLC 特有のレポートに基づいた値に設定します。デバイスは、以下の Note の規則に従ってこの値を受け取ります。

    表 3-20: SET REPORT のコマンド動作ホスト SF ライブラリ側 デバイス (MM7150) 側

    手順 1 ホスト SF ライブラリが SET_REPORT をコマンドレジスタに送る。

    手順 2 ホスト SF ライブラリは、レポートとデータの長さをデバイスのデータレジスタに書き込む。

    手順 3 デバイスはコマンドを解釈し必要な動作を実行する。デバイスはホスト SF ライブラリに応答する必要はない。

    図 3-5: SET REPORT コマンド例

    表 3-19: SET REPORT 要求のタイプ ( 続き )データ 値 備考

    2015 Microchip Technology Inc. Advance Information DS00001873A_JP - p.19

  • AN1873

    3.3.2.4.2 SET POWER 応答デバイスはコマンドを受け取っても応答しません。デバイスは直ちにその電力ステートに入ります。

    3.3.2.4.3 SET POWER シーケンスこの要求に関するホスト SF ライブラリ側とデバイス側の動作シーケンスを以下に示します。

    表 3-21: SET POWER 要求のタイプ データ 値 備考

    上位バイト

    予約済み 0000b この値は予約済みであり、必ず 0000b に設定されています。オペコード 1000b この値は SET_POWER コマンド用に予約済みです。

    下位バイト

    予約済み 000000b この値は予約済みであり、必ず 000000b に設定されています。電力状態 {ON (00) |

    スリープ (01)}ホスト SF ライブラリは、常にこれをデバイスが移行する電力ステートに設定します。

    表 3-22: SET POWER のコマンド動作ホスト SF ライブラリ側 デバイス (MM7150) 側

    手順 1 ホスト SF ライブラリが SET_POWER をコマンドレジスタに送る。

    手順 2 デバイスはそのコマンドを解釈し、適切な電力ステートに移行する。デバイスはホスト SF ライブラリに応答する必要はない。

    図 3-6: デバイスを ON にする SET POWER コマンド

    図 3-7: デバイスをスリープにする SET POWER コマンド

    DS00001873A_JP - p.20 Advance Information 2015 Microchip Technology Inc.

  • AN1873

    3.3.3 関数のプロトタイプ :

    3.3.3.1 HID/I2C ディスクリプタ ハンドラVOID hid_i2c_descriptor_handler (UINT8 cmd_req);

    ここで、

    cmd_reg ホスト SF ライブラリからのコマンド要求 Return 成功 / エラーコードを返す

    ホスト SF ライブラリの各種コマンド要求を下記に示します。GET_HID_DESC 01GET_RPT_DESC 02

    関数の擬似コードを下記に示します。

    UINT8 hid_i2c_descriptor_handler (UINT8 cmd_req) {

    UINT8 status;Switch (cmd_req) {

    Case GET_HID_DESC:Issue the Get HID descriptor requestRead the HID descriptor and store it.status = success/error code break;

    Case GET_RPT_DESC:Issue the Get Report descriptor requestRead the Report descriptor and store it.status = success/error code break;

    }Return status

    }

    3.3.3.2 HID/I2C コマンドハンドラUINT8 hid_i2c_cmd_process (UINT8 * buffer, UINT8 cmd_req, UINT8 report_id);

    ここで、

    *Buffer 入力 / 出力パケット制御用データバッファ ポインタcmd_reg ホスト SF ライブラリからのコマンド要求 report_id ホスト SF ライブラリからのコマンド要求のレポート ID( 該当する場合 )Return 成功 / エラーコードを返す

    ホスト SF ライブラリの各種コマンド要求を下記に示します。RESET 01POWER_ON 02SLEEP 03HID_GET_RPT_INPT 04HID_GET_RPT_FEAT 05HID_SET_RPT_OUTP 06HID_SET_RPT_FEAT 07

    関数の擬似コードを下記に示します。

    UINT8 hid_i2c_cmd_process (UINT8 * buffer, UINT8 cmd_req, UINT8 report_id) {

    UINT8 status;Switch (cmd_req) {

    Case RESET:Issue the Reset command

    2015 Microchip Technology Inc. Advance Information DS00001873A_JP - p.21

  • AN1873

    Read input register to verify if device has been reset status = success/error code break;

    Case POWER_ON:Issue the wake signal and wait for 11msIssue the Power On commandstatus = success/error code break;

    Case SLEEP:Issue the Sleep commandstatus = success/error code break;

    Case HID_GET_RPT_INPT:Issue command for HID get report input for the particular report_idFill in the * buffer with the data packet that is read backstatus = success/error code break;

    Case HID_GET_RPT_FEAT:Issue command for HID get report feature for the particular report_id Fill in the buffer with the Feature report data that is read backstatus = success/error code break;

    Case HID_SET_RPT_OUTP:Issue command for HID set report output for the particular report_idSet the output report data into the buffer for transferstatus = success/error code break;

    Case HID_SET_RPT_FEAT:Issue command for HID set report Feature for the particular report_idSet the feature report data in the buffer that needs to be sendstatus = success/error code break;

    default:status = error codebreak;

    } return status;

    }

    3.3.3.3 エラーコードHID/I2C パーサ層のステータスとして、以下のエラーコードが返されます。

    表 3-23: HID/I2C パーサ層のエラーコードエラーコード 説明

    00 成功01 HID ディスクリプタの読み出し失敗 : デバイスから応答がありません。HID ディスクリプタの

    レジスタアドレスが間違っています。

    02 HID ディスクリプタの読み出し失敗 : VID、PID がゼロです。03 レポート ディスクリプタの読み出し失敗 : デバイスから応答がありません。レポート ディス

    クリプタのレジスタアドレスが間違っています。

    04 レポート ディスクリプタの読み出し失敗 : 受信したレポート ディスクリプタが不完全でした。 HID ディスクリプタで与えられたレポート ディスクリプタ長にエラーがあります。

    05 レポート ディスクリプタの読み出し失敗 : レポート ディスクリプタが無効です。コレクションの 終わりが見つかりません。

    06 GET FEATURE REPORT 失敗 : レポート ID フィールドがゼロです。07 SET FEATURE REPORT 失敗 08 RESET が失敗しました。入力レジスタの値が 00 00 ではありません。

    DS00001873A_JP - p.22 Advance Information 2015 Microchip Technology Inc.

  • AN1873

    3.4 I2C/SMBus ドライバ層MM7150 モーション モジュールと直接相互作用する物理層です。この物理層は、MM7150 ホスト SoC のハードウェア サポートに基づいた I2C スタックまたは SMBus スタックです。この層の機能は主に 3 つの部分に分けられます。• マスタ読み出し• マスタ書き込み• アラートラインの操作

    読み書きのサポートの他に、この層はアラートラインの処理をサポートする必要があります。

    3.4.1 アラートラインの処理アラートピンとは、HID/I2C アラートピン仕様に従って設定されたホスト SF ライブラリの GPIO ピンです。GPIO 割り込みも有効にしておく必要があります。アラートラインを Low に駆動すると、ホスト SF ライブラリは最大入力レポート長のバイトの I2C 読み出しを発行します。

    3.4.1.1 データ読み出しシーケンス以下の動作シーケンスで入力レポートの読み出しプロセスを説明します。

    表 3-24: 入力レポートの動作シーケンス ホスト SF ライブラリ側 デバイス (MM7150) 側

    手順 1 デバイスが割り込みをアサートし、ホスト SFライブラリへ送る入力レポートを持っている事を示す。

    手順 2 ホストSFライブラリは割り込みを受け取ると I2Cプロトコルで READ 要求を発行する。

    手順 3 デバイスは入力レポートの長さ (2 バイト ) と入力レポート全体を返す。

    手順 4 送るべき入力レポートがなくなるとデバイスは割り込みラインをネゲートする。

    2015 Microchip Technology Inc. Advance Information DS00001873A_JP - p.23

  • AN1873

    3.5 ベンダー コレクションホスト SF ライブラリは VREG によるセンサ コレクションをサポートします。ベンダー コレクションをサポートする ために、ホスト SF ライブラリはホスト SF ライブラリ内での HID/I2C 層への直接アクセスを可能にしているため、HID の GET REPORT および SET REPORT コマンドを発行できます。

    3.5.1 ユーザ APIベンダー コレクションに基づいてアプリケーションを実装するために 2 つの API が利用できます。• HOST_SF_Lib_HID_Get_Feature• HOST_SF_Lib_HID_Set_Feature

    3.5.1.1 関数のプロトタイプ

    UINT8 HOST_SF_LIB_HID_Get_Report (UINT8 type, VOID* ReportBuffer, UINT8 size )

    仮想レジスタの内容を読み出す関数

    type 機能レポートまたは入力レポートを示す ( タイプ = 3 – 機能レポート、1 - 入力レポート )ReportBuffer * 機能レポートを読み込むポインタsize レポートバッファのサイズをバイトで指定する return 成功した場合は 0 を返し、それ以外はエラーコードを返す

    UINT8 HOST_SF_LIB_HID_Set_Feature (UINT8 type, VOID* ReportBuffer, UINT8 size)

    仮想レジスタへの書き込み要求をキューに登録する関数

    type 機能レポートまたは出力レポートを示す ( タイプ = 3 – 機能レポート、2 - 出力レポート )ReportBuffer* デバイスに送る必要があるポインタデータsize レポートバッファのサイズをバイトで指定する return 成功した場合は 0 を返し、それ以外はエラーコードを返す

    3.5.1.2 HOST_SF_LIB_HID_Get_Report の機能全てのユーザ アプリケーションは GET_REPORT 要求を発行できます。このコマンドは、ホスト SF ライブラリの HID/I2C 層に直接作用し必要なレポートを読み出す事ができます。ユーザ アプリケーションは処理が完了するまで 待機する必要があります ( ブロッキング コール )。

    3.5.1.3 HOST_SF_LIB_HID_Set_Report の機能全てのユーザ アプリケーションは SET_REPORT 要求を発行できます。このコマンドは、ホスト SF ライブラリの HID/I2C 層に直接作用し必要なレポートを送る事ができます。ユーザ アプリケーションは、処理が完了するまで待機 する必要があります ( ブロッキング コール )。

    3.5.1.4 エラーコードAPI が返すエラーコードは HID I2C パーサ層が返すエラーコードと同じです ( セクション 3.3「HID/I2C パーサ」参照 )。

    Note: 呼び出し元は、ReportBuffer パラメータの先頭バイトをゼロ以外のレポート ID に設定する必要があります。

    Note: ベンダー コレクションを使うアプリケーションは全て、これらの API を使って作成する必要があります。

    DS00001873A_JP - p.24 Advance Information 2015 Microchip Technology Inc.

  • AN1873

    4.0 加速度センサのフローチャート例

    PO R

    H ost SF L ibIn itia lization

    Acc En(in SH C)

    M otion M oduleW ake

    C hangeSensor

    C onfigure

    Acc C onfigura tion: C hange sensitiv ity or report in terva l

    R ead Acc D ata from AC C XD , AC C YD ,

    AC C ZD

    R ead D ata aga in

    D isab le Acc

    S leep

    ID LE

    N o

    Yes

    Yes

    N o

    Yes

    N o

    N o

    Yes

    2015 Microchip Technology Inc. Advance Information DS00001873A_JP - p.25

  • AN1873

    補遺 A: 加速度センサのサンプルコードホスト SF ライブラリを使って加速度センサを有効にして使用するアプリケーションのサンプルコード/*App init task: the Applications initialization function.*/void App init task (void) {

    return code = VREG_write (SHC, 0xYY)//Enable accelerometer return code = VREG_write (Accel_Sensitivity,02)//set sensitivity return code = VREG_write (Accel_data_rate, 10)//set data rate}//Note:VREG writes fail if a read-only register offset is given or an unsupported offset is given

    /*App main task: the Application’s main function.*/void App main task (void) {

    while (1) {return = VREG_read (status register, status) //Check if acc enable has been successfulif (status == operation completed) {

    VREG_read (accel data)/*Do the required processing */VREG_write (Accel_data_rate, 20) //change report interval based on some statereturn = VREG_read(status register, status)if (status == operation completed){

    /*Do the desired operations*/}else {

    if (status!= error)/*Do the task with current report interval, wait for the change report interval in next iteration*/else/*If error is detected and Change report interval failed, then do error handling*/

    }}else {

    if (status == error)//Issue Accel enable again or exit with accel enable failed

    }}

    }

    DS00001873A_JP - p.26 Advance Information 2015 Microchip Technology Inc.

  • 2015 M

    icrochip Technology Inc.A

    dvance Information

    DS

    00001873A_JP

    - p.27

    AN

    1873

    Vア

    (セ

    BIT4

    BIT3

    BIT2

    BIT1

    BIT0 POR

    cc EN MM_Reset

    MM_Start

    MM_Sleep

    MM_Wake

    0x01

    ncl Ori Cmp Gyro Acc 0x00CSE4

    ACSEN3

    ACSEN2

    ACSEN1

    ACSEN0

    0x00

    YSE4

    GYSEN3

    GYSEN2

    GYSEN1

    GYSEN0

    0x00

    MSE4

    CMSEN3

    CMSEN2

    CMSEN1

    CMSEN0

    0x00

    RSE4

    ORSEN3

    ORSEN2

    ORSEN1

    ORSEN0

    0x00

    NSEN INSEN3

    INSEN2

    INSEN1

    INSEN0

    0x00

    ES RES RES RES RES 0x00ES RES RES RES RES 0x00ACSN4

    RACSEN3

    RACSEN2

    RACSEN1

    RACSEN0

    0x00

    MGSN4

    RMGSEN3

    RMGSEN2

    RMGSEN1

    RMGSEN0

    0x00

    GYSN4

    RGYSEN3

    RGYSEN2

    RGYSEN1

    RGYSEN0

    0x00

    CDX4

    ACDXR3

    ACDXR2

    ACDXR1

    ACDXR0

    0x00

    YDR GYDR3

    GYDR2

    GYDR1

    GYDR0

    0x00

    MDR CMDR3

    CMDR2

    CMDR1

    CMDR0

    0x00

    遺 B: 仮想レジスタのマップ REGドレスオフット )

    レジスタのアクセスタイプ

    レジスタ名 略称BIT15

    BIT14

    BIT13

    BIT12

    BIT11

    BIT10

    BIT9

    BIT8

    BIT7

    BIT6

    BIT5

    00 R/W Sensor Hub Configure

    SHC RES RES Raw Gyro EN

    Raw Mag EN

    Raw Acc EN

    RES RES Incl EN Ori EN Cmp EN

    Gyro EN

    A

    01 R Sensor List SL RES RES RES RES RES RES RES RES RES RES RES I

    02 R/W Acc Sensitivity

    ACSEN ACSEN15

    ACSEN14

    ACSEN13

    ACSEN12

    ACSEN11

    ACSEN10

    ACSEN9

    ACSEN8

    ACSEN7

    ACSEN6

    ACSEN5

    AN

    03 R/W Gyro Sensitivity

    GYSEN GYSEN15

    GYSEN14

    GYSEN13

    GYSEN12

    GYSEN11

    GYSEN10

    GYSEN9

    GYSEN8

    GYSEN7

    GYSEN6

    GYSEN5

    GN

    04 R/W Cmp Sensitivity

    CMSEN CMSEN15

    CMSEN14

    CMSEN13

    CMSEN12

    CMSEN11

    CMSEN10

    CMSEN9

    CMSEN8

    CMSEN7

    CMSEN6

    CMSEN5

    CN

    05 R/W Ori Sensitivity

    ORSEN ORSEN15

    ORSEN14

    ORSEN13

    ORSEN12

    ORSEN11

    ORSEN10

    ORSEN9

    ORSEN8

    ORSEN7

    ORSEN6

    ORSEN5

    ON

    06 R/W Incl Sensitivity

    INSEN INSEN15

    INSEN14

    INSEN13

    INSEN12

    INSEN11

    INSEN10

    INSEN9

    INSEN8

    INSEN7

    INSEN6

    INSEN5

    I4

    07 R/W Reserved - RES RES RES RES RES RES RES RES RES RES RES R

    08 R/W Reserved - RES RES RES RES RES RES RES RES RES RES RES R

    09 R/W Raw Acc Sensitivity

    RACSEN RACSEN15

    RACSEN14

    RACSEN13

    RACSEN12

    RACSEN11

    RACSEN10

    RACSEN9

    RACSEN8

    RACSEN7

    RACSEN6

    RACSEN5

    RE

    0A R/W Raw Mag Sensitivity

    RMGSEN RMGSEN15

    RMGSEN14

    RMGSEN13

    RMGSEN12

    RMGSEN11

    RMGSEN10

    RMGSEN9

    RMGSEN8

    RMGSEN7

    RMGSEN6

    RMGSEN5

    RE

    0B R/W Raw Gyro Sensitivity

    RGYSEN RGYSEN15

    RGYSEN14

    RGYSEN13

    RGYSEN12

    RGYSEN11

    RGYSEN10

    RGYSEN9

    RGYSEN8

    RGYSEN7

    RGYSEN6

    RGYSEN5

    RE

    0C R/W Acc Data Rate

    ACDXR ACDXR15

    ACDXR14

    ACDXR13

    ACDXR12

    ACDXR11

    ACDXR10

    ACDXR9

    ACDXR8

    ACDXR7

    ACDXR6

    ACDXR5

    AR

    0D R/W Gyro Data Rate

    GYDR GYDR15

    GYDR14

    GYDR13

    GYDR12

    GYDR11

    GYDR10

    GYDR9

    GYDR8

    GYDR7

    GYDR6

    GYDR5

    G4

    0E R/W Cmp Data Rate

    CMDR CMDR15

    CMDR14

    CMDR13

    CMDR12

    CMDR11

    CMDR10

    CMDR9

    CMDR8

    CMDR7

    CMDR6

    CMDR5

    C4

  • AN

    1873

    DS

    00001873A_JP

    - p. 28A

    dvance Information

    2015 M

    icrochip Technology Inc.

    R ORDR4

    ORDR3

    ORDR2

    ORDR1

    ORDR0

    0x00

    R5 INDR4 INDR3 INDR2 INDR1 INDR0 0x00

    RES RES RES RES RES 0x00RES RES RES RES RES 0x00

    D RACDR4

    RACDR3

    RACDR2

    RACDR1

    RACDR0

    0x00

    D RMGDR4

    RMGDR3

    RMGDR2

    RMGDR1

    RMGDR0

    0x00

    D RGYDR4

    RGYDR3

    RGYDR2

    RGYDR1

    RGYDR0

    0x00

    D5 ACXD4 ACXD3 ACXD2 ACXD1 ACXD0 0x00

    D5 ACYD4 ACYD3 ACYD2 ACYD1 ACYD0 0x00

    D5 ACZD4 ACZD3 ACZD2 ACZD1 ACZD0 0x00

    D5 ACXD4 ACXD3 ACXD2 ACXD1 ACXD0 0x00

    D5 ACYD4 ACYD3 ACYD2 ACYD1 ACYD0 0x00

    D5 ACZD4 ACZD3 ACZD2 ACZD1 ACZD0 0x00

    D GYXD4

    GYXD3

    GYXD2

    GYXD1

    GYXD0

    0x00

    D GYYD4

    GYYD3

    GYYD2

    GYYD1

    GYYD0

    0x00

    D5 GYZD4 GYZD3 GYZD2 GYZD1 GYZD0 0x00

    T BIT4

    BIT3

    BIT2

    BIT1

    BIT0 POR

    0F R/W Ori Data Rate

    ORDR ORDR15

    ORDR14

    ORDR13

    ORDR12

    ORDR11

    ORDR10

    ORDR9

    ORDR8

    ORDR7

    ORDR6

    ORD5

    10 R/W Incl Data Rate

    INDR INDR15

    INDR14+F32

    INDR13

    INDR12

    INDR11

    INDR10

    INDR9 INDR8 INDR7 INDR6 IND

    11 R/W Reserved - RES RES RES RES RES RES RES RES RES RES RES

    12 R/W Reserved - RES RES RES RES RES RES RES RES RES RES RES

    13 R/W Raw Acc Data Rate

    RACDR RACDR15

    RACDR14

    RACDR13

    RACDR12

    RACDR11

    RACDR10

    RACDR9

    RACDR8

    RACDR7

    RACDR6

    RACR5

    14 R/W Raw Mag Data Rate

    RMGDR RMGDR15

    RMGDR14

    RMGDR13

    RMGDR12

    RMGDR11

    RMGDR10

    RMGDR9

    RMGDR8

    RMGDR7

    RMGDR6

    RMGR5

    15 R/W Raw Gyro Data Rate

    RGYDR RGYDR15

    RGYDR14

    RGYDR13

    RGYDR12

    RGYDR11

    RGYDR10

    RGYDR9

    RGYDR8

    RGYDR7

    RGYDR6

    RGYR5

    16 R/W AccX Data ACXD ACXD15ACXD14

    ACXD13

    ACXD12

    ACXD11

    ACXD10

    ACXD9 ACXD8 ACXD7 ACXD6 ACX

    17 R/W AccY Data ACYD ACYD15ACYD14

    ACYD13

    ACYD12

    ACYD11

    ACYD10

    ACYD9 ACYD8 ACYD7 ACYD6 ACY

    18 R/W AccZ Data ACZD ACZD15ACZD14

    ACZD13

    ACZD12

    ACZD11

    ACZD10

    ACZD9 ACZD8 ACZD7 ACZD6 ACZ

    19 R/W Raw AccX Data

    RACXD ACXD15ACXD14

    ACXD13

    ACXD12

    ACXD11

    ACXD10

    ACXD9 ACXD8 ACXD7 ACXD6 ACX

    1A R/W Raw AccY Data

    RACYD ACYD15ACYD14

    ACYD13

    ACYD12

    ACYD11

    ACYD10

    ACYD9 ACYD8 ACYD7 ACYD6 ACY

    1B R/W Raw AccZ Data

    RACZD ACZD15ACZD14

    ACZD13

    ACZD12

    ACZD11

    ACZD10

    ACZD9 ACZD8 ACZD7 ACZD6 ACZ

    1C R/W GyroX Data GYXD GYXD15

    GYXD14

    GYXD13

    GYXD12

    GYXD11

    GYXD10

    GYXD9

    GYXD8

    GYXD7

    GYXD6

    GYX5

    1D R/W GyroY Data GYYD GYYD15

    GYYD14

    GYYD13

    GYYD12

    GYYD11

    GYYD10

    GYYD9

    GYYD8

    GYYD7

    GYYD6

    GYY5

    1E R/W GyroZ Data GYZD GYZD15GYZD14

    GYZD13

    GYZD12

    GYZD11

    GYZD10

    GYZD9 GYZD8 GYZD7 GYZD6 GYZ

    VREGアドレス

    ( オフセット )

    レジスタのアクセスタイプ

    レジスタ名 略称BIT15

    BIT14

    BIT13

    BIT12

    BIT11

    BIT10

    BIT9

    BIT8

    BIT7

    BIT6

    BI5

  • 2015 M

    icrochip Technology Inc.A

    dvance Information

    DS

    00001873A_JP

    - p.29

    AN

    1873

    GYX4

    RGYXD3

    RGYXD2

    RGYXD1

    RGYXD0

    0x00

    GYY4

    RGYYD3

    RGYYD2

    RGYYD1

    RGYYD0

    0x00

    GYZ4

    RGYZD3

    RGYZD2

    RGYZD1

    RGYZD0

    0x00

    MD4 CMD3 CMD2 CMD1 CMD0 0x00

    GFX4

    MGFXD3

    MGFXD2

    MGFXD1

    MGFXD0

    0x00

    GFY4

    MGFYD3

    MGFYD2

    MGFYD1

    MGFYD0

    0x00

    GFZ4

    MGFZD3

    MGFZD2

    MGFZD1

    MGFZD0

    0x00

    MGX4

    RMGXD3

    RMGXD2

    RMGXD1

    RMGXD0

    0x00

    MGY4

    RMGYD3

    RMGYD2

    RMGYD1

    RMGYD0

    0x00

    MGZ4

    RMGZD3

    RMGZD2

    RMGZD1

    RMGZD0

    0x00

    RXD ORXD3

    ORXD2

    ORXD1

    ORXD0

    0x00

    RYD ORYD3

    ORYD2

    ORYD1

    ORYD0

    0x00

    RZD ORZD3

    ORZD2

    ORZD1

    ORZD0

    0x00

    RWD ORWD3

    ORWD2

    ORWD1

    ORWD0

    0x00

    NXD4 INXD3 INXD2 INXD1 INXD0 0x00

    NYD4 INYD3 INYD2 INYD1 INYD0 0x00

    Vア

    (セ

    BIT4

    BIT3

    BIT2

    BIT1

    BIT0 POR

    1F R/W Raw GyroX Data

    RGYXD RGYXD15

    RGYXD14

    RGYXD13

    RGYXD12

    RGYXD11

    RGYXD10

    RGYXD9

    RGYXD8

    RGYXD7

    RGYXD6

    RGYXD5

    RD

    20 R/W Raw GyroY Data

    RGYYD RGYYD15

    RGYYD14

    RGYYD13

    RGYYD12

    RGYYD11

    RGYYD10

    RGYYD9

    RGYYD8

    RGYYD7

    RGYYD6

    RGYYD5

    RD

    21 R/W Raw GyroZ Data

    RGYZD RGYZD15

    RGYZD14

    RGYZD13

    RGYZD12

    RGYZD11

    RGYZD10

    RGYZD9

    RGYZD8

    RGYZD7

    RGYZD6

    RGYZD5

    RD

    22 R/W Cmp Data CMD CMD15

    CMD14

    CMD13

    CMD12

    CMD11

    CMD10

    CMD9 CMD8 CMD7 CMD6 CMD5 C

    23 R/W Mag FluxX Data

    MGFXD MGFXD15

    MGFXD14

    MGFXD13

    MGFXD12

    MGFXD11

    MGFXD10

    MGFXD9

    MGFXD8

    MGFXD7

    MGFXD6

    MGFXD5

    MD

    24 R/W Mag FluxY Data

    MGFYD MGFYD15

    MGFYD14

    MGFYD13

    MGFYD12

    MGFYD11

    MGFYD10

    MGFYD9

    MGFYD8

    MGFYD7

    MGFYD6

    MGFYD5

    MD

    25 R/W ag FluxZ Data

    MGFZD MGFZD15

    MGFZD14

    MGFZD13

    MGFZD12

    MGFZD11

    MGFZD10

    MGFZD9

    MGFZD8

    MGFZD7

    MGFZD6

    MGFZD5

    MD

    26 R/W Raw MagX Data

    RMGXD RMGXD15

    RMGXD14

    RMGXD13

    RMGXD12

    RMGXD11

    RMGXD10

    RMGXD9

    RMGXD8

    RMGXD7

    RMGXD6

    RMGXD5

    RD

    27 R/W Raw MagY Data

    RMGYD RMGYD15

    RMGYD14

    RMGYD13

    RMGYD12

    RMGYD11

    RMGYD10

    RMGYD9

    RMGYD8

    RMGYD7

    RMGYD6

    RMGYD5

    RD

    28 R/W Raw MagZ Data

    RMGZD RMGZD15

    RMGZD14

    RMGZD13

    RMGZD12

    RMGZD11

    RMGZD10

    RMGZD9

    RMGZD8

    RMGZD7

    RMGZD6

    RMGZD5

    RD

    29 R/W OriX Data ORXD ORXD15

    ORXD14

    ORXD13

    ORXD12

    ORXD11

    ORXD10

    ORXD9

    ORXD8

    ORXD7

    ORXD6

    ORXD5

    O4

    2A R/W OriY Data ORYD ORYD15

    ORYD14

    ORYD13

    ORYD12

    ORYD11

    ORYD10

    ORYD9

    ORYD8

    ORYD7

    ORYD6

    ORYD5

    O4

    2B R/W OriZ Data ORZD ORZD15

    ORZD14

    ORZD13

    ORZD12

    ORZD11

    ORZD10

    ORZD9

    ORZD8

    ORZD7

    ORZD6

    ORZD5

    O4

    2C R/W OriW Data ORWD ORWD15

    ORWD14

    ORWD13

    ORWD12

    ORWD11

    ORWD10

    ORWD9

    ORWD8

    ORWD7

    ORWD6

    ORWD5

    O4

    2D R/W InclX Data INXD INXD15INXD14

    INXD13

    INXD12

    INXD11

    INXD10

    INXD9 INXD8 INXD7 INXD6 INXD5 I

    2E R/W InclY Data INYD INYD15INYD14

    INYD13

    INYD12

    INYD11

    INYD10

    INYD9 INYD8 INYD7 INYD6 INYD5 I

    REGドレスオフット )

    レジスタのアクセスタイプ

    レジスタ名 略称BIT15

    BIT14

    BIT13

    BIT12

    BIT11

    BIT10

    BIT9

    BIT8

    BIT7

    BIT6

    BIT5

  • AN

    1873

    DS

    00001873A_JP

    - p. 30A

    dvance Information

    2015 M

    icrochip Technology Inc.

    D5 INZD4 INZD3 INZD2 INZD1 INZD0 0x00

    RES RES RES RES RES 0x00RES RES RES RES RES 0x00RES RES RES RES RES 0x00RES RES RES RES RES 0x00RES RES RES RES RES 0x00RES RES RES RES RES 0x00

    5 PID4 PID3 PID2 PID1 PID0 0x005 VID4 VID3 VID2 VID1 VID0 0x005 DID4 DID3 DID2 DID1 DID0 0x00G1 expG0 expA3 expA2 expA1 expA0 0x00

    RES expIn3 expIn2 expIn1 expIn0 0x00

    RG expRG0

    expRM3

    expRM2

    expRM1

    expRM0

    0x00

    CS expCSG0

    expCSA3

    expCSA2

    expCSA1

    expCSA0

    0x00

    RES expCSIn3

    expCSIn2

    expCSIn1

    expCSIn0

    0x00

    CS expCSRG0

    expCSRM3

    expCSRM2

    expCSRM1

    expCSRM0

    0x00

    us1

    Cmp status0

    GyroStatus1

    GyroStatus0

    AccStatus1

    AccStatus0

    0x00

    1

    Acc CS/data0

    Raw gyro Status 1

    Raw gyro Status 0

    Raw Mag Status 1

    Raw Mag Status 0

    0x00

    T BIT4

    BIT3

    BIT2

    BIT1

    BIT0 POR

    2F R/W InclZ Data INZD INZD15INZD14

    INZD13

    INZD12

    INZD11

    INZD10

    INZD9 INZD8 INZD7 INZD6 INZ

    30 R/W Reserved - RES RES RES RES RES RES RES RES RES RES RES

    31 R/W Reserved - RES RES RES RES RES RES RES RES RES RES RES

    32 R/W Reserved - RES RES RES RES RES RES RES RES RES RES RES

    33 R/W Reserved - RES RES RES RES RES RES RES RES RES RES RES

    34 R/W Reserved - RES RES RES RES RES RES RES RES RES RES RES

    35 R/W Reserved - RES RES RES RES RES RES RES RES RES RES RES

    36 R Product ID PID PID15 PID14 PID13 PID12 PID11 PID10 PID9 PID8 PID7 PID6 PID

    37 R Vendor ID VID VID15 VID14 VID13 VID12 VID11 VID10 VID9 VID8 VID7 VID6 VID

    38 R Device ID DID DID15 DID14 DID13 DID12 DID11 DID10 DID9 DID8 DID7 DID6 DID

    39 R Exponent1 exp1 expO expO expO expO expC3 expC2 expC1 expC0 expG3 expG2 exp

    3A R Exponent2 exp2 expRA3

    expRA2

    expRA1

    expRA0

    RES RES RES RES RES RES RES

    3B R Exponent3 exp3 Res Res Res Res Res Res Res Res expRG3

    expRG2

    exp1

    3C R ExponentCS1

    expCSs1 expCSsO

    expCSO

    expCSO

    expCSO

    expCSC3

    expCSC2

    expCSC1

    expCSC0

    expCSG3

    expCSG2

    expG1

    3D R ExponentCS2

    expCS2 expCSRA3

    expCSRA2

    expCSRA1

    expCSRA0

    RES RES RES RES RES RES RES

    3E R ExponentCS3

    expCS3 Res Res Res Res Res Res Res Res expCSRG3

    expCSRG2

    expRG1

    3F R/W Status 1 stat1 Raw Acc status 1

    Raw Acc status 0

    RES RES RES RES Inc status1

    Inc status0

    Ori status1

    Ori status0

    Cmpstat

    40 R/W Status 2 stat2 Ori CS/data2

    Ori CS/data1

    Ori CS/data0

    Cmp CS/data2

    Cmp CS/data1

    Cmp CS/data0

    Gyro CS/data2

    Gyro CS/data1

    Gyro CS/data0

    Acc CS/data2

    AccCS/data

    VREGアドレス

    ( オフセット )

    レジスタのアクセスタイプ

    レジスタ名 略称BIT15

    BIT14

    BIT13

    BIT12

    BIT11

    BIT10

    BIT9

    BIT8

    BIT7

    BIT6

    BI5

  • 2015 M

    icrochip Technology Inc.A

    dvance Information

    DS

    00001873A_JP

    - p.31

    AN

    1873

    ES RES Incl CS/data2

    Incl CS/data1

    Incl CS/data0

    0x00

    M tart tatus1

    MMStart status0

    Raw Mag CS/data2

    Raw Mag CS/data1

    Raw Mag CS/data0

    0x00

    Vア

    (セ

    BIT4

    BIT3

    BIT2

    BIT1

    BIT0 POR

    41 R/W Status 3 stat3 RES Raw Mag CS/data2

    Raw Mag CS/data1

    Raw Mag CS/data0

    Raw Acc CS/data2

    Raw Acc CS/data1

    Raw Acc CS/data0

    RES RES RES RES R

    42 R/W Status 4 stat4 RES RES RES RES RES RES MM sleep /wake status2

    MM sleep /wake status1

    MM sleep /wake status0

    MM Reset status1

    MM Reset status0

    MSs

    REGドレスオフット )

    レジスタのアクセスタイプ

    レジスタ名 略称BIT15

    BIT14

    BIT13

    BIT12

    BIT11

    BIT10

    BIT9

    BIT8

    BIT7

    BIT6

    BIT5

  • AN1873

    補遺 C: アプリケーション ノート改訂履歴

    表 C-1: 改訂履歴

    リビジョンレベル / 日付 セクション / 図 / 項目 改訂内容

    DS00001873A_JP (2014 年 12 月 22 日 ) 本書は初版です。

    DS00001873A_JP - p.32 Advance Information 2015 Microchip Technology Inc.

  • Microchip 社製デバイスのコード保護機能に関して以下の点にご注意ください。• Microchip 社製品は、該当する Microchip 社データシートに記載の仕様を満たしています。

    • Microchip 社では、通常の条件ならびに仕様に従って使用した場合、Microchip 社製品のセキュリティ レベルは、現在市場に流通している同種製品の中でも最も高度であると考えています。

    • しかし、コード保護機能を解除するための不正かつ違法な方法が存在する事もまた事実です。弊社の理解では、こうした手法は Microchip 社データシートにある動作仕様書以外の方法で Microchip 社製品を使用する事になります。このような行為は知的所有権の侵害に該当する可能性が非常に高いと言えます。

    • Microchip 社は、コードの保全性に懸念を抱いているお客様と連携し、対応策に取り組んでいきます。

    • Microchip 社を含む全ての半導体メーカーで、自社のコードのセキュリティを完全に保証できる企業はありません。コード保護機能とは、Microchip 社が製品を「解読不能」として保証するものではありません。

    コード保護機能は常に進歩しています。Microchip 社では、常に製品のコード保護機能の改善に取り組んでいます。Microchip 社のコード保護機能の侵害は、デジタル ミレニアム著作権法に違反します。そのような行為によってソフトウェアまたはその他の著作 物に不正なアクセスを受けた場合、デジタル ミレニアム著作権法の定めるところにより損害賠償訴訟を起こす権利があります。

    本書に記載されているデバイス アプリケーション等に関する 情報は、ユーザの便宜のためにのみ提供されているものであ

    り、更新によって無効とされる事があります。お客様のアプ

    リケーションが仕様を満たす事を保証する責任は、お客様に

    あります。Microchip 社は、明示的、暗黙的、書面、口頭、法定のいずれであるかを問わず、本書に記載されている情報に

    関して、状態、品質、性能、商品性、特定目的への適合性を

    はじめとする、いかなる類の表明も保証も行いません。

    Microchip 社は、本書の情報およびその使用に起因する一切の責任を否認します。生命維持装置あるいは生命安全用途に

    Microchip 社の製品を使用する事は全て購入者のリスクとし、また購入者はこれによって発生したあらゆる損害、クレーム、

    訴訟、費用に関して、Microchip 社は擁護され、免責され、損害を受けない事に同意するものとします。暗黙的あるいは明

    示的を問わず、Microchip 社が知的財産権を保有しているライセンスは一切譲渡されません。

    2015 Microchip Technology Inc. Advance Info

    QUALITY MANAGEMENT SYSTEM CERTIFIED BY DNV

    == ISO/TS 16949 ==

    商標

    Microchip 社の名称とロゴ、Microchipロゴ、dsPIC、FlashFlex、KEELOQ、KEELOQ ロゴ、MPLAB、PIC、PICmicro、PICSTART、PIC32 ロゴ、rfPIC、SST、SST ロゴ、SuperFlash、UNI/O は、米国およびその他の国におけるMicrochip Technology Incorporated の登録商標です。

    FilterLab、Hampshire、HI-TECH C、Linear Active Thermistor、 MTP、SEEVAL、Embedded Control Solutions Company は、 米国におけるMicrochip Technology Incorporatedの登録商標 です。

    Silicon Storage Technology は、他の国における Microchip Technology Inc. の登録商標です。

    Analog-for-the-Digital Age、Application Maestro、BodyCom、 chipKIT、chipKIT ロゴ、CodeGuard、dsPICDEM、dsPICDEM.net、dsPICworks、dsSPEAK、ECAN、ECONOMONITOR、FanSense、HI-TIDE、In-Circuit Serial Programming、ICSP、 Mindi、MiWi、MPASM、MPF、MPLAB Certified ロゴ、MPLIB、 MPLINK、mTouch、Omniscient Code Generation、PICC、 PICC-18、PICDEM、PICDEM.net、PICkit、PICtail、REAL ICE、 rfLAB、Select Mode、SQl、Serial Quad I/O、Total Endurance、 TSHARC、UniWinDriver、WiperLock、ZENA および Z-Scaleは、米国およびその他の Microchip Technology Incorporated の商標です。

    SQTP は、米国における Microchip Technology Incorporated のサービスマークです。

    GestIC および ULPP は、Microchip Technology Inc. の子会社 である Microchip Technology Germany II GmbH & Co. & KG 社 の他の国における登録商標です。

    その他本書に記載されている商標は各社に帰属します。

    © 2015, Microchip Technology Incorporated, All Rights Reserved.

    ISBN: 978-1-63277-300-5

    rmation DS00001873A_JP - p.33

    Microchip 社では、Chandler および Tempe ( アリゾナ州 )、Gresham ( オレゴン州 ) の本部、設計部およびウェハー製造工場そしてカリフォルニア州とインドのデザインセンターが ISO/TS-16949:2009 認証を取得しています。Microchip 社の品質システム プロセスおよび手順は、PIC® MCU および dsPIC® DSC、KEELOQ® コード ホッピング デバイス、シリアル EEPROM、マイクロペリフェラル、不揮発性メモリ、アナログ製品に採用されています。さらに、開発システムの設計と製造に関する Microchip 社の品質システムは ISO 9001:2000 認証を取得しています。

  • DS00001873A_JP - p.34 Advance Information 2015 Microchip Technology Inc.

    北米本社2355 West Chandler Blvd.Chandler, AZ 85224-6199Tel: 480-792-7200 Fax: 480-792-7277技術サポート : http://www.microchip.com/supportURL: www.microchip.comアトランタDuluth, GA Tel: 678-957-9614 Fax: 678-957-1455オースティン、TXTel: 512-257-3370 ボストンWestborough, MATel: 774-760-0087 Fax: 774-760-0088シカゴItasca, ILTel: 630-285-0071 Fax: 630-285-0075クリーブランドIndependence, OHTel: 216-447-0464Fax: 216-447-0643ダラスAddison, TXTel: 972-818-7423 Fax: 972-818-2924デトロイトNovi, MI Tel: 248-848-4000ヒューストン、TXTel: 281-894-5983インディアナポリスNoblesville, INTel: 317-773-8323Fax: 317-773-5453ロサンゼルスMission Viejo, CATel: 949-462-9523 Fax: 949-462-9608ニューヨーク、NY Tel: 631-435-6000サンノゼ、CATel: 408-735-9110カナダ - トロントTel: 905-673-0699 Fax: 905-673-6509

    アジア / 太平洋アジア太平洋支社Suites 3707-14, 37th FloorTower 6, The GatewayHarbour City, KowloonHong KongTel: 852-2943-5100Fax: 852-2401-3431オーストラリア - シドニーTel: 61-2-9868-6733Fax: 61-2-9868-6755中国 - 北京Tel: 86-10-8569-7000Fax: 86-10-8528-2104中国 - 成都Tel: 86-28-8665-5511Fax: 86-28-8665-7889中国 - 重慶Tel: 86-23-8980-9588Fax: 86-23-8980-9500中国 - 杭州Tel: 86-571-8792-8115Fax: 86-571-8792-8116中国 - 香港 SARTel: 852-2943-5100 Fax: 852-2401-3431中国 - 南京Tel: 86-25-8473-2460Fax: 86-25-8473-2470中国 - 青島Tel: 86-532-8502-7355Fax: 86-532-8502-7205中国 - 上海Tel: 86-21-5407-5533Fax: 86-21-5407-5066中国 - 瀋陽Tel: 86-24-2334-2829Fax: 86-24-2334-2393中国 - 深圳Tel: 86-755-8864-2200 Fax: 86-755-8203-1760中国 - 武漢Tel: 86-27-5980-5300Fax: 86-27-5980-5118中国 - 西安Tel: 86-29-8833-7252Fax: 86-29-8833-7256中国 - 厦門Tel: 86-592-2388138 Fax: 86-592-2388130中国 - 珠海Tel: 86-756-3210040 Fax: 86-756-3210049

    アジア / 太平洋インド - バンガロールTel: 91-80-3090-4444 Fax: 91-80-3090-4123インド - ニューデリーTel: 91-11-4160-8631Fax: 91-11-4160-8632インド - プネTel: 91-20-3019-1500日本 - 大阪Tel: 81-6-6152-7160Fax: 81-6-6152-9310日本 - 東京Tel: 81-3-6880-3770 Fax: 81-3-6880-3771韓国 - 大邱Tel: 82-53-744-4301Fax: 82-53-744-4302韓国 - ソウルTel: 82-2-554-7200Fax: 82-2-558-5932 または82-2-558-5934マレーシア - クアラルンプールTel: 60-3-6201-9857Fax: 60-3-6201-9859マレーシア - ペナンTel: 60-4-227-8870Fax: 60-4-227-4068フィリピン - マニラTel: 63-2-634-9065Fax: 63-2-634-9069シンガポールTel: 65-6334-8870Fax: 65-6334-8850台湾 - 新竹Tel: 886-3-5778-366Fax: 886-3-5770-955台湾 - 高雄Tel: 886-7-213-7830台湾 - 台北Tel: 886-2-2508-8600 Fax: 886-2-2508-0102タイ - バンコクTel: 66-2-694-1351Fax: 66-2-694-1350

    ヨーロッパオーストリア - ヴェルスTel: 43-7242-2244-39Fax: 43-7242-2244-393デンマーク - コペンハーゲンTel: 45-4450-2828 Fax: 45-4485-2829フランス - パリTel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79ドイツ - デュッセルドルフTel: 49-2129-3766400 ドイツ - ミュンヘンTel: 49-89-627-144-0 Fax: 49-89-627-144-44ドイツ - プフォルツハイムTel: 49-7231-424750 イタリア - ミラノ Tel: 39-0331-742611 Fax: 39-0331-466781イタリア - ヴェニスTel: 39-049-7625286 オランダ - ドリューネンTel: 31-416-690399 Fax: 31-416-690340ポーランド - ワルシャワTel: 48-22-3325737 スペイン - マドリッドTel: 34-91-708-08-90Fax: 34-91-708-08-91スウェーデン - ストックホルムTel: 46-8-5090-4654イギリス - ウォーキンガムTel: 44-118-921-5800Fax: 44-118-921-5820

    各国の営業所とサービス

    03/25/14

    http://www.microchip.com/supporthttp://www.microchip.com

    MM7150モーション モジュール向けホストAPI設計各国の営業所とサービス