AN1873

AN1873
Host API Design for MM7150 Motion Module
Author:
Tom Tse / Arjun M. Das
Microchip Technology Inc.
INTRODUCTION
This application note provides detailed design information regarding how to write application firmware to access the
MM7150 motion module’s data by using the defined API (application programming interface) and virtual registers.
This specification and design is also used in the MM7150 with Explorer 16 (PIC24FJ) development board’s Sensor
Fusion Sample Code, which is available to customers.
Audience
This document is written for developers who have a background in embedded controller firmware development, as well
as basic knowledge of the HID over I2C protocol.
References
The following documents should be referenced when using this application note. Please contact your Microchip representative for availability.
•
•
•
•
Microsoft HID over I2C protocol specification, v1.0 on April 24, 2012 (available on msdn.microsoft.com)
HID Sensor Usage Tables (Request #: HUTRR39, available on usb.org)
Microchip 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 or later
Glossary of Terms and AcronymsHost API Design for MM7150 Motion Module
This section describes glossary terms and acronyms used in this document.
TABLE 1-1:
GLOSSARY
Term
HID
Definition
Human Interface Device
I2C
Inter-Integrated Circuit
HOST
Refers to the application processor in the embedded systems that is used to communicate to the MM7150, which is PIC24FJ128GA010 in the Exp 16 sample code
Device / EC
Refers to the MM7150 Motion Module or the SSC7150 Sensor Hub Device
VREG
Virtual Registers
Acc, Mag, Gyro
Accelerometer, Magnetometer, Gyroscope (physical sensors)
Ori, Incl, Cmp
Orientation, Inclinometer, Compass (virtual sensors)
SF
Sensor Fusion
 2014 Microchip Technology Inc.
Advance Information
DS00001873A-page 1
AN1873
1.0
SYSTEM OVERVIEW
Host space will be divided into two separate entities:
• Host user space
• Host SF lib (library) space
FIGURE 1-1:
User Space
HOST LAYOUT
SF Lib Space
Host applications should reside in the Host user space, and the SF related infrastructure should reside in the SF lib
space. Any host application can make use of the host SF lib through read/write of virtual registers. The virtual registers
are the uppermost layer of Host SF lib that is exposed to the user application, which eventually drives down through all
the layers of host SF lib.
FIGURE 1-2:
Host User Space
User
Application
DS00001873A-page 2
HOST DEVICE LAYOUT
Host SF Lib Space
V
Read/Write R
E
G
VREG
to
HID/I2C
Translation
HID/I2C
Parser
2
I C/
SMBus
Driver
Advance Information
I2C CLK/DAT
Alert Line
Wake Up
MM7150
Motion
Module
 2014 Microchip Technology Inc.
AN1873
2.0
HOST SF LIB FEATURES
This section provides the summary table to describe all the features that are currently supported or will be supported in
the Host SF Library.
TABLE 2-1:
HOST SF LIB FEATURES
Features
Descriptions
2
Reset
Supports HID/I C reset command of MM7150 module, also resets the virtual registers.
Sensor Hub Enable
Enables the sensor hub.
Sensor Hub Sleep
When enabled, enters D3 deepest sleep state.
Sensor List
Lists the sensors supported in the MM7150 motion module.
Sensor Sensitivity
Sensitivity of sensors.
Sensor Data Rate/SPS
Rate at which the sensor can update data (Report Interval).
Sensor Enable
Enables reporting from sensor.
Sensor Data
Read data from an enabled sensor.
PID,VID,DID
Read the various IDs.
Vendor Collection
Reads MM7150 Firmware ID, update sensor coefficients, update configuration file, and
supports flash update.
 2014 Microchip Technology Inc.
Advance Information
DS00001873A-page 3
AN1873
3.0
HOST SF LIB
Host SF lib space is comprised of the following four layers:
•
•
•
•
Virtual Register layer
VREG to HID translation layer
HID/I2C parser layer
I2C/SMBus driver layer
The various layers are depicted below.
3.1
Virtual Registers
Virtual registers are 16-bit registers implemented in RAM which can be accessed by the User application to configure
and read/write the MM7150 motion module.
TABLE 3-1:
DEFINITION TERMS USED IN VIRTUAL REGISTERS
Term / Acronym
Definition
R
“R” is an access type. It is used to indicate if a register or bit is read-only. Bits and registers that are read-only return the current value in the register when read. Reading or writing the bits or registers has no effect on the value.
W
“W” is an access type. It is used to indicate if a register or bit is write-only. Bits and registers that are write-only can only be written to. Reading the bits or registers returns 0.
R/W
“R/W” is an access type. It is used to indicate if a register or bit is read-write. Bits and registers that are read-write return the current value in the register when read. Writing a
value will cause the register or bit to be updated. Reading the bits or registers has no
effect on the value.
Some characteristics of the virtual registers are:
•
•
•
•
Writing the same value again to a VREG has no effect.
Some VREGs have auto-clearing bits i.e., the bits are automatically cleared after the operation is completed.
VREG strictly follows the access type.
Many of the VREGs have corresponding bits in an associated status registers to indicate if the operation corresponding to a VREG write has been successful.
• Some VREGs are valid only if that particular sensor is available on the module (Sensor List register); otherwise
those related registers are reserved.
Please see the Appendix B: "Virtual registers map" for details information.
3.1.1
REGISTER DESCRIPTION
3.1.1.1
Register 00h: Sensor Hub Configuration (SHC)
- Access Type: R/W
- POR Default: 0x0001
TABLE 3-2:
VREG - 00H
BIT15
BIT14
BIT13
RES
RES
Raw Gyro
EN
BIT7
BIT6
BIT5
BIT4
Ori EN
Cmp EN
Gyro EN
Acc EN
DS00001873A-page 4
BIT12
BIT11
BIT10
BIT9
BIT8
RES
RES
Incl EN
BIT3
BIT2
BIT1
BIT0
MM_Reset
MM_Start
MM_Sleep
MM_Wake
Raw Mag EN Raw Acc EN
Advance Information
 2014 Microchip Technology Inc.
AN1873
TABLE 3-3:
VREG - 00H BITS DESCRIPTION
Bits
Description
0 - MM_Wake
This bit is set by default. It is cleared automatically when sleep bit is set. It has to be set to
wake up the host from sleep.
1 - MM_Sleep
By setting this bit, the MM7150 motion module enters D3 deepest sleep state. To wake
from this sleep, the HOST SF Lib must issue a wake signal by setting MM_Wake bit 0.
This is a self-clearing bit. Any other combination of bits other than what is given in the
below table, do not set or clear this register.
• MM_Wake = 1, MM_Sleep = 0, MM7150 is Active
• MM_Wake = 0, MM_Sleep = 1, MM7150 is Sleep
This bit is effective, only if all sensors are disabled. If any sensor is enabled, this bit cannot be set.
If this bit is set and the operation is successful (status register), then the next VREG write
must be to set MM_Wake. If any other VREG write is issued instead of setting MM_Wake
after MM_Sleep, then that VREG write is ignored.
2 - MM_Start
This bit must be set before any sensor is enabled. It can be set only once, after POR. This
bit must be set in HOST SF lib initialization. It is only cleared on POR. This bit is required
to start the sensor hub. If this bit is not enabled, the sensor enable bits cannot be set. This
bit should not be set by user application and should always read as “1” for the user application.
3 - MM_Reset
On setting this bit, the HOST SF lib issues a HID/I2C reset. This also resets the SHC
(except MM_Start), Sensitivity, data rate and data virtual registers to POR values. This is
an auto clearing bit.
4 - Acc EN
On setting this bit, the Acc is enabled. Its data can be read from the Acc data register.
5 - Gyro EN
On setting this bit, the Gyro is enabled. Its data can be read from the Gyro data register.
6 - Cmp EN
On setting this bit, the Cmp is enabled. Its data can be read from the Cmp data register.
7 - Ori EN
On setting this bit, the Ori is enabled. Its data can be read from the Ori data register.
8 - Incl EN
On setting this bit, the Incl is enabled. Its data can be read from the Incl data register.
9, 10 - RES
Reserved bits for future use.
11 - Raw Acc EN
On setting this bit, the user is enabled to read raw data of Acc from the raw Acc data register
12 - Raw Gyro EN
On setting this bit, the user is enabled to read raw data of Gyro from the raw Gyro data
register
13 - Raw Mag EN
On setting this bit, the user is enabled to read raw data of Mag from the raw Mag data register.
14, 15- RES
Reserved bits for future use
Note:
Raw sensors require their corresponding physical / virtual sensors to be enabled. Please refer to
Section 3.2.2.1 “Register 00h: Sensor Hub Config (SHC)” for more information.
 2014 Microchip Technology Inc.
Advance Information
DS00001873A-page 5
AN1873
3.1.1.2
Register 01h: Sensor List (SL)
- Access Type: R
- POR Default: 0x0000
TABLE 3-4:
VREG - 01H
BIT15
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
This SL Register is used to track all the sensors (physical and virtual) available in the sensor hub solution. For instance
if BIT0 is set, then Acc sensor is available in the sensor Hub solution. If a sensor’s corresponding bit is not set in the SL
register, it indicates that the particular sensor is not present on the Sensor Hub and all the registers and bits related to
that sensor becomes reserved and not accessible by user.
Note:
3.1.1.3
The SL register is populated after the MM_Start bit is set in SHC register.
Register 02h-0Bh: xxxx Sensitivity
- Access Type: R/W
- POR Default: 0x0000
Registers from offset 02h-0Bh are used to set the sensitivity of each respective sensor. For instance ACSEN (Acc Sensitivity) register is used to set the sensitivity of the Acc sensor. This register can be read to identify the current Sensitivity
of the sensor.
3.1.1.4
Register 0Ch-15h: xxxx Data Rate
- Access Type: R/W
- POR Default: 0x0000
Registers from offset 0Ch-15h are used to set the Data Rate of each respective sensor in milliseconds. The minimum
report interval supported is 10 milliseconds. For instance, the ACDR Register is used to set the data rate or report interval for the Accelerometer sensor. In order to get a data sample every 30 milliseconds, this register must be set to
0x001E. This register can be read to identify the current Data Rate /Report interval of the desired sensor.
3.1.1.5
Register 16h-35h: xxxx Data
- Access Type: R
- POR Default: 0x0000
Registers from offset 16h-35h are used to get the Data of each respective sensor. Sensor Data can be read only if the
sensor is enabled in the SHC register. Sensor data is updated based on the default report interval supported by the
sensor or the user modified report interval; the report interval will be available in the data rate registers. It should be
noted that the user application must read the data of a sensor in ascending order of the register offsets. For instance
Accelerometer has 3 data registers – AccX, AccY,AccZ, these registers must be read in the order AccX, AccY and then
AccZ. If the sensors are disabled, these registers are cleared.
Note:
3.1.1.6
Mag FluxX Data, Mag FluxY Data, Mag FluxZ Data registers are updated when compass is enabled.
Register 36h: Product ID
- Access Type: R
- POR Default: 0x0000
This register provides the product ID of the device. This register is populated after the MM_Start bit is set in SHC register
and is cleared only on POR.
DS00001873A-page 6
Advance Information
 2014 Microchip Technology Inc.
AN1873
3.1.1.7
Register 37h: Vendor ID
- Access Type: R
- POR Default: 0x0000
This register provides the product ID of the device. This register is populated after the MM_Start bit is set in SHC register
and is cleared only on POR.
3.1.1.8
Register 38h: Device ID
- Access Type: R
- POR Default: 0x0000
This register provides the product ID of the device. This register is populated after the MM_Start bit is set in SHC register
and is cleared only on POR.
3.1.1.9
Register 39-3Eh: Exponents
- Access Type: R
- POR Default: 0x0000
Registers 0x39-0x3B gives the unit exponent value of each sensor’s data register.
Registers 0x3A-0x3E gives the unit exponent value of each sensor’s sensitivity register.
TABLE 3-5:
EXPONENTS REGISTER BITS DEFINITION
Registers
Exponent1(0x39)
Exponent2(0x3A)
Exponent3(0x3B)
ExponentCS1(0x3C)
ExponentCS2(0x3D)
ExponentCS3(0x3E)
 2014 Microchip Technology Inc.
Bits
Sensors
0-3
Acc data exponent value
4-7
Gyro data exponent value
8-11
Cmp data exponent value
12-15
Ori data exponent value
0-3
Incl data exponent value
4-11
Reserved
12-15
Raw Acc data exponent value
0-3
Raw Mag data exponent value
4-7
Raw Gyro data exponent value
8-15
Reserved
0-3
Acc sensitivity exponent value
4-7
Gyro sensitivity exponent value
8-11
Cmp sensitivity exponent value
12-15
Ori sensitivity exponent value
0-3
Incl sensitivity exponent value
4-11
Reserved
12-15
Raw Acc sensitivity exponent value
0-3
Raw Mag sensitivity exponent value
4-7
Raw Gyro sensitivity exponent value
8-15
Reserved
Advance Information
DS00001873A-page 7
AN1873
TABLE 3-6:
UNIT EXPONENT ENCODING AND MEANINGS
Value
Exponent
0x00
Power of Ten
1x10E0
1
0x01
1x10E1
10
0x02
1x10E2
100
0x03
1x10E3
1 000
0x04
1x10E4
10 000
0x05
1x10E5
100 000
0x06
1x10E6
1 000 000
0x07
1x10E7
10 000 000
0x08
1x10E-8
0.00 000 001
0x09
1x10E-7
0.0 000 001
0x0A
1x10E-6
0.000 001
0x0B
1x10E-5
0.00 001
0x0C
1x10E-4
0.0 001
0x0D
1x10E-3
0.001
0x0E
1x10E-2
0.01
0x0F
1x10E-1
0.1
3.1.1.10
Register 3F-42h: xxxx Status
- Access Type: R/W
- POR Default: 0x0000
These registers are used to give the status of operation supported in SHC/xxxx sensitivity/xxxx Data rate registers. It
will indicate whether the intended operation has been completed or if there has been an error. There are 4 status registers in all. All the status registers have the same sequence to clear the status. Once the status is cleared, the VREG
operation is repeated again.
3.1.1.11
Register 3F: Status 1, Register 40: Status 2 Bit0-Bit3
These bits hold the status for sensor enable bits in SHC register. 2 Bits are allocated for every sensor enable bit. The
status register can be cleared only when they hold a sensor enable/disable failed status or after a reset. The 2 bits indicate the following status:
TABLE 3-7:
STATUS OF SENSORS ENABLE
xxxx status1
xxxx status0
0
0
Clear status register
0
1
Sensor enable successful
1
0
Sensor disable successful
1
1
Sensor enable/disable failed
DS00001873A-page 8
Description
Advance Information
 2014 Microchip Technology Inc.
AN1873
3.1.1.12
Register 40: Status 2 Bit4-Bit15, Register 41-42: Status 3, 4
The status 2, 3, 4 registers also hold the status bits for Sensor sensitivity change and sensor data rate VREG. 3 bits are
allocated for every sensor‘s sensitivity and data rate register. The 3 bits indicate the following status:
TABLE 3-8:
STATUS OF SENSORS DATA RATE AND SENSITIVITY CHANGES
xxxx CS/Data2
(Error bit)
xxxx CS/Data1
(Data rate bit)
xxxx CS/Data0
(Sensitivity bit)
0
0
0
Clear Data rate status bits.
0
1
0
Update Data rate successful
0
0
1
Update sensitivity successful
0
1
1
Both data rate and sensitivity update successful
1
0
0
Clear Sensitivity status bits.
1
1
0
Update Data rate error
1
0
1
Update sensitivity error
1
1
1
Both data rate and sensitivity error
3.1.1.13
Description
Register 42: Bit 3-6
The bits 3 and 4 have status for the MM_Start bit in the SHC register. The following table indicates the status:
TABLE 3-9:
STATUS OF MM_START BIT
MM_Start status1
MM_Start status0
Description
0
0
Clear status register
0
1
MM_Start successful
1
0
Don’t care
1
1
MM_Start error
Similarly, bits 5 and 6 have status for the reset bit in the SHC register. The following table indicates the status:
:
TABLE 3-10:
STATUS OF MM_RESET BIT
MM_Reset status1
MM_Reset status0
0
0
0
1
MM_Reset successful
1
0
Don’t care
1
1
MM_Reset error
3.1.1.14
Description
Clear status register
Register 42: Bit 7-9
3 bits are allocated for MM_Sleep and MM_Wake up. The 3 bits indicate the following status:
TABLE 3-11:
STATUS OF MM_SLEEP & MM_WAKE BITS
xxxx CS/Data2
(Error bit)
xxxx CS/Data1
(SH wake bit)
0
0
0
Clear MM_Wake status bits
0
1
0
MM_Wake successful
0
0
1
MM_Sleep successful
0
1
1
Don’t care
1
0
0
Clear MM_Sleep status bits.
1
1
0
MM_Wake error
1
0
1
MM_Sleep error
1
1
1
Don’t care
 2014 Microchip Technology Inc.
xxxx CS/Data0
(SH sleep bit)
Description
Advance Information
DS00001873A-page 9
AN1873
3.1.2
VREG ACCESS
Two APIs will be available to the user for all the VREGs in the VREG map. These APIs are:
• HOST_SF_Lib_VREG_write
• HOST_SF_Lib_VREG_read
3.1.2.1
Function Prototype
UINT8 HOST_SF_LIB_VREG_read (UINT8 offset, UINT16* data)
Function to read the content of virtual registers
Where
offset
 offset is the offset/register address of the virtual register
data*
 data is the pointer to which the VREG data is read into.
return
 Returns 0 if success, else returns Error code
UINT8 HOST_SF_LIB_VREG_write (UINT8 offset, UINT16 data)
Function to queue the write request to virtual registers
Where
offset
 offset is the offset/register address of the virtual register
data
 data is the content that has to be written to the VREG
return
 Returns 0 if success, else returns Error code
Note:
3.1.2.2
Both VREG_write and VREG_read are non-blocking calls.
VREG Write mechanism
Any user application can issue a VREG write with a desired 2 byte value. On success, the 2 byte value is written to the
selected VREG. If the write is not successful, an error code is returned. However a VREG write success does not indicate that the desired operation is successful. The status bits of the status VREG give the status of the VREG related
operations.
3.1.2.3
VREG Read Mechanism
Every time an application issues a VREG read, it is immediately serviced by HOST SF Lib and the registers two byte
value is returned. Only for the data registers, the register needs to be read in ascending order of their offsets for a particular sensor.
3.1.2.4
VREG Write/Read Error Codes
TABLE 3-12:
VREG ERROR CODE
Error Codes
Description
0x00
Success
0x01
Error in access type
0x02
Unrecognized VREG offset
DS00001873A-page 10
Advance Information
 2014 Microchip Technology Inc.
AN1873
3.1.3
VREG INITIALIZATION (HOST SF LIB INITIALIZATION)
The following sequence of operations must be done during initialization of SF lib:
•
•
•
•
•
Configure the I2C CLK and Data lines
Configure the GPIO interrupt attention line
Configure the GPIO wake up line
Initialize all the virtual registers
Set MM_Start bit in SHC register (this bit must be set by Host SF lib init)
Initialization process will require up to ~5s since HID/I2C reset of the device can take up to 5s as per HID/
I2C spec.
Note:
3.2
VREG to HID translation
Every virtual register setting needs to be handled and most of them translate directly or indirectly into a HID/I2C packet.
This section gives an overview on how to access these registers. It also provides information on the HID translation
required for each Bit/Registers provided in the VREG map.
TRANSLATION OF VIRTUAL REGISTERS TO HID/I2C PROTOCOL
3.2.1
The translation of HID/I2C protocol with respect to virtual register content is carried out under this topic. The virtual registers can be divided into two categories based on HID/I2C back-end support:
• Command request based
• Device data reading based
3.2.2
COMMAND REQUEST BASED
The Virtual Registers that come under this category are based on Class specific requests (as per HID/I2C spec). The
registers are:
• Sensor Hub Configuration Register
• Sensor Sensitivity Registers
• Sensor Data Rate Registers
3.2.2.1
Register 00h: Sensor Hub Config (SHC)
TABLE 3-13:
Bits
MM_Wake
SENSOR HUB CONFIGURATION OPERATIONS
HID/I2C requests sequence
When this bit is set, the HOST SF LIB
needs to issue wake signal, and wait for
11ms and send the following HID/I2C
request sequence:
1. SET POWER (ON)
Note:
MM_Sleep
 2014 Microchip Technology Inc.
The following actions are to be taken:
1. After successful wake up, BIT1 (MM_Sleep bit)
of this register must be cleared.
Wait for another 30ms before
sending other command to
Motion Module
When this bit is set, HOST SF LIB must
send the following HID/I2C request:
1. SET POWER (SLEEP)
Note:
Action to be taken before/after the HID requests
This bit is effective, only if all sensors are disabled. If
any sensor is enabled, then this bit is not valid and
will abort the operation that is trying to set it.
Wait for 70ms after sleep command is sent before issuing the
wake signal.
Advance Information
DS00001873A-page 11
AN1873
TABLE 3-13:
SENSOR HUB CONFIGURATION OPERATIONS (CONTINUED)
HID/I2C requests sequence
Bits
2
Action to be taken before/after the HID requests
MM_Start
HID/I C request sequences:
1. Get HID descriptor
2. SET POWER (ON)
3. RESET
4. Get Report descriptor
5. Get Feature Report for all available
sensors
If step 1 fails, the operation is aborted
immediately with an error. If step 4 fails, the
operation is returned with an error.
The following actions are to be taken:
1. Parse HID descriptor
• Retrieve max input report length
• Retrieve register addresses of report descriptor,
request register and data register
• Retrieve length of report descriptor
2. Parse Report descriptor
• Retrieve the sensors available and populate
sensor list (VREG) accordingly
• Identify the report IDs of various sensors
• Retrieve the sizes of all feature reports
• Identify the offset of sensor data field in input
report
• Identify the offset of default sensitivity and data
rate in the feature reports
3. Parse Feature Reports
• Retrieve the default sensitivity and data rate of
all sensors and populate the appropriate sensor’s data rate and sensitivity virtual registers
with the retrieved values
• Get the exponent values of all sensors and populate the sensor exponent virtual registers
MM_Reset
When this bit is set, HOST SF LIB must
send the following HID/I2C request:
1. RESET
If step 1 fails, the operation is aborted with
an error.
The following actions are to be taken:
1. On a successful reset, this bit is cleared
2. The Sensitivity, data rate and status virtual registers need to be reset to POR values except
MM_Start status bits
3. All the bits in the SHC must be cleared, since
on reset all sensors are disabled except
MM_Start bit
DS00001873A-page 12
Advance Information
 2014 Microchip Technology Inc.
AN1873
TABLE 3-13:
SENSOR HUB CONFIGURATION OPERATIONS (CONTINUED)
HID/I2C requests sequence
Bits
Acc EN
Gyro EN
Cmp EN
Ori EN
Incl EN
Raw Acc EN
Raw Gyro EN
Raw Mag EN
When any of these bits are set, HOST SF
LIB must send the following HID/I2C
request:
1. GET FEATURE REPORT
2. SET FEATURE REPORT
• Set sensor power state to HID_USAGE_SENSOR_PROPERTY_POWER_STATE_D0_-
Action to be taken before/after the HID requests
The following actions are to be taken:
1. Issue the get feature report with the appropriate report ID for the chosen sensor
2. The feature report length must also be
obtained from the report descriptor
3. Only if this bit is set, the sensor data virtual register must be readable
FULL_POWER_ENUM
• Set sensor reporting state to
HID_USAGE_SENSOR_PROPERTY_REPORTING_STATE_ALL_EVENTS_ENUM
3. SET FEATURE REPORT
If step 1,2 or 3 fails, the operation is aborted
with an error. Feature report set in step 2,
must be same as what is received in step 3,
else steps 2 and 3 needs to be repeated upto 3 times. If the command sequence still
fails, return with an error.
If this bit is cleared, do the same operation
as above but in step 2 set sensor power
state to HID_USAGE_SENSOR_PROPERTY_POWER_STATE_D1_LOW_POWER_ENUM
RES
Reserved bits for future use
In addition to the above table, for any raw sensor to be enabled properly, the corresponding sensors given below must
also be enabled.
Note:
It is advised to set the sensitivity registers of both – Raw sensor and Corresponding sensor to Zero to
achieve the desired data rates for raw sensors. Non-zero values for sensitivity for either the raw sensor or
the corresponding sensor might not guarantee data rate (especially if desired data rate is more than 60ms)
in the data rate register for raw sensors.
If multiple bits are set, then the following priority table is followed. If MM_Reset bit is set, it will override the other bits
and will reset the device and also all the other bits in this register. MM_Wake and MM_Sleep are always complimentary,
if they are given the same values, then both of them are not modified. MM_Sleep is only set if all the other bits (except
MM_Start) are cleared.
TABLE 3-14:
SENSOR HUB CONFIGURATION PRIORITY
Bits
Priorities
MM_Wake
-
MM_Sleep
-
MM_Start
-
MM_Reset
High
Acc EN
Medium
Gyro EN
Medium
Cmp EN
Medium
Ori EN
Medium
Incl EN
Medium
Raw Acc EN
Medium
Raw Gyro EN
Medium
Raw Mag EN
Medium
 2014 Microchip Technology Inc.
Advance Information
DS00001873A-page 13
AN1873
Note:
3.2.2.2
It is always advised to enable accelerometer, before enabling any other sensor. This will
ensure appropriate data rate by detecting any movements of the device.
Register 02h-0Bh: xxxx Sensitivity
When this Register is written, the following HID/I2C requests must be issued:
1.
2.
3.
GET FEATURE REPORT
SET FEATURE REPORT
GET FEATURE REPORT
The following actions are to be taken:
1.
2.
Issue the set feature report with all the fields same except the sensitivity field which will have the new value now.
Verify the SET FEATURE REPORT with a GET FEATURE REPORT and if the sensitivity has not been changed,
re-issue the SET FEATURE report. This sequence has to be repeated three times. If sensitivity is still not set,
then return with an error.
3.2.2.3
Register 0Ch-15h: xxxx DataRate
When this Register is written, the following HID/I2C requests must be issued:
1.
2.
3.
GET FEATURE REPORT
SET FEATURE REPORT
GET FEATURE REPORT
The following actions are to be taken:
1.
2.
Issue the set feature report with all the fields same except the report interval field which will have the new value
now.
Verify the SET FEATURE REPORT with a GET FEATURE REPORT and if the report interval has not been
changed, re-issue the SET FEATURE report. This sequence has to be repeated three times. If report interval is
still not set, then return with an error.
Note:
3.2.3
Set sensitivity to zero, to achieve correct Data Rate without any movement.
DEVICE DATA READING BASED
The Virtual Registers that come under this category are based on the data read from MM7150:
• Sensor Data Registers
3.2.3.1
Register 16h-35h: xxxx Data
When the alert line is pulled low by MM7150, the most recent data is read from the host. On reading the input report,
the following actions are to be taken:
1.
2.
Whenever an Input Report is read, the Report must be parsed to identify the report ID. After identifying the sensor
related to the Report ID, the data must be parsed and filled into the appropriate sensor data registers. It should
be taken care that the sensor data registers must be locked when being written to. However, before locking the
sensor data registers, the previous data in sensor data registers must be stored into another shadow registers.
The user must be able to read the data register at all times when the sensor is enabled. When the user tries to
read data when the sensor data registers are being updated (or locked), then user must be given the previous
data. Once the user completes reading the last data register of a particular sensor then the previous data registers are cleared.
If the sensor is disabled, the data register of that sensor must read 0x0000.
DS00001873A-page 14
Advance Information
 2014 Microchip Technology Inc.
AN1873
3.2.4
3.2.4.1
OTHER REGISTERS AND FUNCTIONALITIES
Register 01h: Sensor List (SL)
This Register is not directly related to HID/I2C. This register holds data based on the sensors available on the hardware.
This register is to be populated whenever the MM_Start bit in SHC is set. This register is written only once and will be
cleared only on POR.
3.2.4.2
PID, VID, DID Registers
These registers are to be populated whenever the MM_Start bit in SHC is set. These registers are written only once and
will be cleared only on POR.
3.2.4.3
Register 39-3Eh: Exponent Registers
These registers are to be populated whenever the MM_Start bit in SHC is set. These registers are written only once and
will be cleared only on POR.
3.2.4.4
Status registers
All the write accessible bits in registers have corresponding bits in the status registers. These status bits needs to be
populated based on success/failure of a VREG write on a particular VREG.
3.2.5
VREG IMPLEMENTATION BRIEF
Every VREG bit has a corresponding operation related to it. Based on the VREG bits, the VREG to HID translation must
take place and the status registers must be updated with the appropriate status. If the user needs to re-issue any operation based on VREG bit, then the corresponding status bit must be cleared. Host SF lib must start the VREG to HID
translation on the following conditions:
• Check if Bit is set in VREG
• Check if the corresponding status bits are in cleared state
3.3
HID/I2C Parser
The HID/I2C parser is the layer that provides the HID APIs. The whole HID I2C protocol is carried out under this topic,
the I2C request from HOST SF LIB request control flow is sub divided into two parts:
• Descriptor request sequence
• Device Command request sequence
3.3.1
3.3.1.1
DESCRIPTOR REQUEST SEQUENCE
HID Descriptor
The HOST SF LIB must perform I2C combined read for the device descriptor reading sequence and must read 0x1E
bytes.
FIGURE 3-1:
Note:
EXAMPLE FOR DEVICE DESCRIPTOR RETRIEVAL
Device Descriptor address is 0x0001 in this case. Device descriptor Register needs to be available in a
specified location in flash.
 2014 Microchip Technology Inc.
Advance Information
DS00001873A-page 15
AN1873
3.3.1.2
Report Descriptor
The HOST SF LIB requests for the Report descriptor on successful read of the Device descriptor, HOST SF LIB issues
the report address specified in the device descriptor for the report descriptor retrieval. I2C combined write read is used
for this reading sequence.
FIGURE 3-2:
Note:
EXAMPLE FOR REPORT DESCRIPTOR RETRIEVAL
Report Descriptor Address is 0x0002 in this case.
3.3.2
DEVICE COMMAND REQUEST SEQUENCE
The various commands which must be taken care in the HOST SF LIB are as follows:
•
•
•
•
Reset
Get Report
Set Report
Set Power
3.3.2.1
Reset
The reset command is a request that the HOST SF LIB can issue to the DEVICE at any time.
3.3.2.1.1
Reset Request
Reset request type will be as follows:
TABLE 3-15:
RESET REQUEST TYPE
Data
Value
Remarks
High Byte
RESERVED
0000b
This value is reserved and must be set to 0000b
OpCode
0001b
This value is reserved for the RESET Command
RESERVED
00b
This value is reserved and must be set to 00b
Report Type
00b
The HOST SF LIB shall always set this to the specified value.
The DEVICE shall ignore this value and treat it as null.
0000b
The HOST SF LIB shall always set this to the specified value.
The DEVICE shall ignore this value and treat it as null.
Low Byte
Report ID
3.3.2.1.2
Reset Response
After the HOST SF LIB sends the RESET command to the Command Register, the DEVICE shall RESET itself back to
the initialized state. At the end of the reset, the DEVICE also writes a 2 Byte value to the Input Register with the sentinel
value of 0x0000 (2 Bytes containing 0) and asserts the Interrupt to indicate that it has been initialized. The HOST SF
LIB must read the input register on reset and interpret the device has been reset if these values have been written.
Note:
Device needs to respond within 5 seconds for this request – otherwise HOST SF LIB must consider the
device as inoperable.
DS00001873A-page 16
Advance Information
 2014 Microchip Technology Inc.
AN1873
3.3.2.1.3
Reset Command Sequence
The following is the sequence of operations on the HOST SF LIB end and the DEVICE end for this specific request:
TABLE 3-16:
RESET COMMAND OPERATIONS
Host SF LIB Side
Step 1
Device (MM7150) Side
HOST SF LIB sends RESET to Command Register
Step 2
DEVICE reinitializes itself completely, updates the
input register data length field with 0x0000 and then
triggers the interrupt.
FIGURE 3-3:
3.3.2.2
EXAMPLE OF RESET COMMAND
Get Report
The Get report command is a request (Input or Feature reports) that the HOST SF LIB can issue to the DEVICE at any
time after initialization to get a singular report from the DEVICE.
3.3.2.2.1
Get report Request
Get report request type will be as follows:
TABLE 3-17:
GET REPORT REQUEST TYPE
Data
Value
Remarks
High Byte
RESERVED
0000b
This value is reserved and must be set to 0000b
OpCode
0001b
This value is reserved for the GET_REPORT Command
RESERVED
00b
This value is reserved and must be set to 00b
Report Type
{Input (01) |
Feature (11)}
The HOST SF LIB shall always set this to the specified value based on
the report type the HOST SF LIB is trying to get.
The DEVICE shall honor this value and return data only if supported in
the Report Descriptor for the specified report.
xxxxb
The HOST SF LIB shall always set this to the specified value based on
the TLC specific report the HOST SF LIB is trying to get.
The DEVICE shall honor this value per the rules outlined in the notes
section below
Low Byte
Report ID
3.3.2.2.2
Get Report Response
After the HOST SF LIB sends the GET_REPORT command to the Command Register, the DEVICE will fill the report in
to the DATA Register. A DEVICE may optionally stretch the clock for the subsequent HOST SF LIB read per repeated
start. The Data shall be packaged as follows:
• Length of Report (2 Bytes)
• Report including Report ID
 2014 Microchip Technology Inc.
Advance Information
DS00001873A-page 17
AN1873
The HOST SF LIB does not issue a new command to the Device (except the RESET Command) until this command
has been completed and data has been sent back to the HOST SF LIB. If the DEVICE fails to respond back within a
HOST SF LIB defined period of time (generally longer than 5 seconds) the HOST SF LIB is allowed to RESET the
DEVICE.
3.3.2.2.3
Get Report Command Sequence
The following is the sequence of operations on the HOST SF LIB end and the DEVICE end for this specific request:
TABLE 3-18:
GET REPORT COMMAND OPERATIONS
Host SF LIB Side
Step 1
Device (MM7150) Side
HOST SF LIB sends GET_REPORT to Command
Register
Step 2
DEVICE fills the Data Register (with length of report
and data) to report back to HOST SF LIB.
Step 3
HOST SF LIB reads the first 2 Bytes of DATA register to identify length of report and then reads remainder of data (length identified above) from DATA
Register
FIGURE 3-4:
3.3.2.3
EXAMPLE OF GET REPORT COMMAND
Set Report
The Set Report command is a specific request that the HOST SF LIB may issue to the DEVICE at any time after initialization to set a singular report on the DEVICE.
3.3.2.3.1
Set report Request
The HOST SF LIB shall issue this to the command register and then fill the data register with the report being sent to
the DEVICE. The Data shall be packaged as follows:
• Length of Report (2 Bytes)
• Report including Report ID
TABLE 3-19:
SET REPORT REQUEST TYPE
Data
Value
Remarks
High Byte
RESERVED
0000b
This value is reserved and must be set to 0000b
OpCode
0011b
This value is reserved for the SET_REPORT Command
00b
This value is reserved and must be set to 00b
Low Byte
RESERVED
DS00001873A-page 18
Advance Information
 2014 Microchip Technology Inc.
AN1873
TABLE 3-19:
SET REPORT REQUEST TYPE (CONTINUED)
Data
Value
Report Type
Report ID
3.3.2.3.2
Remarks
{Output (10) |
Feature (11)}
The HOST SF LIB shall always set this to the specified value based on
the report type the HOST SF LIB is trying to set.
The DEVICE shall honor and accept this report if the report type is supported in the Report Descriptor for the specified TLC.
xxxxb
The HOST SF LIB shall always set this to the specified value based on
the TLC specific report the HOST SF LIB is trying to set.
The DEVICE shall honor this value per the rules outlined in the notes
section below
Set Report Response
The DEVICE shall not need to respond back after receiving the data on the device register.
3.3.2.3.3
Set Report Command Sequence
The following is the sequence of operations on the HOST SF LIB end and the DEVICE end for this specific request:
TABLE 3-20:
SET REPORT COMMAND OPERATIONS
Host SF LIB Side
Step 1
HOST SF LIB sends SET_REPORT to Command
Register
Step 2
HOST SF LIB fills the Data Register with length and
report and writes to the DEVICE.
Step 3
DEVICE interprets the command and performs the
necessary actions. The DEVICE does not need to
respond back to HOST SF LIB.
FIGURE 3-5:
3.3.2.4
Device (MM7150) Side
EXAMPLE OF SET REPORT COMMAND
Set Power
The Set Power command is a specific request that the HOST SF LIB may issue to the DEVICE to identify the Power
State that the DEVICE should Transition to.
3.3.2.4.1
Set Power Request
The Low Byte uses a special format in the case of SET_POWER Request. The Low byte contains the Power State.
The following are the defined Power State values:
00 = ON
01 = SLEEP
1x = RESERVED
 2014 Microchip Technology Inc.
Advance Information
DS00001873A-page 19
AN1873
TABLE 3-21:
SET POWER REQUEST TYPE
Data
Value
Remarks
High Byte
RESERVED
0000b
This value is reserved and must be set to 0000b
OpCode
1000b
This value is reserved for the SET_POWER Command
RESERVED
000000b
This value is reserved and must be set to 000000b
Power State
{On (00) |
SLEEP (01)}
The HOST SF LIB shall always set this to the Power State that the
DEVICE is required to transition to.
Low Byte
3.3.2.4.2
Set Power Response
The DEVICE shall not respond back after receiving the command. The DEVICE is mandated to enter that power state
imminently.
3.3.2.4.3
Set Power Sequence
The following is the sequence of operations on the HOST SF LIB end and the DEVICE end for this specific request:
TABLE 3-22:
SET POWER COMMAND OPERATIONS
Host SF LIB Side
Step 1
Device (MM7150) Side
HOST SF LIB sends SET_POWER to Command
Register
Step 2
DEVICE interprets the command and transitions to
the appropriate power state. The DEVICE does not
need to respond back to HOST SF LIB.
FIGURE 3-6:
SET POWER FOR DEVICE ON
FIGURE 3-7:
SET POWER FOR DEVICE SLEEP
DS00001873A-page 20
Advance Information
 2014 Microchip Technology Inc.
AN1873
3.3.3
3.3.3.1
FUNCTION PROTOTYPE:
HID I2C Descriptor handler
VOID hid_i2c_descriptor_handler (UINT8 cmd_req);
Where
 Command request from HOST SF LIB
 returns success/error code
cmd_reg
Return
The various HOST SF LIB command requests are as follows.
GET_HID_DESC
GET_RPT_DESC
01
02
The pseudo code for the function is as follows:
UINT8 hid_i2c_descriptor_handler (UINT8 cmd_req) {
UINT8 status;
Switch (cmd_req) {
Case GET_HID_DESC:
Issue the Get HID descriptor request
Read the HID descriptor and store it.
status = success/error code
break;
Case GET_RPT_DESC:
Issue the Get Report descriptor request
Read the Report descriptor and store it.
status = success/error code
break;
}
Return status
}
3.3.3.2
HID I2C command handler
UINT8 hid_i2c_cmd_process (UINT8 * buffer, UINT8 cmd_req, UINT8 report_id);
Where
*Buffer
cmd_reg
report_id
Return
 Data Buffer pointer for the IN/OUT packet control
 Command request from HOST SF LIB
 Report ID for the command request from HOST SF LIB if applicable
 Returns success/error code
The various HOST SF LIB command requests are as follows.
RESET
POWER_ON
SLEEP
HID_GET_RPT_INPT
HID_GET_RPT_FEAT
HID_SET_RPT_OUTP
HID_SET_RPT_FEAT
01
02
03
04
05
06
07
The pseudo code for the function is as follows:
UINT8 hid_i2c_cmd_process (UINT8 * buffer, UINT8 cmd_req, UINT8 report_id) {
UINT8 status;
Switch (cmd_req) {
Case RESET:
Issue the Reset command
 2014 Microchip Technology Inc.
Advance Information
DS00001873A-page 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 11ms
Issue the Power On command
status = success/error code
break;
Case SLEEP:
Issue the Sleep command
status = success/error code
break;
Case HID_GET_RPT_INPT:
Issue command for HID get report input for the particular report_id
Fill in the * buffer with the data packet that is read back
status = 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 back
status = success/error code
break;
Case HID_SET_RPT_OUTP:
Issue command for HID set report output for the particular report_id
Set the output report data into the buffer for transfer
status = success/error code
break;
Case HID_SET_RPT_FEAT:
Issue command for HID set report Feature for the particular report_id
Set the feature report data in the buffer that needs to be send
status = success/error code
break;
default:
status = error code
break;
}
return status;
}
3.3.3.3
Error codes
Following Error codes are returned as status in the HID/I2C parser layer:
TABLE 3-23:
ERROR CODE FOR HID/I2C PARSER LAYER
Error Code
Description
00
Success
01
HID descriptor retrieval failed: No response from device, wrong HID descriptor register address
02
HID descriptor retrieval failed: VID, PID is zero
03
Report descriptor retrieval failed: No response from device, wrong report descriptor register
address
04
Report descriptor retrieval failed: Did not receive the complete report descriptor, error in Report
descriptor length that’s given in the HID descriptor
05
Report descriptor retrieval failed: Invalid Report Descriptor, end of collection is not found
06
Get feature report Failed: Report id field is null
07
Set Feature Report Failed
08
Reset failed, input register not having 00 00 values
DS00001873A-page 22
Advance Information
 2014 Microchip Technology Inc.
AN1873
I2C/SMBus driver layer
3.4
This is the physical layer that directly interacts with the MM7150 motion module. The physical layer might be an I2C
stack or a SMBus stack based on the hardware support in the MM7150 HOST SoC. The functionality of this layer can
be split into 3 main components:
• Master read
• Master write
• Alert line handling
Apart from supporting read/write, this layer also needs to support alert line handling.
3.4.1
ALERT LINE HANDLING
Alert Pin is a HOST SF LIB GPIO pin configured as per HID/I2C alert pin specification. The corresponding GPIO interrupt
must also be enabled. When the alert line is pulled low, the HOST SF Lib must issue an I2C read for MAX INPUT
REPORT LENGTH of bytes.
3.4.1.1
Data reading Sequence
The following sequence of operations explains the process of retrieval of the Input Report:
TABLE 3-24:
INPUT REPORT OPERATIONS
Sequence
Host SF LIb Side
Step 1
Step 2
Device (MM7150) Side
DEVICE asserts the Interrupt indicating that it has
an Input Report to send to HOST SF LIB.
HOST SF LIB issues a READ request over the I2C
protocol, after it receives the interrupt.
Step 3
DEVICE returns the length (2 Bytes) and the
entire Input Report.
Step 4
If the DEVICE has no more Input Reports to send,
it de-asserts the interrupt line.
 2014 Microchip Technology Inc.
Advance Information
DS00001873A-page 23
AN1873
3.5
Vendor Collection
Host SF lib supports sensor collection with the VREGs. To support Vendor collections, Host SF lib will give direct access
to the HID/I2C layer within the HOST SF lib, thus giving access to issue HID get report, set report commands.
3.5.1
USER APIS
Two APIs will be available to the user for implementing applications based on vendor collections:
• HOST_SF_Lib_HID_Get_Feature
• HOST_SF_Lib_HID_Set_Feature
3.5.1.1
Function Prototype
UINT8 HOST_SF_LIB_ HID_Get_Report (UINT8 type, VOID* ReportBuffer, UINT8 size )
Function to read the content of virtual registers
Where
type
ReportBuffer *
size
return
 type refers to feature or input report; type = 3 – feature, 1 - input
 ReportBuffer is the pointer to which the feature report is read into
 Specifies the size, in bytes, of the report buffer
 Returns 0 if success, else returns Error code
UINT8 HOST_SF_LIB_ HID_Set_Feature (UINT8 type, VOID* ReportBuffer, UINT8 size)
Function to queue the write request to virtual registers
Where
type
ReportBuffer*
size
return
Note:
3.5.1.2
 type refers to feature or output report; type = 3 – feature, 2 - output
 ReportBuffer is the pointer data that needs to be sent to the device
 Specifies the size, in bytes, of the report buffer
 Returns 0 if success, else returns Error code
The caller must set the first byte of the ReportBuffer parameter to a nonzero report ID.
HOST_SF_LIB_ HID_Get_Report mechanism
Any user application can issue a Get_report request, which will directly pass to the HID/I2C layer of Host SF lib to
retrieve the desired report. The user application needs to wait till the transaction is complete (Blocking call).
3.5.1.3
HOST_SF_LIB_ HID_Set_Report mechanism
Any user application can issue a Set_report request, which will directly pass to the HID/I2C layer of Host SF lib to send
the desired report. The user application needs to wait till the transaction is complete (Blocking call).
3.5.1.4
Error code
The error code returned by APIs will be the same as the error codes returned by the HID I2C parser layer (see
Section 3.3, HID/I2C Parser for more information).
Note:
Any applications that use vendor collection will need to use these APIs to build their application.
DS00001873A-page 24
Advance Information
 2014 Microchip Technology Inc.
AN1873
4.0
SAMPLE FLOW CHART FOR ACCELEROMETER
POR
H o s t S F L ib
In itia liz a tio n
M o tio n M o d u le
W a ke
A cc E n
(in S H C )
No
Yes
C hange
S e n so r
C o n fig u re
Yes
A cc C o n fig u ra tio n: C h a n g e
s e n sitivity o r re p o rt in te rva l
No
R e a d A cc D a ta fro m
ACCXD, ACCYD,
ACCZD
Yes
R e a d D a ta a g a in
No
D isa b le A cc
S le e p
Yes
No
ID L E
 2014 Microchip Technology Inc.
Advance Information
DS00001873A-page 25
AN1873
APPENDIX A:
SAMPLE CODE FOR ACCELEROMETER
Sample application code that uses HOST SF lib to enable and use accelerometer.
/*
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 successful
if (status == operation completed) {
VREG_read (accel data)
/*Do the required processing */
VREG_write (Accel_data_rate, 20) //change report interval based on some state
return = 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-page 26
Advance Information
 2014 Microchip Technology Inc.
 2014 Microchip Technology Inc.
APPENDIX B:
VREG
ADDR
(offset)
REG
ACC
TYPE
00
R/W
01
R
02
R/W
03
VIRTUAL REGISTERS MAP
REGISTER
NAME
ABBR
BIT
15
BIT
14
BIT
13
BIT
12
BIT
11
BIT
10
BIT
9
BIT
8
BIT
7
BIT
6
BIT
5
BIT
4
BIT
3
BIT
2
BIT
1
BIT
0
POR
Advance Information
SHC
RES
RES
Raw
Gyro
EN
Raw
Mag
EN
Raw
Acc
EN
RES
RES
Incl
EN
Ori EN
Cmp
EN
Gyro
EN
Acc
EN
MM_R
eset
MM_S
tart
MM_Sl
eep
MM_
Wake
0x01
Sensor List
SL
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
Incl
Ori
Cmp
Gyro
Acc
0x00
Acc
Sensitivity
ACSEN
ACSE
N15
ACSE
N14
ACSE
N13
ACSE
N12
ACSE
N11
ACSE
N10
ACSE
N9
ACSE
N8
ACSE
N7
ACSE
N6
ACSE
N5
ACSE
N4
ACSE
N3
ACSE
N2
ACSE
N1
ACSE
N0
0x00
R/W
Gyro
Sensitivity
GYSEN
GYSE
N15
GYSE
N14
GYSE
N13
GYSE
N12
GYSE
N11
GYSE
N10
GYSE
N9
GYSE
N8
GYSE
N7
GYSE
N6
GYSE
N5
GYSE
N4
GYSE
N3
GYSE
N2
GYSE
N1
GYSE
N0
0x00
04
R/W
Cmp
Sensitivity
CMSEN
CMSE
N15
CMSE
N14
CMSE
N13
CMSE
N12
CMSE
N11
CMSE
N10
CMSE
N9
CMSE
N8
CMSE
N7
CMSE
N6
CMSE
N5
CMSE
N4
CMSE
N3
CMSE
N2
CMSE
N1
CMSE
N0
0x00
05
R/W
Ori
Sensitivity
ORSEN
ORSE
N15
ORSE
N14
ORSE
N13
ORSE
N12
ORSE
N11
ORSE
N10
ORSE
N9
ORSE
N8
ORSE
N7
ORSE
N6
ORSE
N5
ORSE
N4
ORSE
N3
ORSE
N2
ORSE
N1
ORSE
N0
0x00
06
R/W
Incl
Sensitivity
INSEN
INSEN
15
INSEN
14
INSEN
13
INSEN
12
INSEN
11
INSEN
10
INSEN
9
INSEN
8
INSEN
7
INSEN
6
INSEN
5
INSEN
4
INSEN
3
INSEN
2
INSEN
1
INSEN
0
0x00
07
R/W
Reserved
-
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
0x00
08
R/W
Reserved
-
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
0x00
09
R/W
Raw Acc
Sensitivity
RACSE
N
RACS
EN15
RACS
EN14
RACS
EN13
RACS
EN12
RACS
EN11
RACS
EN10
RACS
EN9
RACS
EN8
RACS
EN7
RACS
EN6
RACS
EN5
RACS
EN4
RACS
EN3
RACS
EN2
RACS
EN1
RACS
EN0
0x00
0A
R/W
Raw Mag
Sensitivity
RMGSE
N
RMGS
EN15
RMGS
EN14
RMGS
EN13
RMGS
EN12
RMGS
EN11
RMGS
EN10
RMGS
EN9
RMGS
EN8
RMGS
EN7
RMGS
EN6
RMGS
EN5
RMGS
EN4
RMGS
EN3
RMGS
EN2
RMGS
EN1
RMGS
EN0
0x00
0B
R/W
Raw Gyro
Sensitivity
RGYSE
N
RGYS
EN15
RGYS
EN14
RGYS
EN13
RGYS
EN12
RGYS
EN11
RGYS
EN10
RGYS
EN9
RGYS
EN8
RGYS
EN7
RGYS
EN6
RGYS
EN5
RGYS
EN4
RGYS
EN3
RGYS
EN2
RGYS
EN1
RGYS
EN0
0x00
0C
R/W
Acc Data
Rate
ACDXR
ACDX
R15
ACDX
R14
ACDX
R13
ACDX
R12
ACDX
R11
ACDX
R10
ACDX
R9
ACDX
R8
ACDX
R7
ACDX
R6
ACDX
R5
ACDX
R4
ACDX
R3
ACDX
R2
ACDX
R1
ACDX
R0
0x00
0D
R/W
Gyro Data
Rate
GYDR
GYDR
15
GYDR
14
GYDR
13
GYDR
12
GYDR
11
GYDR
10
GYDR
9
GYDR
8
GYDR
7
GYDR
6
GYDR
5
GYDR
4
GYDR
3
GYDR
2
GYDR
1
GYDR
0
0x00
0E
R/W
Cmp Data
Rate
CMDR
CMDR
15
CMDR
14
CMDR
13
CMDR
12
CMDR
11
CMDR
10
CMDR
9
CMDR
8
CMDR
7
CMDR
6
CMDR
5
CMDR
4
CMDR
3
CMDR
2
CMDR
1
CMDR
0
0x00
AN1873
DS00001873A-page 27
Sensor
Hub
Configure
REG
ACC
TYPE
0F
R/W
Ori Data
Rate
10
R/W
11
R/W
12
R/W
13
REGISTER
NAME
Advance Information
 2014 Microchip Technology Inc.
BIT
15
BIT
14
BIT
13
BIT
12
BIT
11
BIT
10
BIT
9
BIT
8
BIT
7
BIT
6
BIT
5
BIT
4
BIT
3
BIT
2
BIT
1
BIT
0
POR
ORDR
ORDR
15
ORDR
14
ORDR
13
ORDR
12
ORDR
11
ORDR
10
ORDR
9
ORDR
8
ORDR
7
ORDR
6
ORDR
5
ORDR
4
ORDR
3
ORDR
2
ORDR
1
ORDR
0
0x00
Incl Data
Rate
INDR
INDR1
5
INDR1
4+F32
INDR1
3
INDR1
2
INDR1
1
INDR1
0
INDR9
INDR8
INDR7
INDR6
INDR5
INDR4
INDR3
INDR2
INDR1
INDR0
0x00
Reserved
-
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
0x00
Reserved
-
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
0x00
R/W
Raw Acc
Data Rate
RACDR
RACD
R15
RACD
R14
RACD
R13
RACD
R12
RACD
R11
RACD
R10
RACD
R9
RACD
R8
RACD
R7
RACD
R6
RACD
R5
RACD
R4
RACD
R3
RACD
R2
RACD
R1
RACD
R0
0x00
14
R/W
Raw Mag
Data Rate
RMGDR
RMGD
R15
RMGD
R14
RMGD
R13
RMGD
R12
RMGD
R11
RMGD
R10
RMGD
R9
RMGD
R8
RMGD
R7
RMGD
R6
RMGD
R5
RMGD
R4
RMGD
R3
RMGD
R2
RMGD
R1
RMGD
R0
0x00
15
R/W
Raw Gyro
Data Rate
RGYDR
RGYD
R15
RGYD
R14
RGYD
R13
RGYD
R12
RGYD
R11
RGYD
R10
RGYD
R9
RGYD
R8
RGYD
R7
RGYD
R6
RGYD
R5
RGYD
R4
RGYD
R3
RGYD
R2
RGYD
R1
RGYD
R0
0x00
16
R/W
AccX Data
ACXD
ACXD
15
ACXD
14
ACXD
13
ACXD
12
ACXD
11
ACXD
10
ACXD
9
ACXD
8
ACXD
7
ACXD
6
ACXD
5
ACXD
4
ACXD
3
ACXD
2
ACXD
1
ACXD
0
0x00
17
R/W
AccY Data
ACYD
ACYD
15
ACYD
14
ACYD
13
ACYD
12
ACYD
11
ACYD
10
ACYD
9
ACYD
8
ACYD
7
ACYD
6
ACYD
5
ACYD
4
ACYD
3
ACYD
2
ACYD
1
ACYD
0
0x00
18
R/W
AccZ Data
ACZD
ACZD
15
ACZD
14
ACZD
13
ACZD
12
ACZD
11
ACZD
10
ACZD
9
ACZD
8
ACZD
7
ACZD
6
ACZD
5
ACZD
4
ACZD
3
ACZD
2
ACZD
1
ACZD
0
0x00
19
R/W
Raw AccX
Data
RACXD
ACXD
15
ACXD
14
ACXD
13
ACXD
12
ACXD
11
ACXD
10
ACXD
9
ACXD
8
ACXD
7
ACXD
6
ACXD
5
ACXD
4
ACXD
3
ACXD
2
ACXD
1
ACXD
0
0x00
1A
R/W
Raw AccY
Data
RACYD
ACYD
15
ACYD
14
ACYD
13
ACYD
12
ACYD
11
ACYD
10
ACYD
9
ACYD
8
ACYD
7
ACYD
6
ACYD
5
ACYD
4
ACYD
3
ACYD
2
ACYD
1
ACYD
0
0x00
1B
R/W
Raw AccZ
Data
RACZD
ACZD
15
ACZD
14
ACZD
13
ACZD
12
ACZD
11
ACZD
10
ACZD
9
ACZD
8
ACZD
7
ACZD
6
ACZD
5
ACZD
4
ACZD
3
ACZD
2
ACZD
1
ACZD
0
0x00
1C
R/W
GyroX Data GYXD
GYXD
15
GYXD
14
GYXD
13
GYXD
12
GYXD
11
GYXD
10
GYXD
9
GYXD
8
GYXD
7
GYXD
6
GYXD
5
GYXD
4
GYXD
3
GYXD
2
GYXD
1
GYXD
0
0x00
1D
R/W
GyroY Data GYYD
GYYD
15
GYYD
14
GYYD
13
GYYD
12
GYYD
11
GYYD
10
GYYD
9
GYYD
8
GYYD
7
GYYD
6
GYYD
5
GYYD
4
GYYD
3
GYYD
2
GYYD
1
GYYD
0
0x00
1E
R/W
GyroZ Data GYZD
GYZD
15
GYZD
14
GYZD
13
GYZD
12
GYZD
11
GYZD
10
GYZD
9
GYZD
8
GYZD
7
GYZD
6
GYZD
5
GYZD
4
GYZD
3
GYZD
2
GYZD
1
GYZD
0
0x00
1F
R/W
Raw GyroX RGYXD
Data
RGYX
D15
RGYX
D14
RGYX
D13
RGYX
D12
RGYX
D11
RGYX
D10
RGYX
D9
RGYX
D8
RGYX
D7
RGYX
D6
RGYX
D5
RGYX
D4
RGYX
D3
RGYX
D2
RGYX
D1
RGYX
D0
0x00
ABBR
AN1873
DS00001873A-page 28
VREG
ADDR
(offset)
 2014 Microchip Technology Inc.
VREG
ADDR
(offset)
REG
ACC
TYPE
20
REGISTER
NAME
Advance Information
BIT
15
BIT
14
BIT
13
BIT
12
BIT
11
BIT
10
BIT
9
BIT
8
BIT
7
BIT
6
BIT
5
BIT
4
BIT
3
BIT
2
BIT
1
BIT
0
POR
R/W
Raw GyroY RGYYD
Data
RGYY
D15
RGYY
D14
RGYY
D13
RGYY
D12
RGYY
D11
RGYY
D10
RGYY
D9
RGYY
D8
RGYY
D7
RGYY
D6
RGYY
D5
RGYY
D4
RGYY
D3
RGYY
D2
RGYY
D1
RGYY
D0
0x00
21
R/W
Raw GyroZ
Data
RGYZD
RGYZ
D15
RGYZ
D14
RGYZ
D13
RGYZ
D12
RGYZ
D11
RGYZ
D10
RGYZ
D9
RGYZ
D8
RGYZ
D7
RGYZ
D6
RGYZ
D5
RGYZ
D4
RGYZ
D3
RGYZ
D2
RGYZ
D1
RGYZ
D0
0x00
22
R/W
Cmp Data
CMD
CMD1
5
CMD1
4
CMD1
3
CMD1
2
CMD1
1
CMD1
0
CMD9
CMD8
CMD7
CMD6
CMD5
CMD4
CMD3
CMD2
CMD1
CMD0
0x00
23
R/W
Mag FluxX
Data
MGFXD
MGFX
D15
MGFX
D14
MGFX
D13
MGFX
D12
MGFX
D11
MGFX
D10
MGFX
D9
MGFX
D8
MGFX
D7
MGFX
D6
MGFX
D5
MGFX
D4
MGFX
D3
MGFX
D2
MGFX
D1
MGFX
D0
0x00
24
R/W
Mag FluxY
Data
MGFYD
MGFY
D15
MGFY
D14
MGFY
D13
MGFY
D12
MGFY
D11
MGFY
D10
MGFY
D9
MGFY
D8
MGFY
D7
MGFY
D6
MGFY
D5
MGFY
D4
MGFY
D3
MGFY
D2
MGFY
D1
MGFY
D0
0x00
25
R/W
Mag FluxZ
Data
MGFZD
MGFZ
D15
MGFZ
D14
MGFZ
D13
MGFZ
D12
MGFZ
D11
MGFZ
D10
MGFZ
D9
MGFZ
D8
MGFZ
D7
MGFZ
D6
MGFZ
D5
MGFZ
D4
MGFZ
D3
MGFZ
D2
MGFZ
D1
MGFZ
D0
0x00
26
R/W
Raw MagX
Data
RMGXD
RMGX
D15
RMGX
D14
RMGX
D13
RMGX
D12
RMGX
D11
RMGX
D10
RMGX
D9
RMGX
D8
RMGX
D7
RMGX
D6
RMGX
D5
RMGX
D4
RMGX
D3
RMGX
D2
RMGX
D1
RMGX
D0
0x00
27
R/W
Raw MagY
Data
RMGYD
RMGY
D15
RMGY
D14
RMGY
D13
RMGY
D12
RMGY
D11
RMGY
D10
RMGY
D9
RMGY
D8
RMGY
D7
RMGY
D6
RMGY
D5
RMGY
D4
RMGY
D3
RMGY
D2
RMGY
D1
RMGY
D0
0x00
28
R/W
Raw MagZ
Data
RMGZD
RMGZ
D15
RMGZ
D14
RMGZ
D13
RMGZ
D12
RMGZ
D11
RMGZ
D10
RMGZ
D9
RMGZ
D8
RMGZ
D7
RMGZ
D6
RMGZ
D5
RMGZ
D4
RMGZ
D3
RMGZ
D2
RMGZ
D1
RMGZ
D0
0x00
29
R/W
OriX Data
ORXD
ORXD
15
ORXD
14
ORXD
13
ORXD
12
ORXD
11
ORXD
10
ORXD
9
ORXD
8
ORXD
7
ORXD
6
ORXD
5
ORXD
4
ORXD
3
ORXD
2
ORXD
1
ORXD
0
0x00
2A
R/W
OriY Data
ORYD
ORYD
15
ORYD
14
ORYD
13
ORYD
12
ORYD
11
ORYD
10
ORYD
9
ORYD
8
ORYD
7
ORYD
6
ORYD
5
ORYD
4
ORYD
3
ORYD
2
ORYD
1
ORYD
0
0x00
2B
R/W
OriZ Data
ORZD
ORZD
15
ORZD
14
ORZD
13
ORZD
12
ORZD
11
ORZD
10
ORZD
9
ORZD
8
ORZD
7
ORZD
6
ORZD
5
ORZD
4
ORZD
3
ORZD
2
ORZD
1
ORZD
0
0x00
2C
R/W
OriW Data
ORWD
ORW
D15
ORW
D14
ORW
D13
ORW
D12
ORW
D11
ORW
D10
ORW
D9
ORW
D8
ORW
D7
ORW
D6
ORW
D5
ORW
D4
ORW
D3
ORW
D2
ORW
D1
ORW
D0
0x00
2D
R/W
InclX Data
INXD
INXD1
5
INXD1
4
INXD1
3
INXD1
2
INXD1
1
INXD1
0
INXD9
INXD8
INXD7
INXD6
INXD5
INXD4
INXD3
INXD2
INXD1
INXD0
0x00
2E
R/W
InclY Data
INYD
INYD1
5
INYD1
4
INYD1
3
INYD1
2
INYD1
1
INYD1
0
INYD9
INYD8
INYD7
INYD6
INYD5
INYD4
INYD3
INYD2
INYD1
INYD0
0x00
2F
R/W
InclZ Data
INZD
INZD1
5
INZD1
4
INZD1
3
INZD1
2
INZD1
1
INZD1
0
INZD9
INZD8
INZD7
INZD6
INZD5
INZD4
INZD3
INZD2
INZD1
INZD0
0x00
30
R/W
Reserved
-
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
0x00
AN1873
DS00001873A-page 29
ABBR
REG
ACC
TYPE
31
R/W
32
R/W
33
REGISTER
NAME
ABBR
BIT
15
BIT
14
BIT
13
BIT
12
BIT
11
BIT
10
BIT
9
BIT
8
BIT
7
BIT
6
BIT
5
BIT
4
BIT
3
BIT
2
BIT
1
BIT
0
POR
Advance Information
 2014 Microchip Technology Inc.
-
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
0x00
Reserved
-
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
0x00
R/W
Reserved
-
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
0x00
34
R/W
Reserved
-
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
0x00
35
R/W
Reserved
-
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
RES
0x00
36
R
Product ID
PID
PID15
PID14
PID13
PID12
PID11
PID10
PID9
PID8
PID7
PID6
PID5
PID4
PID3
PID2
PID1
PID0
0x00
37
R
Vendor ID
VID
VID15
VID14
VID13
VID12
VID11
VID10
VID9
VID8
VID7
VID6
VID5
VID4
VID3
VID2
VID1
VID0
0x00
38
R
DID
DID15
DID14
DID13
DID12
DID11
DID10
DID9
DID8
DID7
DID6
DID5
DID4
DID3
DID2
DID1
DID0
0x00
39
R
Exponent1
exp1
expO
expO
expO
expO
expC3
expC2
expC1
expC0
expG3
expG2
expG1
expG0
expA3
expA2
expA1
expA0
0x00
3A
R
Exponent2
exp2
expRA
3
expRA
2
expRA
1
expRA
0
RES
RES
RES
RES
RES
RES
RES
RES
expIn3
expIn2
expIn1
expIn0
0x00
3B
R
Exponent3
exp3
Res
Res
Res
Res
Res
Res
Res
Res
expRG
3
expRG
2
expRG
1
expRG
0
expR
M3
expR
M2
expR
M1
expR
M0
0x00
3C
R
ExponentC
S1
expCSs
1
expCS
sO
expCS
O
expCS
O
expCS
O
expCS
C3
expCS
C2
expCS
C1
expCS
C0
expCS
G3
expCS
G2
expCS
G1
expCS
G0
expCS
A3
expCS
A2
expCS
A1
expCS
A0
0x00
3D
R
ExponentC
S2
expCS2
expCS
RA3
expCS
RA2
expCS
RA1
expCS
RA0
RES
RES
RES
RES
RES
RES
RES
RES
expCS
In3
expCS
In2
expCS
In1
expCS
In0
0x00
3E
R
ExponentC
S3
expCS3
Res
Res
Res
Res
Res
Res
Res
Res
expCS
RG3
expCS
RG2
expCS
RG1
expCS
RG0
expCS
RM3
expCS
RM2
expCS
RM1
expCS
RM0
0x00
3F
R/W
Status 1
stat1
Raw
Acc
status
1
Raw
Acc
status
0
RES
RES
RES
RES
Inc
status
1
Inc
status
0
Ori
status
1
Ori
status
0
Cmp
status
1
Cmp
status
0
GyroSt
atus1
GyroSt
atus0
AccSt
atus1
AccSt
atus0
0x00
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
Acc
CS/
data1
Acc
CS/
data0
Raw
gyro
Status
1
Raw
gyro
Status
0
Raw
Mag
Status
1
Raw
Mag
Status
0
0x00
Reserved
Device ID
AN1873
DS00001873A-page 30
VREG
ADDR
(offset)
 2014 Microchip Technology Inc.
VREG
ADDR
(offset)
REG
ACC
TYPE
41
R/W
Status 3
stat3
42
R/W
Status 4
stat4
REGISTER
NAME
ABBR
BIT
15
BIT
14
BIT
13
BIT
12
BIT
11
BIT
10
BIT
9
BIT
8
BIT
7
BIT
6
BIT
5
BIT
4
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
RES
RES
RES
RES
RES
RES
RES
MM
sleep /
wake
status
2
MM
sleep /
wake
status
1
MM
sleep /
wake
status
0
MM
Reset
status
1
MM
Reset
status
0
MM
Start
status
1
BIT
3
BIT
2
BIT
1
BIT
0
RES
Incl
CS/
data2
Incl
CS/
data1
Incl
CS/
data0
0x00
MMSt
art
status
0
Raw
Mag
CS/
data2
Raw
Mag
CS/
data1
Raw
Mag
CS/
data0
0x00
POR
Advance Information
AN1873
DS00001873A-page 31
AN1873
APPENDIX C:
TABLE C-1:
APPLICATION NOTE REVISION HISTORY
REVISION HISTORY
Revision Level & Date
DS00001873A (12-22-14)
DS00001873A-page 32
Section/Figure/Entry
Correction
Document Release
Advance Information
 2014 Microchip Technology Inc.
Note the following details of the code protection feature on Microchip devices:
•
Microchip products meet the specification contained in their particular Microchip Data Sheet.
•
Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the
intended manner and under normal conditions.
•
There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our
knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip’s Data
Sheets. Most likely, the person doing so is engaged in theft of intellectual property.
•
Microchip is willing to work with the customer who is concerned about the integrity of their code.
•
Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not
mean that we are guaranteeing the product as “unbreakable.”
Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our
products. Attempts to break Microchip’s code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts
allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act.
Information contained in this publication regarding device applications and the like is provided only for your convenience and may be
superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO
REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR
OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE,
MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer’s risk, and the buyer agrees to defend, indemnify and hold
harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or
otherwise, under any Microchip intellectual property rights.
Trademarks
The Microchip name and logo, the Microchip logo, dsPIC, FlashFlex, flexPWR, JukeBlox, KEELOQ, KEELOQ logo, Kleer, LANCheck,
MediaLB, MOST, MOST logo, MPLAB, OptoLyzer, PIC, PICSTART, PIC32 logo, RightTouch, SpyNIC, SST, SST Logo, SuperFlash and
UNI/O are registered trademarks of Microchip Technology Incorporated in the U.S.A. and other countries.
The Embedded Control Solutions Company and mTouch are registered trademarks of Microchip Technology Incorporated in the U.S.A.
Analog-for-the-Digital Age, BodyCom, chipKIT, chipKIT logo, CodeGuard, dsPICDEM, dsPICDEM.net, ECAN, In-Circuit Serial
Programming, ICSP, Inter-Chip Connectivity, KleerNet, KleerNet logo, MiWi, MPASM, MPF, MPLAB Certified logo, MPLIB, MPLINK,
MultiTRAK, NetDetach, Omniscient Code Generation, PICDEM, PICDEM.net, PICkit, PICtail, RightTouch logo, REAL ICE, SQI, Serial
Quad I/O, Total Endurance, TSHARC, USBCheck, VariSense, ViewSpan, WiperLock, Wireless DNA, and ZENA are trademarks of
Microchip Technology Incorporated in the U.S.A. and other countries.
SQTP is a service mark of Microchip Technology Incorporated in the U.S.A.
Silicon Storage Technology is a registered trademark of Microchip Technology Inc. in other countries.
GestIC is a registered trademarks of Microchip Technology Germany II GmbH & Co. KG, a subsidiary of Microchip Technology Inc., in
other countries.
All other trademarks mentioned herein are property of their respective companies.
© 2014, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved.
ISBN: 9781632768872
QUALITY MANAGEMENT SYSTEM
CERTIFIED BY DNV
== ISO/TS 16949 ==
 2014 Microchip Technology Inc.
Microchip received ISO/TS-16949:2009 certification for its worldwide
headquarters, design and wafer fabrication facilities in Chandler and
Tempe, Arizona; Gresham, Oregon and design centers in California
and India. The Company’s quality system processes and procedures
are for its PIC® MCUs and dsPIC® DSCs, KEELOQ® code hopping
devices, Serial EEPROMs, microperipherals, nonvolatile memory and
analog products. In addition, Microchip’s quality system for the design
and manufacture of development systems is ISO 9001:2000 certified.
Advance Information
DS00001873A-page 33
Worldwide Sales and Service
AMERICAS
ASIA/PACIFIC
ASIA/PACIFIC
EUROPE
Corporate Office
2355 West Chandler Blvd.
Chandler, AZ 85224-6199
Tel: 480-792-7200
Fax: 480-792-7277
Technical Support:
http://www.microchip.com/
support
Web Address:
www.microchip.com
Asia Pacific Office
Suites 3707-14, 37th Floor
Tower 6, The Gateway
Harbour City, Kowloon
Hong Kong
Tel: 852-2943-5100
Fax: 852-2401-3431
India - Bangalore
Tel: 91-80-3090-4444
Fax: 91-80-3090-4123
Austria - Wels
Tel: 43-7242-2244-39
Fax: 43-7242-2244-393
Denmark - Copenhagen
Tel: 45-4450-2828
Fax: 45-4485-2829
Australia - Sydney
Tel: 61-2-9868-6733
Fax: 61-2-9868-6755
Atlanta
Duluth, GA
Tel: 678-957-9614
Fax: 678-957-1455
China - Beijing
Tel: 86-10-8569-7000
Fax: 86-10-8528-2104
Austin, TX
Tel: 512-257-3370
China - Chengdu
Tel: 86-28-8665-5511
Fax: 86-28-8665-7889
Boston
Westborough, MA
Tel: 774-760-0087
Fax: 774-760-0088
Chicago
Itasca, IL
Tel: 630-285-0071
Fax: 630-285-0075
Cleveland
Independence, OH
Tel: 216-447-0464
Fax: 216-447-0643
Dallas
Addison, TX
Tel: 972-818-7423
Fax: 972-818-2924
Detroit
Novi, MI
Tel: 248-848-4000
Houston, TX
Tel: 281-894-5983
Indianapolis
Noblesville, IN
Tel: 317-773-8323
Fax: 317-773-5453
Los Angeles
Mission Viejo, CA
Tel: 949-462-9523
Fax: 949-462-9608
New York, NY
Tel: 631-435-6000
San Jose, CA
Tel: 408-735-9110
Canada - Toronto
Tel: 905-673-0699
Fax: 905-673-6509
DS00001873A-page 34
China - Chongqing
Tel: 86-23-8980-9588
Fax: 86-23-8980-9500
China - Hangzhou
Tel: 86-571-8792-8115
Fax: 86-571-8792-8116
China - Hong Kong SAR
Tel: 852-2943-5100
Fax: 852-2401-3431
China - Nanjing
Tel: 86-25-8473-2460
Fax: 86-25-8473-2470
China - Qingdao
Tel: 86-532-8502-7355
Fax: 86-532-8502-7205
China - Shanghai
Tel: 86-21-5407-5533
Fax: 86-21-5407-5066
China - Shenyang
Tel: 86-24-2334-2829
Fax: 86-24-2334-2393
China - Shenzhen
Tel: 86-755-8864-2200
Fax: 86-755-8203-1760
China - Wuhan
Tel: 86-27-5980-5300
Fax: 86-27-5980-5118
China - Xian
Tel: 86-29-8833-7252
Fax: 86-29-8833-7256
India - New Delhi
Tel: 91-11-4160-8631
Fax: 91-11-4160-8632
India - Pune
Tel: 91-20-3019-1500
Japan - Osaka
Tel: 81-6-6152-7160
Fax: 81-6-6152-9310
Japan - Tokyo
Tel: 81-3-6880- 3770
Fax: 81-3-6880-3771
Korea - Daegu
Tel: 82-53-744-4301
Fax: 82-53-744-4302
Korea - Seoul
Tel: 82-2-554-7200
Fax: 82-2-558-5932 or
82-2-558-5934
France - Paris
Tel: 33-1-69-53-63-20
Fax: 33-1-69-30-90-79
Germany - Dusseldorf
Tel: 49-2129-3766400
Germany - Munich
Tel: 49-89-627-144-0
Fax: 49-89-627-144-44
Germany - Pforzheim
Tel: 49-7231-424750
Italy - Milan
Tel: 39-0331-742611
Fax: 39-0331-466781
Italy - Venice
Tel: 39-049-7625286
Malaysia - Kuala Lumpur
Tel: 60-3-6201-9857
Fax: 60-3-6201-9859
Netherlands - Drunen
Tel: 31-416-690399
Fax: 31-416-690340
Malaysia - Penang
Tel: 60-4-227-8870
Fax: 60-4-227-4068
Poland - Warsaw
Tel: 48-22-3325737
Philippines - Manila
Tel: 63-2-634-9065
Fax: 63-2-634-9069
Singapore
Tel: 65-6334-8870
Fax: 65-6334-8850
Taiwan - Hsin Chu
Tel: 886-3-5778-366
Fax: 886-3-5770-955
Spain - Madrid
Tel: 34-91-708-08-90
Fax: 34-91-708-08-91
Sweden - Stockholm
Tel: 46-8-5090-4654
UK - Wokingham
Tel: 44-118-921-5800
Fax: 44-118-921-5820
Taiwan - Kaohsiung
Tel: 886-7-213-7830
Taiwan - Taipei
Tel: 886-2-2508-8600
Fax: 886-2-2508-0102
Thailand - Bangkok
Tel: 66-2-694-1351
Fax: 66-2-694-1350
China - Xiamen
Tel: 86-592-2388138
Fax: 86-592-2388130
China - Zhuhai
Tel: 86-756-3210040
Fax: 86-756-3210049
Advance Information
03/25/14
 2014 Microchip Technology Inc.