SENtral Motion Coprocessor General Description The SENtral Motion Coprocessor is a custom integrated circuit that makes it easy to quickly incorporate, optimize and operate multiple motion sensors on mobile consumer electronics devices. SENtral employs and manages a user-specified 3-axis magnetometer, 3–axis accelerometer, and 3–axis gyroscope to provide reliable motion tracking, and accurate heading and orientation data. SENtral gathers data from the individual sensors, then integrates and fuses this data using PNI’s proprietary Kalman filtering and heuristic algorithms. By offloading the sensor fusion and interface from a dedicated sensor hub MCU or the host CPU to SENtral, overall power requirements are dramatically lowered and processing power is opened up for other uses. Features Heading Accuracy of 2° rms. Ultra Low Power Consumption Continuous Soft and Hard-Iron Magnetic Auto-Calibration Magnetic Anomaly Compensation I2C Interface – 100 to 3400 kHz Small Form-Factor Android and Windows 8 compatible Sensor Flexibility Applications These advantages make SENtral the ideal choice for mobile and consumer electronics devices desiring ultra-lower power consumption and best-in-class sensor fusion. Cell Phones Tablets Ultrabooks TV Remote Controls Video Game Controllers Ordering Information Item Part # Quantity Package SENtral 13658P <4000 Cut-Tape SENtral 13658 4000 Tape & Reel Table of Contents 1 PRODUCT OVERVIEW ............................................................................................... 3 1.1 SENTRAL FEATURES AND BENEFITS ........................................................ 3 1.2 SENTRAL FUNCTIONAL DESCRIPTION ...................................................... 4 2 SENTRAL SPECIFICATIONS ..................................................................................... 6 2.1 PERFORMANCE CHARACTERISTICS ......................................................... 6 2.2 ELECTRICAL CHARACTERISTICS ............................................................... 6 3 LAYOUT ....................................................................................................................... 8 3.1 SYSTEM LAYOUT .......................................................................................... 8 3.2 PIN ASSIGNMENTS ....................................................................................... 9 3.3 SENSOR LAYOUT ........................................................................................ 10 3.4 DEDICATED EEPROM (OPTIONAL) ........................................................... 11 2 4 I C INTERFACE ......................................................................................................... 12 2 4.1 I C TIMING .................................................................................................... 12 2 4.2 I C HOST INTERFACE (HOST BUS) ........................................................... 13 2 4.2.1 I C Slave Transfer formats ............................................................... 14 2 4.3 I C SENSOR INTERFACE (SENSOR BUS) ................................................. 15 2 4.4 I C PULL-UP RESISTANCE ......................................................................... 15 5 OPERATION .............................................................................................................. 16 5.1 POWER-UP AND CONFIGURATION FILE UPLOAD .................................. 17 5.1.1 Configuration File Upload from EEPROM ........................................ 17 5.1.2 Configuration File Upload from Host ................................................ 18 5.1.3 Configuration File Image Format ...................................................... 20 5.2 NORMAL OPERATION ................................................................................. 21 5.2.1 Error .................................................................................................. 24 5.2.2 CPUReset ......................................................................................... 24 5.2.3 Read Results .................................................................................... 25 5.3 STANDBY STATE ......................................................................................... 26 5.4 PASS-THROUGH STATE ............................................................................. 26 5.5 TROUBLESHOOTING .................................................................................. 28 5.5.1 Hardware-Related Error Conditions ................................................. 28 5.5.2 Software-Related Error Conditions ................................................... 28 6 SENTRAL CONFIGURATION TOOL ........................................................................ 30 6.1 CONFIGURATION TOOL GENERAL SETTINGS ........................................ 31 6.1.1 SDK Revision ................................................................................... 31 6.1.2 Host Interrupt Pin .............................................................................. 31 6.1.3 EEPROM Max. Upload Speed ......................................................... 31 6.2 CONFIGURATION TOOL SENSOR CONFIGURATION .............................. 31 6.2.1 Sensor .............................................................................................. 31 6.2.2 Interrupt Pin ...................................................................................... 31 6.2.3 Slave Address .................................................................................. 31 6.2.4 Orientation Matrix ............................................................................. 32 6.2.5 Cal Offsets ........................................................................................ 33 7 PACKAGE INFORMATION ....................................................................................... 34 8 ASSEMBLY GUIDELINES ......................................................................................... 36 APPENDIX I – CONVERTING QUATERNIONS .................................................................... 39 APPENDIX II – SAMPLE SCHEMATIC SET .......................................................................... 41 PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 1 List of Figures Figure 1-1: Figure 3-1: Figure 4-1: Figure 4-2: Figure 4-3: Figure 4-4: Figure 4-5: Figure 5-1: Figure 5-2: Figure 5-3: Figure 6-1: Figure 7-1: Figure 7-2: Figure 8-1: Figure 8-2: SENtral Block Diagram .......................................................................................... 4 SENtral System Reference Schematic .................................................................. 8 2 I C Timing Diagram .............................................................................................. 12 2 I C Slave Write Example ...................................................................................... 14 2 I C Slave Read Example, with Repeated START................................................ 14 2 I C Slave Write Register Address Only ................................................................ 14 2 I C Slave read register from current address....................................................... 14 SENtral Initialization Sequence ............................................................................ 16 SENtral Operational States .................................................................................. 17 SENtral Normal Operation Flow........................................................................... 24 SENtral Configuration Tool .................................................................................. 30 Mechanical Drawing ............................................................................................. 34 Tape Dimensions ................................................................................................. 35 Typical Solder Mask and Land Pad Parameters ................................................. 37 Typical Solder Reflow Profile ............................................................................... 38 List of Tables Table 2-1: Performance Characteristics ................................................................................... 6 Table 2-2: Absolute Maximum Ratings .................................................................................... 6 Table 2-3: Operating Conditions............................................................................................... 7 Table 3-1: SENtral Pin Assignments ........................................................................................ 9 Table 3-2: Recommended Power Line Distance from Magnetometer ................................... 11 2 Table 4-1: I C Timing Parameters .......................................................................................... 13 2 Table 4-2: I C Pull-Up Resistance Table ................................................................................ 15 Table 5-1: Configuration File Upload from EEPROM Registers ............................................ 18 Table 5-2: Configuration File Host Upload Registers ............................................................. 19 Table 5-3: Sample Host Upload Data Order .......................................................................... 20 Table 5-4: Configuration File Image Format ........................................................................... 20 Table 5-5: ROMVerExp Definition .......................................................................................... 21 Table 5-6: Normal Operation Registers .................................................................................. 21 Table 5-7: Results Registers .................................................................................................. 25 Table 5-8: Standby Registers ................................................................................................. 26 Table 5-9: Pass-Through Registers........................................................................................ 27 Table 5-10: Hardware-Related Error Indications .................................................................... 28 Table 5-11: Software-Related Error Indications ..................................................................... 28 Table 5-12: SensorStatus Register Indications ...................................................................... 29 Table 5-13: ErrorRegister Indications ..................................................................................... 29 Table 8-1: Typical Solder Processing Parameters ................................................................. 38 PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 2 1 Product Overview The SENtral Motion Coprocessor is an integrated circuit that makes it easy to quickly integrate, optimize and operate multiple sensors on mobile consumer electronics devices. SENtral manages and uses data from a user-specified 3-axis gyroscope, 3-axis accelerometer, and 3-axis magnetometer to provide reliable motion tracking and an accurate compass heading, while consuming about 1% of the power of a comparable sensor fusion microprocessor. The primary data output from SENtral are quaternions, which uniquely define device orientation. The quaternions easily can be converted to Euler angles (heading, pitch, and roll), the rotation vector, and the rotation matrix (aka DCM), as discussed in Appendix I. 1.1 SENtral Features and Benefits Features and benefits of the SENtral Motion Coprocessor include: Low power consumption. Offloads sensor processing from the less efficient host CPU, consuming <1% of the power of a Cortex M0 running a comparable sensor fusion algorithm. Provides the ability to tailor the tradeoff between power consumption and motion-tracking performance. Industry-leading heading accuracy. Unparalleled heading accuracy for consumer electronics applications. Continuous hard and soft-iron magnetic auto-calibration. Provides continual background calibration of the sensors. Leverages PNI’s more than 20 years of experience and expertise in magnetic measurement. Magnetic anomaly compensation. Heading and motion tracking is unaffected by magnetic anomalies such as rebar in buildings, desks, speakers etc., that can easily throw off the accuracy. SENtral recognizes and compensates for these anomalies. Sensor flexibility. Works with the most common consumer electronic MEMS motion sensors, so system designers can choose the sensors most appropriate for their systems. Small form-factor. 1.6x1.6x0.5 mm chip-scale package on 0.4 mm pitch. Uses little PCB real estate, allowing for painless integration. I2C interface. Uses the industry-standard I2C protocol in a proprietary low-power implementation to interface to the sensors and the host, so system integration is straightforward. Standard, Fast, Fast Plus, and High Speed are supported on the host bus. Outputs. SENtral natively outputs quaternions, rotational velocity, linear acceleration, and magnetic field. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 3 1.2 SENtral Functional Description Figure 1-1 provides a diagram of SENtral’s primary functional blocks, and a brief description of these functional blocks follows. Figure 1-1: SENtral Block Diagram Quaternion provides the orientation output and is updated at a rate limited to the gyro output data rate (ODR), up to a maximum of 400 Hz. Kalman Update fuses data from the 3-axis gyroscope, 3-axis accelerometer, and 3axis magnetometer, plus data from the magnetic anomaly determination and continuous auto-calibration blocks to generate intelligent orientation updates. The Kalman update involves a sophisticated multi-state Kalman algorithm, and this is where most of the heavy calculations are performed. Continuous Hard and Soft-Iron Auto-Calibration. SENtral is the only product in the market that auto-calibrates for both hard-iron and soft-iron magnetic distortions. While others may calibrate for hard-iron distortion, soft-iron distortion is more difficult to correct for, and it can be caused by EMI shielding tape and other shielding materials widely used in mobile and consumer electronic devices. It is important to correct for soft-iron distortions since they can contribute up to 90° of error. Additionally, since a host system’s magnetic signature can change over time and temperature, SENtral’s continuous auto-calibration ensures accuracy all the time. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 4 Magnetic Anomaly Determination establishes if a transient magnetic distortion is present and accounts for it. Configuration RAM allows for customizing SENtral to match the specific sensors being used and allows the user to tailor certain parameters for their specific system. The SENtral Configuration Tool generates the SENtral Configuration File, and this is subsequently uploaded into SENtral’s Configuration RAM. Pass-Through allows for direct communication with devices on the sensor bus by connecting SENtral’s I2C Host Interface to the Sensor Interface. Host Interface communicates with the host system. Data is transmitted between the host and SENtral via the host I2C bus, in which the host acts as the master and SENtral acts as a slave device. SENtral signals the host that new data is available by sending an interrupt signal on the host DRDY line. Sensor Interface communicates primarily with the sensors. Sensor data is transmitted from the sensors to SENtral via the sensor I2C bus, in which SENtral acts as the master and the sensors as the slave devices. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 5 2 SENtral Specifications1 2.1 Performance Characteristics Table 2-1: Performance Characteristics Parameter Minimum Typical Heading Accuracy 2 Output Data Rate 200 Maximum Units ° rms 400 Hz 2.2 Electrical Characteristics Table 2-2: Absolute Maximum Ratings Parameter Symbol Minimum Maximum Units Supply Voltage VDD -0.3 +3.6 VDC Input Pin Voltage VIN GND – 0.3 VDD + 0.3 VDC Human Body Model HBM -2000 +2000 V Machine Model MM -200 +200 V -50° +150° C ESD Storage Temperature CAUTION: Stresses beyond those listed above may cause permanent damage to the device. These are stress ratings only. Operation of the device at these or other conditions beyond those indicated in the operational sections of the specifications is not implied. Footnote 1. Specifications subject to change. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 6 Table 2-3: Operating Conditions Parameter Symbol Min Supply Voltage VDD 1.6 Power-On Reset Threshold, VREG>VPOR VPOR Typ Max Units 3.3 VDC VREG – 0.125 VDC High Level Input Voltage VIH 0.7*VDD VDD VDC Low Level Input Voltage VIL 0 0.3*VDD VDC High Level Output Current, VOH = VDD – 0.3V IOH -1 mA Low Level Output Current, VOL = 0.3V IOL Current Consumption @ 1 1.8 VDD 1 mA Operation @ 30 Hz Kalman update rate 275 µA Operation @ 7 Hz Kalman update rate 170 µA Pass-Through State 45 µA Standby State 7 µA Host Bus 3400 kbits/sec Sensor Bus 1000 kbits/sec Pass-Through 400 kbits/sec 2 I C Interface 2 Data Rate Decoupling Capacitor (ESR <2) Creg 0.33 0.5 1.8 µF Operating Temperature TOP -40 +25 +85 C Footnotes: 2 1. Sensor bus in I C Fast mode @ 400 kbits/sec, Accel ODR=100 Hz, Gyro ODR=190 Hz, and Mag ODR=Kalman rate. Operation current consumption is the average over 30 sec while the device is in motion. A 30 Hz Kalman update rate provides superior orientationtracking performance when compared to a 7Hz Kalman rate. Pass-Through current consumption assumes SENtral previously was in Standby State, which is recommended. 2 2. SENtral’s I C Host Interface supports Standard, Fast, Fast Plus, and High Speed Modes. High Speed Mode (3400 kHz) is supported with a reduced range of V DD and bus 2 capacitance. SENtral’s I C sensor bus interface supports Standard, Fast, and Fast Plus Modes. Pass-Through State, which connects the sensor bus and host bus, supports Standard and Fast Modes. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 7 3 Layout 3.1 System Layout Figure 3-1 provides a basic reference schematic for connecting SENtral with the host system and the various sensors. Figure 3-1: SENtral System Reference Schematic A few points on system layout. SENtral communicates with the sensors as the master via a dedicated I2C sensor bus. The layout shows a discrete magnetometer, accelerometer, and gyroscope. SENtral also works with combo sensors, such as a single 9-axis sensor or a combo gyro/accel with a discrete magnetometer. SENtral acts as a slave on the host system’s I2C bus. This does not need to be a dedicated bus, although it is shown this way in the schematic. SA0 establishes SENtral’s slave address when communicating with the host. It is shown set to ground, but can be set HIGH instead. See Section 4.2. The pull-up resistance on the I2C lines depends on the number of devices on the bus and the bus speed. Normally 4.7 kΩ is appropriate for Standard or Fast modes (≤400 kbit/sec). See Section 4.4. There are three dedicated sensor interrupt lines between the sensors and SENtral, and one interrupt line between the host and SENtral. The default GPIO assignments are shown, but these can be altered with the SENtral Configuration Tool. See Section 6. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 8 3.2 Pin Assignments SENtral’s pin-out is a 4x4 ball-grid array, as defined in Figure 7-1. The table below provides the pin assignments. Table 3-1: SENtral Pin Assignments Pin# Pin Name I/O Type* Description D1 VDD PWR Supply voltage D3 VCAP PWR External compensation capacitor for internal core voltage regulator D2 GND PWR Ground C3 SA0 I B1 SCLS IO I C host bus SCL clock line A1 SDAS IO I C host bus SDA data line B4 SCLM IO I C sensor bus SCL clock line A4 SDAM IO I C sensor bus SDA data line D4 GPIO[0] IO / PUPD General Purpose IO – Default mag interrupt C4 GPIO[1] IO / PUPD General Purpose IO – Default accel interrupt A3 GPIO[2] IO / PUPD General Purpose IO – Default gyro interrupt B3 GPIO[3] IO / PUPD General Purpose IO – Default not connected A2 GPIO[4] IO / PUPD General Purpose IO – Default not connected B2 GPIO[5] IO / PUPD General Purpose IO – Default not connected C1 GPIO[6] IO / PUPD General Purpose IO – Default host interrupt C2 RES - 2 I C slave address bit [0] 2 2 2 2 Not Used – Connect to Ground *I/O Types are: PWR: I: IO: PU: PD: Power supply Connections Digital Input Digital Input / Output Pull-Up Pull-Down PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 9 3.3 Sensor Layout SENtral provides for considerable flexibility in sensor orientation and layout, but there are some basic requirements, as given below. All three axes of a sensor must be orthogonal to each other. This is by-design for most accelerometers, gyroscopes, and magnetometers. A sensor’s X axis and Y axis should act parallel to the primary plane of the motherboard. A sensor’s Z axis should act perpendicular to the primary plane. Either a sensor’s X axis or Y axis should align parallel to the line-of-sight of the motion-tracking device. It is NOT necessary that the gyroscope, accelerometer, and magnetometer have their same-axis sensors (i.e. all X-axis sensors) point in the same direction, since sensor orientation is configured when running the SENtral Configuration Tool and stored in the SENtral Configuration File. Assuming the Orientation Matrix is properly input in the SENtral Configuration Tool, SENtral will output data conforming to a North-East-Down (NED) convention. To convert to East-North-Up (ENU) see Appendix I. In addition to the requirements listed above, there are several other recommendations regarding sensor layout, as listed below. Accelerometer o Locate the accelerometer near the expected center of rotation of the device to minimize rotational accelerations being interpreted as linear accelerations. Magnetometer o Locate the magnetometer >1 cm away from magnetic sources (hard-iron), such as speaker magnets or known magnetized metals. If uncertain about whether a component is a magnetic source, check it with a Gauss meter (magnetometer) if possible. o For non-magnetic components, try to avoid placing wireless antenna, power capacitors, inductors, ferrite beads, and components using ferromagnetic materials (Fe, Co, Ni) within 1 cm of the magnetometer. Examples of components in a cell phone which typically contain ferromagnetic materials are the memory card slot, battery, frame, electrical and magnetic noise shields, connectors, and hinges. o Materials that are magnetically transparent, and thus relatively safe, include aluminum, gold, titanium, copper, brass, and magnesium. Most stainless steel alloys have relatively weak magnetic properties and are not as safe as those just listed, but don’t need as much attention as ferromagnetic materials. o Locate high-frequency signal lines away from the magnetometer. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 10 o Locate power lines away from the magnetometer, per the table below. Table 3-2: Recommended Power Line Distance from Magnetometer Current (mA) Recommended Distance (mm) 2 0.2 10 1 50 5 100 10 200 20 3.4 Dedicated EEPROM (Optional) A crucial step in using the SENtral coprocessor is uploading the SENtral Configuration File into SENtral’s RAM. This file contains information on how the sensor system is configured in the user’s system, and is generated with the SENtral Configuration Tool, as discussed in Section 6. The Configuration File can be manually uploaded from non-volatile memory in the host CPU or automatically uploaded from a dedicated EEPROM. The primary advantages of using a dedicated EEPROM are freeing up host processor memory and minimizing the time from power-up until the upload is complete. The advantages of using host CPU memory are no additional cost and no additional system footprint requirement. If implementing a dedicated EEPROM, connect it to SENtral as a slave device on the sensor bus, in parallel with the sensors shown in Figure 3-1. The EEPROM upload rate should be set with the SENtral Configuration Tool (see Section 6.1.3). Faster is generally better, although the sensor bus rate is limited to 1 Mb/sec. Writing the Configuration File onto the EEPROM can be accomplished either using an EEPROM programmer or by writing to the EEPROM from the host while SENtral is in Pass-Through State. The primary EEPROM requirements are: ≥320 Kbit (40 Kb x 8 bits) of memory. Shifted address of 0xA0, 0xA2, 0xA4, 0xA6, 0xA8, or 0xAA. (Unshifted address of 0x50, 0x52, 0x54, 0x56, 0x58, or 0x5A.) The following devices have been used with SENtral, but this list definitely is not exhaustive. Microchip 24LC256T-I/SN ST M24M01-DFCS Renesas R1EX24512ASAS0A PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 11 4 I2C Interface Communication with the host processor and sensors is via an I2C interface and interrupt lines. The SENtral Motion Coprocessor acts as the I2C master with the sensors and as a slave with the host processor. The sensor interrupt lines let SENtral know when new data is available, while the host interrupt line lets the host system know when SENtral has updated the quaternions. The sensor and host output data rates are set by the MagRate, AccelRate, GyroRate, and QRateDivisor registers. SENtral’s I2C interface complies with NXP’s UM10204 specification and user manual, rev 04. Standard, Fast, Fast Plus, and High Speed modes of the I2C protocol are supported by SENtral’s I2C host interface. Below is a link to this document. http://www.nxp.com/documents/user_manual/UM10204.pdf 4.1 I2C Timing SENtral’s I2C timing requirements are set forth below, in Figure 4-1 and Table 4-1. For the timing requirements shown in Figure 4-1, transitions are 30% and 70% of VDD. Figure 4-1: I2C Timing Diagram PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 12 Table 4-1: I2C Timing Parameters Standard Fast Fast Plus Units Symbol Parameter Min Max Min Max Min Max fSCL SCL Clock 0 100 0 400 0 1000 kHz tr SDA & SCL Rise Time - 1000 20 300 120 ns tf SDA & SCL Fall Time - 300 20*(VDD/ 5.5V) 300 20*(VDD/ 5.5V) 120 ns tLOW LOW period of SCL Clock 4.7 - 1.3 - 0.5 - s tHIGH HIGH period of SCL Clock 4.0 - 0.6 - 0.26 - s tHD;STA Hold time (repeated) START 4.0 - 0.6 - 0.26 - s tHD;DAT Data hold time 0 - 0 - 0 - s tSU:DAT Data set-up time 250 - 100 - 50 - ns tSU;STA Set-Up time for repeated Start 4.7 - 0.6 - 0.26 - s tSU;STO Stop set-up time 4.0 - 0.6 - 0.26 - s tBUF Bus free time between STOP & START 4.7 - 1.3 - 0.5 - s 4.2 I2C Host Interface (Host Bus) The host will control SENtral on the host bus via SENtral’s I2C host interface. The host interface consists of 2 wires: the serial clock, SCLS, and the serial data line, SDAS. Both lines are bi-directional. SENtral is connected to the host bus via the SDAS and SCLS pins, which incorporate open drain drivers within the device. The host bus lines must be externally connected to a positive supply voltage (DVIO) via a pull-up resistor. See Section 4.4 for more on the pull-up resistor. SENtral’s 7-bit I2C slave address is 0b010100x, where the most significant 6 bits of the slave address are pre-defined in hardware and are the same for all SENtral devices. The least significant bit is user-configurable, using the SA0 pin to set the bit to ‘0’ or ‘1’. For example, grounding the SA0 pin (‘0’ value) results in the 7-bit address of 0b0101000. This should be set so the SENtral slave address is unique to any other devices on the host bus. Note that setting SA0 to ‘1’ requires utilizing microvia technology, as discussed in Section 8. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 13 Data transfer is always initiated by the host. Data is transferred between the host and SENtral serially through the data line (SDAS) in an 8-bit transfer format. The transfer is synchronized by the serial clock line, SCLS. Supported transfer formats are single-byte read, multiple-byte read, single-byte write, and multiple-byte write. The data line can be driven either by the host or SENtral. The serial clock line must be driven by the host. I2C Slave Transfer formats 4.2.1 Figure 4-2 illustrates writing data to registers in single-byte or multiple-byte mode. START SLAVE ADDRESS RW ACK S A6 A5 A4 A3 A2 A1 A0 0 0 REGISTER ADDRESS (N) ACK DATA TO REGISTER (N) A7 A6 A5 A4 A3 A2 A1 A0 0 A7 A6 A5 A4 A3 A2 A1 A0 ACK DATA TO REGISTER (N+1) ACK STOP 0 A7 A6 A5 A4 A3 A2 A1 A0 0 P From Host to SENtral ------------ Data Transferred (n bytes + acknowledge) -----------From SENtral to Host Figure 4-2: I2C Slave Write Example The I2C host interface supports both a read sequence using repeated START conditions, shown in Figure 4-3, and a sequence in which the register address is sent in a separate sequence than the data, shown in Figure 4-4 and Figure 4-5. START SLAVE ADDRESS S A6 A5 A4 A3 A2 A1 A0 RW ACK 0 0 REGISTER ADDRESS (N) ACK START A7 A6 A5 A4 A3 A2 A1 A0 0 SR SLAVE ADDRESS RW ACK A6 A5 A4 A3 A2 A1 A0 1 0 DATA FROM REGISTER (N) A7 A6 A5 A4 A3 A2 A1 A0 Data Transferred (n bytes + acknowledge) Figure 4-3: I2C Slave Read Example, with Repeated START START SLAVE ADDRESS RW ACK S A6 A5 A4 A3 A2 A1 A0 0 0 REGISTER ADDRESS (N) ACK STOP A7 A6 A5 A4 A3 A2 A1 A0 0 P ---------- EnRegAddr = ‘1’ ---------- Figure 4-4: I2C Slave Write Register Address Only START S SLAVE ADDRESS RW ACK A6 A5 A4 A3 A2 A1 A0 1 0 DATA FROM REG. (N) ACK DATA FROM REG. (N+1) A7 A6 A5 A4 A3 A2 A1 A0 0 A7 A6 A5 A4 A3 A2 A1 A0 NACK STOP 1 P From Host to SENtral -------------- Data Transferred (n bytes + acknowledge) -------------From SENtral to Host Figure 4-5: I2C Slave read register from current address PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 14 NACK STOP 1 P 4.3 I2C Sensor Interface (Sensor Bus) SENtral communicates with the accelerometer, gyroscope, and magnetometer over the sensor bus, where SENtral acts as the I2C master and the sensors act as the I2C slaves. On the sensor bus, SENtral initiates data transfer and generates the serial clock. SENtral’s I2C sensor interface supports Standard mode with a rate up to 100 kbit/s, Fast mode with a rate up to 400 kbit/s, and Fast Plus mode with a rate up to 1000 kbit/s. The two wires comprising the sensor bus are SDAM, the serial data line, and SCLM, the serial clock. Both are bidirectional and driven by open drain transistors within SENtral. Each line should be attached to a pull-up resistor, which is further discussed in Section 4.4. 4.4 I2C Pull-Up Resistance The pull-up resistor value for both the host and sensor bus will depend on the I2C data rate and the number of devices on the bus. Table 4-2 provides the maximum acceptable bus capacitance, as a function of bus rate, which can be accommodated with a 4.7 kΩ or 2.4 kΩ pull-up resistor. As a general rule, each device connected to the bus represents 10 pF of capacitance on the bus, so a bus with 4 devices would require a “Max Cb” value of >40 pF. Table 4-2: I2C Pull-Up Resistance Table Rate (kbit/s) I2C Mode Max Cb (pF) Rise Time (ns) 4.7 kΩ pull-up 2.4 kΩ pull-up Standard 100 1000 251.1 491.8 Fast 400 300 75.3 147.5 Fast Plus 1000 120 30.1 59.0 Clock 1700 80 20.1 39.3 Data 1700 160 40.2 78.7 Clock 3400 40 10.0 19.7 Data 3400 80 20.1 39.3 High Speed-1.7 MHz High Speed-3.4 MHz As the table implies, for most Standard and Fast Mode implementations a 4.7 kΩ pull-up should work well, while a 2.4 kΩ pull-up normally should be used for Fast Plus. See Section 7.1 of NXP’s UM10204 specification for additional information. http://www.nxp.com/documents/user_manual/UM10204.pdf. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 15 5 Operation Prior to running SENtral, the Configuration File must be uploaded into SENtral’s Configuration RAM. This file contains information regarding how the user’s sensor system is configured, such as sensor models, sensor slave addresses, GPIO pin assignments, etc.. The Configuration File is generated with the SENtral Configuration Tool, as discussed in Section 6. It may be stored in the host processor’s non-volatile memory or in a dedicated EEPROM connected to SENtral’s sensor bus. Figure 5-1 provides a flow chart of the initialization process, and a detailed discussion of the initialization process follows in Section 5.1 Figure 5-1: SENtral Initialization Sequence PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 16 Once the initialization sequence is complete, there are three states in which SENtral may reside: Normal Operation, Standby, and Pass-Through. Figure 5-2 indicates the recommended way to get from one state to another, and these states are discussed in detail in Sections 5.2 (Normal Operation), 5.3 (Standby), and 5.4 (Pass-Through). Figure 5-2: SENtral Operational States 5.1 Power-Up and Configuration File Upload After powering up or issuing a ResetReq command, SENtral automatically initializes the registers, and then looks for an EEPROM on the sensor bus, as indicated in Figure 5-1. The Configuration File must now be uploaded. This file contains information on how the sensor system is configured in the user’s system, and is generated with the SENtral Configuration Tool, as discussed in Section 6. It can be stored in non-volatile memory in the host CPU or in a dedicated EEPROM. The primary advantages of using a dedicated EEPROM are freeing up host processor memory and minimizing the time from powering up until the upload is complete. The advantages of using the host CPU’s memory are no additional cost and no additional system footprint requirement. If a dedicated EEPROM is used, the EEPROM needs to be connected to SENtral as a slave device on the sensor bus. 5.1.1 Configuration File Upload from EEPROM If a dedicated EEPROM is used to store the Configuration File, then this EEPROM initially would be loaded with the Configuration File either using an EEPROM programmer or by writing the file into the EEPROM from the host while SENtral is in Pass-Through State. This later method also can be used if a new revision of the SENtral algorithm is available or if the user is testing a variety of sensors and consequently needs to change the Configuration File depending on the sensors. As previously mentioned, the EEPROM should be connected to SENtral via SENtral’s sensor bus. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 17 Table 5-1: Configuration File Upload from EEPROM Registers Register Name Address Register Value SentralStatus 0x37 [0] EEPROM. 1 = EEPROM detected [1] EEUploadDone. 1 = EEPROM upload completed [2] EEUploadError. 1 = Calculated CRC of EEPROM is correct. Only valid when EEUploadDone = 1. [3] Idle. 1 = Device in Unprogrammed or Initialized state. [4] NoEEPROM. 1 = No EEPROM detected. ResetReq 0x9B [0] ResetRequest. 1 = Emulate a hard power down/power up. SENtral automatically checks the sensor bus after powering up or reseting to see if an EEPROM is connected on the sensor bus. If an EEPROM is detected, SENtral checks the first 2 bytes of the EEPROM file, which are fixed for all SENtral Configuration Files, and if these match then it automatically uploads the SENtral Configuration File. Once the upload is complete, SENtral enters Initialized State and waits for instructions from the host. If an EEPROM is not detected, SENtral enters Unprogrammed State. The host should confirm a successful EEPROM upload by following the steps below: Read the value from the SentralStatus register. Check bit [0], the EEPROM bit, to ensure an EEPROM is detected by SENtral. Check bit [1], the EEUploadDone bit. If this is ‘0’ then the Configuration File upload is not complete, and reread the SentralStatus register until bit [1] = 1. Once bit [1] = 1, check bit [2], the EEUpload Error bit. If this is ‘0’, then the upload was successful. If the Configuration File upload failed, try the following: Reinitialize SENtral and retry the process. Send a Reset command by writing 0x01 to the ResetReq register. Upload the Configuration File from the host, as discussed in the next section. Download the Configuration File from the EEPROM and verify its contents, as discussed in Section 5.1.3. Reload the Configuration File from the host into the EEPROM. 5.1.2 Configuration File Upload from Host If an EEPROM is not used for storing the Configuration File, then SENtral will enter Unprogrammed State after failing to identify an EEPROM. The host now should upload the Configuration File from host memory. The registers involved are given below: PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 18 Table 5-2: Configuration File Host Upload Registers Register Name Address HostControl 0x34 UploadAddr 0x94 to 0x95 UploadData 0x96 CRCHost 0x97 to 0x9A ResetReq 0x9B Register Value [0] 1 = RunEnable [1] 1 = HostUpload Enable Initial RAM address (0x0000) Data to be uploaded CRC32 of the uploaded data since host upload was enabled [0] 1 = Reset SENtral To upload the Configuration File from the host, perform the following transactions: Write value 0x01 to the ResetReq register. This results in a hard reset of SENtral. This is unnecessary if SENtral has just been powered up or Reset. Verify the Configuration File image, as discussed in Section 5.1.3. Specifically: o Ensure the Magic Numbers are correct. o Ensure the Uploaded Image Length matches the Uploaded Firmware Image Size. o Ensure the Upload Image Length is a multiple of 4 bytes. o Ensure the Configuration File version matches ROM version. Write 0x02 to the HostControl register. This sets the UploadEnable bit, which enables uploading of the Configuration File. Write the initial RAM address, 0x0000, into the UploadAddr register. This normally is an unnecessary operation, since the default after powering up or sending a ResetReq is 0x0000. Upload the Configuration File to SENtral’s program RAM. This represents the range from 0x10 to 0x10+UIL-1 in the Configuration File image, as discussed in Section 5.1.3. The file is sent one byte at a time, using the UploadData register. Data can be burst uploaded. Each group of 4 bytes should be sent in byte-reverse order (i.e. little Endian format). Table 5-3 provides an example. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 19 Table 5-3: Sample Host Upload Data Order Byte Order in Config File Image i i+1 i+2 i+3 i+4 i+5 i+6 i+7 Config File Image Example 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 Byte Order During Host Upload i+3 i+2 i+1 i i+7 i+6 i+5 i+4 0x04 0x03 0x02 0x01 0x08 0x07 0x06 0x05 Example Bye Sent during Host Upload Read the CRCHost register. Compare this to the host-calculated CRC-32 to confirm a successful upload. After the reset, write value 0x00 to the HostControl register, which clears the HostUpload bit and places SENtral in Initialized State. 5.1.3 Configuration File Image Format Table 5-4 provides the format for the Configuration File image, which contains the Configuration File. While understanding the Configuration File image format is not mandatory for operation, it can be useful when debugging errors. Table 5-4: Configuration File Image Format Byte Index Content Note 0x00 Magic Number Lower Byte 0x2A is expected value 0x01 Magic Number Upper Byte 0x65 is expected value 0x02 & 0x03 Flags Bit [0] – EEPROMNoExec Bit [8] to [10] – I2CClockSpeed Bit [11] to [14] – ROMVerExp. See Table 5-5 0x04 to 0x07 CRC32 of uploaded image Stored in Little Endian Format 0x08 to 0x0B Reserved 0x00000000 0x0C & 0x0D Uploaded Image Length (UIL) Stored in Little Endian Format 0x0E & 0x0F Reserved 0x0000 0x10 to 0x10+UIL-46 Uploaded Image – Instructions & Configuration File Data CRC32 is calculated over uploaded image 0x10+UIL-45 to 0x10+UIL-1 Uploaded Image –Config. File Data Structure. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 20 Table 5-5: ROMVerExp Definition ROMVerExp Content Version 0x00 Any ROM version Any value 0x01 ROM version DI01 0x7A8 0x02 ROM version DI02 0x9E6 When uploading the Configuration File from a dedicated EEPROM, SENtral first checks the Magic Number upper and lower bytes to ensure they match the expected values. If they do, then the upload will commence, and during the upload SENtral calculates the CRC32 value over the incoming data. At the end of the upload process, the calculated CRC32 value is compared with the valued stored in the header. If they match and the EEPROMNoExec bit is not ‘1’, then the Configuration File has been successfully uploaded. When uploading the Configuration File from the host, the host should check the Magic Numbers and confirm the expected SENtral ROM version, given in Table 5-5, is correct. 5.2 Normal Operation During Normal Operation the sensors and SENtral algorithm will run and it will be possible to obtain real-time orientation and motion-tracking data from SENtral. The registers used in Normal Operation are given in Table 5-6. Table 5-6: Normal Operation Registers Register Name Address Register Value HostControl 0x34 [0] 1 = RunEnable 0 = Enable Initialized State MagRate 0x55 Requested magnetometer output data rate AccelRate 0x56 Requested accelerometer output data rate divided by 10 GyroRate 0x57 Requested gyroscope output data rate divided by 10 QRateDivisor 0x32 Along with GyroRate, establishes output data rate for quaternion data. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 21 EnableEvents EventStatus 0x33 ‘1’ indicates an interrupt to the host will be generated for the event. [0] CPUReset. Non-maskable [1] Error [2] QuaternionResult [3] MagResult [4] AccelResult [5] GyroResult [6] Reserved [7] Reserved 0x35 ‘1’ indicates a new event has been generated. [0] CPUReset [1] Error [2] QuaternionResult [3] MagResult [4] AccelResult [5] GyroResult Prior to executing the SENtral algorithm it is necessary to perform the following. Set the sensor output data rates (ODRs): MagRate, AccelRate, and GyroRate. If a sensor rate is set to 0x00, SENtral will shutdown the sensor and disable SENtral background calibration. There are two major points regarding setting these registers: o The AccelRate and GyroRate register values should be 1/10th the desired rate, while the MagRate value should match the desired ODR. For example, if the desired ODR is 30 Hz for the magnetometer, 100 Hz for the accelerometer, and 200 Hz for the gyroscope, then the respective register values should be 0x1E (30d), 0x0A (10d), and 0x14 (20d). o The actual accelerometer and gyro ODRs are limited to the ODRs supported by the specific sensors. If the AccelRate or GyroRate register values do not correspond to a supported ODR, then the next highest ODR will be used. For instance, if the GyroRate register is set to 0x14, which corresponds to 200 Hz, but the gyro supports 95 Hz, 190 Hz, and 380 Hz, then the actual gyro ODR will be 380 Hz since this is the closest supported rate above that requested by the register. Establish the quaternion output data rate, where the quaternion output data rate equals GyroRate divided by QRateDivisor. The default for QRateDivisor is 0x00, which is interpreted as ‘1’ and results in the quaternion output data rate equaling GyroRate. Establish which events will trigger an interrupt to the host by configuring the EnableEvent register. PNI specifically recommends enabling bit [1], the Error interrupt bit, in addition to whichever other interrupts the user wants. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 22 Example steps to do this are below: Write 0x640A0F to the MagRate register. Since SENtral automatically increments to the next register, this also populates the AccelRate and GyroRate registers. This sets MagRate to 100 Hz, AccelRate to 100 Hz, and GyroRate to 150 Hz. Write 0x01 to the QRateDivisor Register. This sets the quaternion output data rate to equal the GyroRate. For writing 0x01 this step is optional, since the default also sets the quaternion output data rate equal to GyroRate. Write 0x07 to the EnableEvents register. This sets up the host to receive interrupts from SENtral whenever the quaternion results registers are updated, an error has been detected, or when SENtral needs to be reset. After performing the steps listed above, SENtral is ready to start generating orientation data. Below are the steps to follow when operating in Normal Operation state. a) Write 0x01 to the HostControl register. This sets the RunEnable bit to ‘1’ and enables the sensors and the SENtral algorithm. b) If operating in an interrupt-driven mode, then the host waits until it receives an interrupt signal from SENtral. Alternatively the host may operate on a polling basis, rather than an interrupt-driven basis, in which case the interrupt line may not be used. c) Once an interrupt is received by the host or the host otherwise decides to read new data, read the EventStatus register. d) Interpret and act on the EventStatus register in the priority shown in Figure 5-3. If bit [1], the Error bit, is ‘1’, see Section 5.2.1. If bit [0], the CPUReset bit, is ‘1’, see Section 5.2.2. If bits [2], [3], [4], or [5], the Results bits, are ‘1’, see Section 5.2.1. e) Repeat steps c – e until new orientation data is not needed and/or the host decides to enter a different state. Reading the EventStatus register clears it. It is possible for more than one bit position to be ‘1’ in the EventStatus register, especially if the host does not always read the EventStatus register after receiving an interrupt. Similarly, if multiple bits are set to ‘1’ in the EventStatus register, once the register is read all the bits will be set to ‘0’. For this reason the EventStatus register should be processed in the priority shown in Figure 5-3, as information will be cleared for events that are not handled. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 23 Figure 5-3: SENtral Normal Operation Flow A discussion of how to handle the various events follows. 5.2.1 Error In the event of an error, SENtral will trigger an error interrupt and SENtral will enter Standby State. See the Section 5.5 for recommendations on Troubleshooting and/or reset SENtral by sending 0x01 to the ResetReq register, at address 0x9B. 5.2.2 CPUReset SENtral will report a CPUReset event after the ResetReq command has been issued, and prior to uploading the Configuration File. In this case, SENtral is in Unprogrammed PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 24 State and needs the Configuration File to be uploaded. If a dedicated EEPROM is used to store the Configuration File, then CPUReset should not be encountered as the Configuration File is automatically uploaded. 5.2.3 Read Results The Results Registers’ addresses, formats, and full-scale ranges are given below in Table 5-7. For an explanation of how to convert the quaternions to heading, pitch, and roll (Euler angles), the rotation vector, or the rotation matrix, see Appendix I. The resolution is 32 kHz for all timestamps. Note: All multi-byte elements are stored and transmitted using the Little Endian convention: the 2 least significant byte is stored at the lowest address and transmitted first over the I C bus. Table 5-7: Results Registers Name Address (Hex) Description Format Full-Scale Range QX 00 – 03 Normalized Quaternion – X Float32 0.0 – 1.0 QY 04 – 07 Normalized Quaternion – Y Float32 0.0 – 1.0 QZ 08 – 0B Normalized Quaternion – Z Float32 0.0 – 1.0 QW 0C – 0F Normalized Quaternion – W Float32 0.0 – 1.0 QTime 10 – 11 Quaternion Data Timestamp UInt16 0 – 2048 msec MX 12 – 13 Magnetic Field – X Axis Int16 ±1000 µT MY 14 – 15 Magnetic Field – Y Axis Int16 ±1000 µT MZ 16 – 17 Magnetic Field – Z Axis Int16 ±1000 µT MTime 18 – 19 Magnetometer Interrupt Timestamp UInt16 0 – 2048 msec AX 1A – 1B Linear Acceleration – X Axis Int16 ±16 g AY 1C – 1D Linear Acceleration – Y Axis Int16 ±16 g AZ 1E – 1F Linear Acceleration – Z Axis Int16 ±16 g ATime 20 – 21 Accelerometer Interrupt Timestamp UInt16 0 – 2048 msec GX 22 – 23 Rotational Velocity – X Axis Int16 ±5000°/sec GY 24 – 25 Rotational Velocity – Y Axis Int16 ±5000°/sec GZ 26 – 27 Rotational Velocity – Z Axis Int16 ±5000°/sec GTime 28 – 29 Gyroscope Interrupt Timestamp UInt16 0.0 – 2.048 sec PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 25 5.3 Standby State In Standby State overall system power consumption is dramatically reduced because both the SENtral algorithm and the sensors are shut down. Table 5-8 provides the registers associated with Standby State. Table 5-8: Standby Registers Register Name Address Register Value AlgorithmControl 0x54 [0] 1 = StandbyEnable 0 = Disable Standby State AlgorithmStatus 0x38 [0] 1 = SENtral in Standby State 0 = SENtral not in Standby State The steps to enter and exit Standby State are given below: Write 0x01 to the AlgorithmControl register. This places SENtral in Standby State. Read the AlgorithmStatus register. If bit [0] is ‘1’, then SENtral is in Standby State. This step is optional. When you are ready to exit Standby State, write 0x00 to the AlgorithmControl register. This takes SENtral out of Standby State and normally will place it back into Normal Operation. Read the AlgorithmStatus register. If bit [0] is ‘0’, then SENtral is not in Standby State. This step is optional. 5.4 Pass-Through State SENtral can be configured so the host communicates directly with devices on the sensor bus by placing SENtral into Pass-Through State. In Pass-Through State, SENtral’s sensor and host interfaces are connected by internal switches so the host system communicates directly with the sensors and/or dedicated EEPROM. To enter Pass-Through State, SENtral first should be in either Standby, Initialized, or Unprogrammed State. Consequently, in PassThrough State the SENtral algorithm, host interrupt line, and sensors are disabled, unless a sensor is directly turned on by the host. When exiting Pass-Through State, SENtral will return to its prior state. Note: When entering Pass-Through State the sensor’s registers retain the values established by SENtral, and when exiting Pass-Through State any register changes will be retained. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 26 Uses for the Pass-Through State include: Direct control of sensors, if desired. Debugging. Communication with the dedicated EEPROM, if implemented. Specifically, if a new Configuration File is generated, the host can write this into the EEPROM when in Pass-Through State. Since operating in Pass-Through State requires stopping the SENtral algorithm, PassThrough State is not recommended for accessing sensor data unless reliable heading data is not required. If sensor data and reliable heading data are both desired, scaled sensor data can be accessed during Normal Operation from the Results Registers, as given in Table 5-7. Table 5-9 provides the registers associated with Pass-Through State. Table 5-9: Pass-Through Registers Register Name Address Register Value AlgorithmControl 0x54 [0] 1 = StandbyEnable 0 = Disable Standby State AlgorithmStatus 0x38 [0] 1 = SENtral in Standby State 0 = SENtral not in Standby State PassThroughControl 0xA0 [0] 1 = Enable Pass-Through State 0 = Disable Pass-Through State PassThroughStatus 0x9E [0] 1 = SENtral in Pass-Through State. 0 = SENtral not in Pass-Through State. The steps to go in and out of Pass-Through State are given below. Write 0x01 to the AlgorithmControl register. This places SENtral in Standby State. Write 0x01 to the PassThroughControl register. This places SENtral in Pass-Through State. Read the PassThroughStatus register. If bit [0] is ‘1’, then SENtral is in PassThrough State. This step is optional. When you are done in Pass-Through State, write 0x00 to the PassThroughControl register. This terminates Pass-Through mode and returns SENtral to Standby State. Write 0x00 to the AlgorithmControl register. This takes SENtral out of Standby State and normally will place it back into Normal Operation. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 27 5.5 Troubleshooting This section provides guidance in troubleshooting SENtral, and is divided into hardwarerelated and software-related errors. 5.5.1 Hardware-Related Error Conditions Possible indications of a hardware-related problem are given below in Table 5-10. Table 5-10: Hardware-Related Error Indications Register Name Address Error Indication EventStatus 0x35 [0] 1 = CPURest. SENtral Configuration File needs uploading. See Section 5.1. SentralStatus 0x37 [2] 1 = EEUploadError. Issue with uploading from the dedicated EEPROM. See Section 5.1. MagRate 0x55 0x00 – Value lost AccelRate 0x56 0x00 – Value lost GyroRate 0x57 0x00 – Value lost In the event of such errors, SENtral will enter Standby State, shut down the sensors, and generate an interrupt to the host. Possible reasons for hardware-related errors include problems with an external EEPROM upload, power transients detected by power management, and errors in software detected by Watchdog. Often the error can be cleared by sending the ResetReq command and reloading the Configuration File. 5.5.2 Software-Related Error Conditions Possible indications of software-related errors are given below in Table 5-11: Table 5-11: Software-Related Error Indications Register Name Address Error Indication EventStatus 0x35 [1] 1 = Error. SensorStatus 0x36 Non-zero value indicates sensor-related error. Check sensors by communicating in PassThrough State. See Table 5-12 SentralStatus 0x37 [3] 1 = Idle. SENtral in Initialized or Unprogrammed State. ErrorRegister 0x50 Non-zero value indicated an error. See Table 5-13. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 28 If the SensorStatus register indicates a non-zero value, then the value provides additional information on the sensor that is causing a problem, as given in Table 5-12. Table 5-12: SensorStatus Register Indications Register Name Address SensorStatus Error Indication [0] MagNACK. 1 = NACK from magnetometer [1] AccelNACK. 1 = NACK from accelerometer [2] GyroNACK. 1 = NACK from gyroscope [4] MagDeviceIDErr. 1 = Unexpected DeviceID from magnetometer [5] AccelDeviceIDErr. 1 = Unexpected DeviceID from accelerometer 0x36 [6] GyroDeviceIDErr. 1 = Unexpected DeviceID from gyroscope. If the ErrorRegister indicates a non-zero value, then the value provides additional information on the sensor that is causing a problem, as given in Table 5-13. Table 5-13: ErrorRegister Indications Value Error Condition Response 0x00 No error 0x80 Invalid sample rate selected Check sensor rate settings. 0x30 Mathematical Error Check for software updates 0x21 Magnetometer initialization failed 0x22 Accelerometer initialization failed 0x24 Gyroscope initialization failed This error can be caused by a wrong driver, physically bad sensor 2 connection, or incorrect I C device address in the driver 0x11 Magnetometer rate failure 0x12 Accelerometer rate failure 0x14 Gyroscope rate failure PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY This error indicates the given sensor is unreliable and has stopped producing data. Doc #1018049 revI Page 29 6 SENtral Configuration Tool As of the publishing of revI of the SENtral Technical Datasheet, the SENtral Configuration Tool was not fully implemented. Please contact PNI about how to obtain the Configuration File. This documentation is left in the manual because implementation is imminent. Prior to using the SENtral Motion Coprocessor, it is necessary to generate the SENtral Configuration File using the SENtral Configuration Tool. The Configuration File contains information on how the sensor system is configured in the user’s system. It should be stored in a dedicated EEPROM or in the host processor’s memory. When SENtral is powered up the Configuration File needs to be uploaded into SENtral’s RAM, as discussed in Section5.1. The SENtral Configuration Tool provides an intuitive GUI which allows the user to easily generate the Configuration File. A screen shot of the tool is given in Figure 6-1, and a discussion of the settings follows. Once the various fields are correctly populated, click <Generate> to create the SENtral Configuration File. It will automatically download onto your computer. The name will have the format “sentral_[SDKrev]_[mag]_[accel]_[gyro].fw”. Figure 6-1: SENtral Configuration Tool PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 30 6.1 Configuration Tool General Settings 6.1.1 SDK Revision This establishes the revision of the firmware to be generated. Normally the latest revision is most desirable, but prior revisions are retained for customers that have qualified older revisions. 6.1.2 Host Interrupt Pin This establishes which GPIO pin is used to send an event interrupt to the host system. The default is GPIO[6], but any of the GPIO pins can be used for this function. 6.1.3 EEPROM Max. Upload Speed If the user incorporates a dedicated EEPROM to store the SENtral’s Configuration File, then this field establishes the maximum data rate the configuration EEPROM can accommodate. If there is no EEPROM, this setting has no meaning. SENtral automatically determines if a dedicated EEPROM is present. 6.2 Configuration Tool Sensor Configuration The sensors attached to SENtral must be configured correctly for SENtral to properly function. The magnetometer, accelerometer, and gyroscope are configured in a similar manner, so the parameters discussed below apply to all three sensors. 6.2.1 Sensor The drop-down menus are used to select the sensor models incorporated into the user’s system. If a sensor is not listed, then a driver has not been developed for that sensor. 6.2.2 Interrupt Pin This drop-down menu establishes which General Purpose IO pin is used to send a sensor interrupt signal to SENtral. As shown in the reference schematic, Figure 3-1, the default is to use GPIO[0] for the magnetometer, GPIO[1] for the accelerometer, and GPIO[2] for the gyroscope. However, the GPIO pins are interchangeable and can be configured as is most convenient for the user. 6.2.3 Slave Address This establishes the slave address for the respective sensor, and the user needs to input the sensor’s slave address here. The 7-bit slave address will be provided in the sensor’s PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 31 technical data sheet and normally will be a function of 5 or 6 fixed bits and 1 or 2 bits that are configurable by 1 or 2 of the sensor’s pins. 6.2.4 Orientation Matrix This matrix defines how the sensors are physically laid out in the host system. The values are normally 1s, -1s, or 0s. The matrix is used to convert the physical layout into a north-east-down (NED) convention, where “north” is defined as the line-of-sight or direction of travel. The matrix is defined as shown in the equation below: where A through I are the matrix values that need to be populated (1s or 0s), X, Y, and Z represent the orientation of the x-axis, y-axis, and z-axis sensors, where north is defined as the line of sight, and NED is the north-east-down convention that the orientation matrix converts [X, Y, Z] into. For the accelerometer matrix, it is necessary to multiply the matrix by –1. Examples: Below are three examples. The first is if the sensor is laid out in an NED convention, such that the x-axis points north, the y-axis points east, and the z-axis points down. Recall that “north” is defined as the line-of-sight or direction of travel. In this case the orientation matrix is the identity matrix, as given below. Another common convention is east-north-up (ENU), where the x-axis points east, the y-axis points north, and the z-axis points up, in which case the orientation matrix and associated matrix math are given below. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 32 The final example is west-south-down (WSD). This matrix would be appropriate for an ENU accelerometer, since it incorporates the -1 multiplication factor. The orientation matrix and associated matrix math are given below. 6.2.5 Cal Offsets Normally these fields will be ‘0’. However if the user has information indicating a given model of sensor consistently has a fixed measurement offset, then these fields allow the user to tailor the SENtral algorithm. For example, assume statistical data from a manufacturer regarding their accelerometer indicates their z-axis sensor has an average reading of 1.1 g when actually experiencing 1.0 g of gravitational force. In this case, the user can enter an offset on the z-axis of 0.1g for the accelerometer. The fields are given in X, Y, Z order, and the units are as follows: Magnetometer: Accelerometer: Gyroscope: PNI Sensor Corporation SENtral Technical Data Sheet 1.0 = +50 T 1.0 = +1 g 1.0 = +1 radian/second PRELIMINARY Doc #1018049 revI Page 33 7 Package Information Note: For Pin-Out, see Table 3-1 Figure 7-1: Mechanical Drawing PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 34 Figure 7-2: Tape Dimensions PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 35 8 Assembly Guidelines SENtral is provided in a lead-free wafer-level chip-scale package (WL-CSP). General design guidelines can be found in Amkor’s “Application Note for Surface Mount Assembly of Amkor’s Eutectice and Lead-Free CSPnl Wafer Level Chip Scale Packages”, which is available from Amkor’s website. Specific assembly guidelines are discussed below. Comments specific to SENtral include: Microvia technology is NOT required if GPIO[3] and GPIO[5] are not used and the slave address pin, SA0, is set LOW. In this case the slave address pin, C3, should be connected to C2 (unused), and C2 should be connected to D2, which is GND. Pins B2, GPIO[5], and B3, GPIO[3], should be left unconnected. If either GPIO[3] and GPIO[5] are to be used or the slave address pin, SA0, is to be set HI, then microvia technology is required. Due to SENtral’s ball-grid-array 0.4 mm pitch and 0.26 mm ball diameter, connections to these inner pins should be made with a via-in-pad design using microvias. General CSP assembly guidelines for SENtral include: A non-solder mask defined (NSMD) land pattern is recommended. Solder mask registration is critical and the correct solder mask opening dimension should be 50um either side of the copper pad. The actual size of the copper pad should be between 80% and 100% of the diameter of the solder ball. The copper layer thickness should 30 um or less. The copper pads should be finished with Organic Solderability Preservative (OSP) coating, such as ENTEK-PLUS Cu 106A. Standard epoxy glass PCB substrates are compatible. High temperature FR4 is preferred over standard FR4 for improved package reliability. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 36 Figure 8-1 provides design parameters for a typical SENtral solder mask and pad pattern. Figure 8-1: Typical Solder Mask and Land Pad Parameters A typical recommended solder reflow profile is given in Figure 8-2 and the associated processing parameters are given in Table 8-1, both on the following page. Oven type and tolerances, thermocouple tolerance, solder type, and the temperature difference across the board will affect the actual implemented profile. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 37 PB Figure 8-2: Typical Solder Reflow Profile Table 8-1: Typical Solder Processing Parameters Parameter Value Ramp Up Rate 3°C/second Preheat Temperature Range 150°C to 180°C 60 – 180 seconds Preheat Time Liquidus Temperature 220°C Time above Liquidus 30 – 90 seconds Peak Temperature 255°C ±5°C Time within 5°C of Peak Temperature Ramp Down Rate PNI Sensor Corporation SENtral Technical Data Sheet 10 – 20 seconds 6°C/second maximum PRELIMINARY Doc #1018049 revI Page 38 Appendix I – Converting Quaternions SENtral outputs orientation data in quaternions, using a North-East-Down (NED) convention. This is done to avoid the singularities inherent in using Euler angles (heading, pitch, and roll), and because the fusion algorithms are easier to implement with quaternions. However, normally quaternions are not the desired final output format. Most end users will want heading, pitch, and roll, while Android looks for a rotation vector and generally uses a rotation matrix for orientation. Plus, Android and Win8 both expect data to be presented in the East-North-Up (ENU) convention. This appendix discusses how to convert SENtral’s output quaternions into these other output formats. Converting from NED to ENU While the North-East-Down (NED) convention is common in many industries, both Android and Windows 8 use the East-North-Up convention. Below is the equation to convert from NED to ENU. Heading, Pitch, and Roll Most end users will want orientation data reported as heading, pitch, and roll. Below are the transformation equations. Heading = atan2[-2(QxQy – QwQz)/(Qw2 – Qx2 + Qy2 + Qz2)] Pitch = atan2[-2(QxQz – QwQy)/(Qw2 – Qx2 – Qy2 + Qz2)] Roll = asin[2(QyQz+ QwQx)] Where: The quaternions are the outputs from SENtral in NED convention. Heading increases as the device rotates clockwise around a positive Z axis, and the range is 0° – 360°. (i.e. it matches what you would expect on a compass.) Pitch increases when pitching upward and the range is ±180°. Roll increases when rolling clockwise and the range is ±90°. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 39 Rotation Vector The rotation vector is the first three elements of the quaternion output, Qx, Qy, and Qz. The fourth element, Qw, is not included in the rotation vector. The rotation vector in ENU convention will be the first three elements of QENU, discussed above. Rotation Matrix, or Direction Cosine Matrix (DCM) The rotation matrix, also known as the direction cosine matrix (DCM), can be established from the quaternion output using the following conversion. QENU values can be substituted to give the rotation matrix with an ENU convention. 2 2 2 2 Qw + Qx – Qy – Qz R= 2*(Qx*Qz – Qw*Qy) 2*(Qx*Qy + Qw*Qz) 2 2 2 2 2*(Qx*Qy – Qw*Qz) Qw – Qx + Qy – Qz 2*(Qy*Qz + Qw*Qy) 2*(Qx*Qz + Qw*Qy) 2*(Qy*Qz – Qw*Qy) Qw – Qx – Qy + Qz PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY 2 2 2 2 Doc #1018049 revI Page 40 Appendix II – Sample Schematic Set The schematics provided are for a complete Bluetooth-enabled device incorporating SENtral and either an ST LSM9DS0 9-axis sensor or an ST LSM330 gyro/accel combo sensor with an AKM AK8963C magnetometer. Except for the last schematic, the schematics are common regardless of sensors. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 41 PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 42 PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 43 PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 44 ©2013 PNI Sensor Corporation. All Rights Reserved. Reproduction, adaptation, or translation without prior written permission is prohibited, except as allowed under copyright laws. Revised December 2013: for the most recent version visit our website at www.pnicorp.com PNI Sensor Corporation 2331 Circadian Way Santa Rosa, CA 95407, USA Tel: (707) 566-2260 Fax: (707) 566-2261 Warranty and Limitation of Liability. PNI Sensor Corporation ("PNI") manufactures its Products from parts and components that are new or equivalent to new in performance. PNI warrants that each Product to be delivered hereunder, if properly used, will, for ninety (90) days following the date of shipment unless a different warranty time period for such Product is specified: (i) in PNI’s Price List in effect at time of order acceptance; or (ii) on PNI’s web site (www.pnicorp.com) at time of order acceptance, be free from defects in material and workmanship and will operate in accordance with PNI’s published specifications and documentation for the Product in effect at time of order. PNI will make no changes to the specifications or manufacturing processes that affect form, fit, or function of the Product without written notice to the Customer, however, PNI may at any time, without such notice, make minor changes to specifications or manufacturing processes that do not affect the form, fit, or function of the Product. This warranty will be void if the Products’ serial number, or other identification marks have been defaced, damaged, or removed. This warranty does not cover wear and tear due to normal use, or damage to the Product as the result of improper usage, neglect of care, alteration, accident, or unauthorized repair. THE ABOVE WARRANTY IS IN LIEU OF ANY OTHER WARRANTY, WHETHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR ANY PARTICULAR PURPOSE, OR ANY WARRANTY OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION, OR SAMPLE. PNI NEITHER ASSUMES NOR AUTHORIZES ANY PERSON TO ASSUME FOR IT ANY OTHER LIABILITY. If any Product furnished hereunder fails to conform to the above warranty, Customer’s sole and exclusive remedy and PNI’s sole and exclusive liability will be, at PNI’s option, to repair, replace, or credit Customer’s account with an amount equal to the price paid for any such Product which fails during the applicable warranty period provided that (i) Customer promptly notifies PNI in writing that such Product is defective and furnishes an explanation of the deficiency; (ii) such Product is returned to PNI’s service facility at Customer’s risk and expense; and (iii) PNI is satisfied that claimed deficiencies exist and were not caused by accident, misuse, neglect, alteration, repair, improper installation, or improper testing. If a Product is defective, transportation charges for the return of the Product to Customer within the United States and Canada will be paid by PNI. For all other locations, the warranty excludes all costs of shipping, customs clearance, and other related charges. PNI will have a reasonable time to make repairs or to replace the Product or to credit Customer’s account. PNI warrants any such repaired or replacement Product to be free from defects in material and workmanship on the same terms as the Product originally purchased. Except for the breach of warranty remedies set forth herein, or for personal injury, PNI shall have no liability for any indirect or speculative damages (including, but not limited to, consequential, incidental, punitive and special damages) relating to the use of or inability to use this Product, whether arising out of contract, negligence, tort, or under any warranty theory, or for infringement of any other party’s intellectual property rights, irrespective of whether PNI had advance notice of the possibility of any such damages, including, but not limited to, loss of use, revenue or profit. In no event shall PNI’s total liability for all claims regarding a Product exceed the price paid for the Product. PNI neither assumes nor authorizes any person to assume for it any other liabilities. Some states and provinces do not allow limitations on how long an implied warranty lasts or the exclusion or limitation of incidental or consequential damages, so the above limitations or exclusions may not apply to you. This warranty gives you specific legal rights and you may have other rights that vary by state or province. PNI Sensor Corporation SENtral Technical Data Sheet PRELIMINARY Doc #1018049 revI Page 45