From 781ae4b3454e415d5c3e48dffd1f5244f35a0398 Mon Sep 17 00:00:00 2001 From: PaulZC Date: Sat, 27 Feb 2021 07:39:01 +0000 Subject: [PATCH 1/7] Adding CONTRIBUTING.md --- CONTRIBUTING.md | 20 ++++++++++++++++++++ README.md | 31 ++++++++++++++++--------------- img/Contributing.JPG | Bin 0 -> 62131 bytes 3 files changed, 36 insertions(+), 15 deletions(-) create mode 100644 CONTRIBUTING.md create mode 100644 img/Contributing.JPG diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..ebe137b --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,20 @@ +# How to Contribute + +Thank you so *much* for offering to help out. We truly appreciate it. + +If you'd like to contribute, start by searching through the [issues](https://github.com/sparkfun/SparkFun_ICM-20948_ArduinoLibrary/issues) and [pull requests](https://github.com/sparkfun/SparkFun_ICM-20948_ArduinoLibrary/pulls) to see whether someone else has raised a similar idea or question. +Please check the [closed issues](https://github.com/sparkfun/SparkFun_ICM-20948_ArduinoLibrary/issues?q=is%3Aissue+is%3Aclosed) +and [closed pull requests](https://github.com/sparkfun/SparkFun_ICM-20948_ArduinoLibrary/pulls?q=is%3Apr+is%3Aclosed) too - you may find that your issue or feature has already been discussed. + +If you decide to add a feature to this library, please create a PR and follow these best practices: + +* Change as little as possible. Do not submit a PR that changes 100 lines of whitespace. Break up into multiple PRs if necessary. +* If you've added a new feature document it with a simple example sketch. This serves both as a test of your PR and as a quick way for users to quickly learn how to use your new feature. +* If you add new functions also add them to _keywords.txt_ so that they are properly highlighted in Arduino. [Read more](https://www.arduino.cc/en/Hacking/libraryTutorial). +* **Important:** Please submit your PR using the [release_candidate branch](https://github.com/sparkfun/SparkFun_ICM-20948_ArduinoLibrary/tree/release_candidate). That way, we can merge and test your PR quickly without changing the _master_ branch + +![Contributing.JPG](./img/Contributing.JPG) + +## Style guide + +Please read and follow the [Arduino API style guide](https://www.arduino.cc/en/Reference/APIStyleGuide). Also read and consider the [Arduino style guide](https://www.arduino.cc/en/Reference/StyleGuide). diff --git a/README.md b/README.md index 9401cb7..3147917 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,31 @@ -SparkFun_ICM-20948_ArduinoLibrary -======================================== +# SparkFun_ICM-20948_ArduinoLibrary This is the library for the [SparkFun 9DoF IMU Breakout - ICM-20948 (Qwiic)](https://www.sparkfun.com/products/15335). +## Contributing -Repository Contents -------------------- +If you would like to contribute to this library: please do, we truly appreciate it, but please follow [these guidelines](./CONTRIBUTING.md). Thanks! -* **/examples** - Example sketches for the library (.ino). Run these from the Arduino IDE. -* **/src** - Source files for the library (.cpp, .h). -* **keywords.txt** - Keywords from this library that will be highlighted in the Arduino IDE. -* **library.properties** - General library properties for the Arduino package manager. +## Repository Contents -Documentation --------------- +* [**/examples**](./examples) - Example sketches for the library (.ino). Run these from the Arduino IDE. +* [**/src**](./src) - Source files for the library (.cpp, .h). +* [**keywords.txt**](./keywords.txt) - Keywords from this library that will be highlighted in the Arduino IDE. +* [**library.properties**](./library.properties) - General library properties for the Arduino package manager. +* [**CONTRIBUTING.md**](./CONTRIBUTING.md) - Guidelines on how to contribute to this library. + +## Documentation * **[Hookup Guide](https://learn.sparkfun.com/tutorials/sparkfun-9dof-imu-icm-20948-breakout-hookup-guide)** - Basic hookup guide for the SparkFun 9DoF IMU Breakout. * **[Installing an Arduino Library Guide](https://learn.sparkfun.com/tutorials/installing-an-arduino-library)** - Basic information on how to install an Arduino library. -Products that use this Library ---------------------------------- -* [SparkFun 9DoF IMU Breakout - ICM-20948 (Qwiic)](https://www.sparkfun.com/products/15335) +## Products that use this Library +* [SparkFun 9DoF IMU Breakout - ICM-20948 (Qwiic) - SEN-15335](https://www.sparkfun.com/products/15335) +* [SparkFun OpenLog Artemis - DEV-16832](https://www.sparkfun.com/products/16832) +* [SparkFun MicroMod Asset Tracker Carrier Board - DEV-17272](https://www.sparkfun.com/products/17272) -License Information -------------------- +## License Information This product is _**open source**_! diff --git a/img/Contributing.JPG b/img/Contributing.JPG new file mode 100644 index 0000000000000000000000000000000000000000..39ebf68b048682d490c560ab5cd4fc67656ae778 GIT binary patch literal 62131 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 z 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%0AI7 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 literal 0 HcmV?d00001 From a0846d610aa92fb35ca9f31e7cbb555dbadfcaee Mon Sep 17 00:00:00 2001 From: PaulZC Date: Sat, 27 Feb 2021 07:41:28 +0000 Subject: [PATCH 2/7] Update Contributing.JPG --- img/Contributing.JPG | Bin 62131 -> 58028 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/img/Contributing.JPG b/img/Contributing.JPG index 39ebf68b048682d490c560ab5cd4fc67656ae778..6f943b9628f80f119128428a7abb8b1b21f42c95 100644 GIT binary patch literal 58028 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 O@3#G?hpWc#qyGWH=e)T9 literal 62131 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 z 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%0AI7 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 From 9c81d0c0bb21fc9a244c5f15f6569e14eda64c96 Mon Sep 17 00:00:00 2001 From: PaulZC Date: Sat, 27 Feb 2021 09:42:16 +0000 Subject: [PATCH 3/7] Adding DMP.md --- DMP.md | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 7 +++- 2 files changed, 120 insertions(+), 2 deletions(-) create mode 100644 DMP.md diff --git a/DMP.md b/DMP.md new file mode 100644 index 0000000..7162866 --- /dev/null +++ b/DMP.md @@ -0,0 +1,115 @@ +# InvenSense Digital Motion Processor (DMP™) + +## What is the Digital Motion Processor (DMP™)? + +In version 1.2 of this library, we added _partial_support for the InvenSense Digital Motion Processor (DMP™). The DMP is firmware which runs on the +ICM-20948 and which "offloads computation of motion processing algorithms from the host processor, improving system power performance". + +"The DMP enables ultra-low power run-time and background calibration of the accelerometer, gyroscope, and compass, maintaining optimal performance of +the sensor data for both physical and virtual sensors generated through sensor fusion." + +The DMP allows the accelerometer, gyro and magnetometer data to be combined (fused) so that Quaternion data can be produced. + +The DMP firmware binary has been available for quite some time. It is included in InvenSense's "MotionLink" and "Enbedded Motion Driver (eMD)" examples +which can be downloaded from the InvenSense Developers Corner. However, the code is opaque and difficult to follow. + +Users like @ericalbers have [ported the InvenSense example code to the Arduino environment](https://github.com/ericalbers/ICM20948_DMP_Arduino) previously. We are +grateful to Eric as his code allowed us to reverse-engineer some of the ICM-20948 configuration steps. + +We are also grateful to InvenSense themselves for sharing with us a _confidential & proprietary_ document called "_Application Note: Programming Sequence for +ICM-20648 DMP Hardware Function_". InvenSense admit that the document is not complete and have asked us not to share it openly. + +The InvenSense document and the bus traffic we captured using Eric's port have allowed us to add _partial_ support for the DMP to this library, using our +own functions. We say _partial_ because, at the time of writing, our library does not support: activity recognition, step counting, pick-up and tap-detection. +It does however support: +- raw and calibrated accelerometer, gyro and compass data and accuracy +- 6-axis and 9-axis Quaternion data (including Game Rotation Vector data) +- Geomagnetic Rotation Vector data + +We have added [three new examples](https://github.com/sparkfun/SparkFun_ICM-20948_ArduinoLibrary/tree/master/examples/Arduino) to show how to configure the DMP and read: +9-axis Quaternion data; 6-axis Quaternion converted to Euler angles (roll, pitch & yaw); raw accelerometer data. + +## Is DMP support enabled by default? + +No. The DMP occupies 14kBytes of program memory and so, to allow the library to continue to run on processors with limited memory, DMP support is disabled by default. + +You can enable it by editing the file called ```ICM_20948_C.h``` and uncommenting [line 29](https://github.com/sparkfun/SparkFun_ICM-20948_ArduinoLibrary/blob/master/src/util/ICM_20948_C.h#L29): + +Change: + +``` +//#define ICM_20948_USE_DMP +``` + +to: + +``` +#define ICM_20948_USE_DMP +``` + +You will find ```ICM_20948_C.h``` in the library _src\util_ folder. If you are using Windows, you will find it in _Documents\Arduino\libraries\SparkFun_ICM-20948_ArduinoLibrary\src\util_. + +## How is the DMP loaded and started? + +The DMP firmware is loaded into the ICM-20948's processor memory space via three special Bank 0 registers: +- **AGB0_REG_MEM_START_ADDR** (0x7C) - the address which AGB0_REG_MEM_R_W reads from or writes to (it auto-increments after each read or write) +- **AGB0_REG_MEM_R_W** (0x7D) - the memory read/write register +- **AGB0_REG_MEM_BANK_SEL** (0x7E) - the memory bank select. The complete read/write address is: (AGB0_REG_MEM_BANK_SEL * 256) + AGB0_REG_MEM_START_ADDR + +The firmware binary (14301 Bytes) is written into processor memory starting at address 0x90. ```loadDMPFirmware``` automatically breaks the code up into 256 byte blocks and increments **AGB0_REG_MEM_BANK_SEL** during the writing. + +Before the DMP is enabled, the 16-bit register **AGB2_REG_PRGM_START_ADDRH** (Bank 2, 0x50) needs to be loaded with the program start address. ```setDMPstartAddress``` does this for you. + +The DMP is enabled or reset by setting bits in the Bank 0 register **AGB0_REG_USER_CTRL** (0x03). ```enableDMP``` and ```resetDMP``` do this for you. + +The helper functions ```readDMPmems``` and ```writeDMPmems``` will let you read and write data directly from the DMP memory space. + +## How do I access the DMP data? + +The DMP data is returned via the FIFO (First In First Out). ```readDMPdataFromFIFO``` checks if any data is present in the FIFO (by calling ```getFIFOcount``` which reads the 16-bit register **AGB0_REG_FIFO_COUNT_H** (0x70)). If data is present, it is copied into a ```icm_20948_DMP_data_t``` struct. + +```readDMPdataFromFIFO``` will return: +- ```ICM_20948_Stat_FIFONoDataAvail``` if no data or incomplete data is available +- ```ICM_20948_Stat_Ok``` if a valid frame was read +- ```ICM_20948_Stat_FIFOMoreDataAvail``` if a valid frame was read _and_ the FIFO contains more (unread) data + +You can examine the ```icm_20948_DMP_data_t data.header``` to see what data the frame contained. ```data.header``` is a bit field; each bit indicates what data is present: +- **DMP_header_bitmap_Compass_Calibr** (0x0020) +- **DMP_header_bitmap_Gyro_Calibr** (0x0040) +- **DMP_header_bitmap_Geomag** (0x0100) +- **DMP_header_bitmap_PQuat6** (0x0200) +- **DMP_header_bitmap_Quat9** (0x0400) +- **DMP_header_bitmap_Quat6** (0x0800) +- **DMP_header_bitmap_ALS** (0x1000) +- **DMP_header_bitmap_Compass** (0x2000) +- **DMP_header_bitmap_Gyro** (0x4000) +- **DMP_header_bitmap_Accel** (0x8000) + +**DMP_header_bitmap_Header2** (0x0008) indicates if any secondary data was included. If the **DMP_header_bitmap_Header2** bit is set, the frame also contained one or more of: +- **DMP_header2_bitmap_Compass_Accuracy** (0x1000) +- **DMP_header2_bitmap_Gyro_Accuracy** (0x2000) +- **DMP_header2_bitmap_Accel_Accuracy** (0x4000) + +## The DMP examples are verbose. Is that deliberate? + +Yes, it certainly is! As you can tell from the examples, we are still gaining experience with the DMP. We have _deliberately_ written the examples so you can follow each step as the DMP is configured. + +At some point in the future, we may hide the DMP configuration in a separate function. But, for now, you get to see the full configuration, warts and all! + +## Where are the DMP registers defined? + +You will find the definitions in ```ICM_20948_DMP.h```. + +That file also includes the definition for the ```icm_20948_DMP_data_t``` struct which is loaded with DMP data from the FIFO. + +## Can the DMP generate interrupts? + +Yes it can, but you might find that they are not fully supported as we have not tested them. The main functions you will need to experiment with are ```intEnableDMP``` and ```enableDMPSensorInt```. + +## How is the DMP data rate set? + +We don't know the complete answer to this. As we understand it, it is a _combination_ of the raw sensor rate (set by ```setSampleRate```) and the multiple DMP Output Data Rate (ODR) registers (set by ```setDMPODRrate```). The documentation says that the "DMP is capable of outputting multiple sensor data at different rates to FIFO". So, in theory, you can have (e.g.) raw accelerometer data and Quaternion data arriving at different rates, but we have not tested that. + +## Can I contribute to this library? + +Absolutely! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for further details. diff --git a/README.md b/README.md index 3147917..f580425 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ -# SparkFun_ICM-20948_ArduinoLibrary +# SparkFun ICM-20948 ArduinoLibrary -This is the library for the [SparkFun 9DoF IMU Breakout - ICM-20948 (Qwiic)](https://www.sparkfun.com/products/15335). +This is the SparkFun library for the TDK InvenSense ICM-20948 Inertial Measurement Unit 9-Degree Of Freedom sensor as used on the [SparkFun 9DoF IMU Breakout - ICM-20948 (Qwiic)](https://www.sparkfun.com/products/15335). + +Version 1.2 of the library includes support for the InvenSense Digital Motion Processor (DMP™). You can find further details in [DMP.md](./DMP.md). ## Contributing @@ -13,6 +15,7 @@ If you would like to contribute to this library: please do, we truly appreciate * [**keywords.txt**](./keywords.txt) - Keywords from this library that will be highlighted in the Arduino IDE. * [**library.properties**](./library.properties) - General library properties for the Arduino package manager. * [**CONTRIBUTING.md**](./CONTRIBUTING.md) - Guidelines on how to contribute to this library. +* [**DMP.md**](./DMP.md) - Information about the InvenSense Digital Motion Processor (DMP™) ## Documentation From f3ff61ab27d5af260ccb71e9cd351a96eee8b4b2 Mon Sep 17 00:00:00 2001 From: PaulZC Date: Sat, 27 Feb 2021 10:00:44 +0000 Subject: [PATCH 4/7] Updating DMP.md --- DMP.md | 510 +++++++++++++++++++++++++++++++++++++++++++++++++++++- README.md | 2 +- 2 files changed, 507 insertions(+), 5 deletions(-) diff --git a/DMP.md b/DMP.md index 7162866..60568b9 100644 --- a/DMP.md +++ b/DMP.md @@ -2,7 +2,7 @@ ## What is the Digital Motion Processor (DMP™)? -In version 1.2 of this library, we added _partial_support for the InvenSense Digital Motion Processor (DMP™). The DMP is firmware which runs on the +In version 1.2 of this library, we added _partial_ support for the InvenSense Digital Motion Processor (DMP™). The DMP is firmware which runs on the ICM-20948 and which "offloads computation of motion processing algorithms from the host processor, improving system power performance". "The DMP enables ultra-low power run-time and background calibration of the accelerometer, gyroscope, and compass, maintaining optimal performance of @@ -10,7 +10,7 @@ the sensor data for both physical and virtual sensors generated through sensor f The DMP allows the accelerometer, gyro and magnetometer data to be combined (fused) so that Quaternion data can be produced. -The DMP firmware binary has been available for quite some time. It is included in InvenSense's "MotionLink" and "Enbedded Motion Driver (eMD)" examples +The DMP firmware binary has been available for quite some time. It is included in InvenSense's "MotionLink" and "Embedded Motion Driver (eMD)" examples which can be downloaded from the InvenSense Developers Corner. However, the code is opaque and difficult to follow. Users like @ericalbers have [ported the InvenSense example code to the Arduino environment](https://github.com/ericalbers/ICM20948_DMP_Arduino) previously. We are @@ -22,7 +22,7 @@ ICM-20648 DMP Hardware Function_". InvenSense admit that the document is not com The InvenSense document and the bus traffic we captured using Eric's port have allowed us to add _partial_ support for the DMP to this library, using our own functions. We say _partial_ because, at the time of writing, our library does not support: activity recognition, step counting, pick-up and tap-detection. It does however support: -- raw and calibrated accelerometer, gyro and compass data and accuracy +- Raw and calibrated accelerometer, gyro and compass data and accuracy - 6-axis and 9-axis Quaternion data (including Game Rotation Vector data) - Geomagnetic Rotation Vector data @@ -73,7 +73,7 @@ The DMP data is returned via the FIFO (First In First Out). ```readDMPdataFromFI - ```ICM_20948_Stat_Ok``` if a valid frame was read - ```ICM_20948_Stat_FIFOMoreDataAvail``` if a valid frame was read _and_ the FIFO contains more (unread) data -You can examine the ```icm_20948_DMP_data_t data.header``` to see what data the frame contained. ```data.header``` is a bit field; each bit indicates what data is present: +You can examine the 16-bit ```icm_20948_DMP_data_t data.header``` to see what data the frame contained. ```data.header``` is a bit field; each bit indicates what data is present: - **DMP_header_bitmap_Compass_Calibr** (0x0020) - **DMP_header_bitmap_Gyro_Calibr** (0x0040) - **DMP_header_bitmap_Geomag** (0x0100) @@ -113,3 +113,505 @@ We don't know the complete answer to this. As we understand it, it is a _combina ## Can I contribute to this library? Absolutely! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for further details. + +## Can I see the full DMP configuration captured from @ericalbers code? + +Brace yourself. Here it is: + +``` +/* + * From @ericalbers port of the InvenSense example (https://github.com/ericalbers/ICM20948_DMP_Arduino) + * The eric + InvenSense code configures the ICM-20948 (via I2C) as follows: + * + * Select and read register 0x00 (WhoAmI) + * ICM returns 0xEA + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Select and read register 0x03 (User Control) + * ICM returns 0xC0 + * Set register 0x07 (Power Management 2) to 0x47 (Reserved bit 6 set. Disable all Gyro axes) + * Select and read register 0x00 (WhoAmI) + * ICM returns 0xEA + * Set register 0x05 (Low Power Configuration) to 0x70 (I2C Master, Accel and Gyro in duty cycled mode) + * Set register 0x03 (User Control) to 0x00 (Disable DMP, disable FIFO, disable I2C Master) + * Set register 0x7C (Memory Start Address) to 0x90 + * ..... + * Write DMP firmware data to register 0x7D (Memory Read/Write) in blocks of 16 bytes + * During write, increment register 0x7E (Memory Bank Select) every 256 bytes + * ..... + * Verify DMP firmware by reading it all back again + * ..... + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x00 + * Set register 0x7F (Register Bank Select) to 0x20 == Bank 2 + * Write 0x1000 to register 0x50 (Program Start Address High) (Magic Number) + * Set register 0x7F (Register Bank Select) to 0x00 == Bank 0 + * Set register 0x7E (Memory Bank Select) to 0x00 + * Set register 0x7C (Memory Start Address) to 0x40 + * Write 0x0000 to memory (Data Out Control 1) (Disable all DMP features) + * Set register 0x7C (Memory Start Address) to 0x42 + * Write 0x0000 to memory (Data Out Control 2) (Disable all "header2" features) + * Set register 0x7C (Memory Start Address) to 0x4C + * Write 0x0000 to memory (Data Interrupt Control) (Disable DMP interrupts) + * Set register 0x7C (Memory Start Address) to 0x4E + * Write 0x0000 to memory (FIFO Watermark) (Set watermark to zero) + * Set register 0x7C (Memory Start Address) to 0x8A + * Write 0x0000 to memory (Data Ready Status) (Disable all data ready indicators) + * Set register 0x7E (Memory Bank Select) to 0x01 + * Set register 0x7C (Memory Start Address) to 0xFE + * Write 0x0320 to memory (31 * 16 + 14 = FIFO Watermark) (Set FIFO watermark to 800) + * Set register 0x10 (Reg Interrupt Enable) to 0x02 (Enable DMP interrupt to interrupt pin) + * Set register 0x12 (Reg Interrupt Enable 2) to 0x01 (Enable interrupt for FIFO overflow - 'channel' 0 only) + * Set register 0x26 (Single FIFO Priority Select) to 0xE4 (Worth investigating?) + * Select and read register 0x75 (Hardware Fix Disable) + * ICM returns 0x48 + * Set register 0x75 (Hardware Fix Disable) to 0x48 (Worth investigating?) + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x00 + * Set register 0x7F (Register Bank Select) to 0x20 == Bank 2 + * Set register 0x00 (Gyro Sample Rate Divider) to 0x13 + * Write 0x0013 to 0x10 (Accelerometer Sample Rate Divider 1&2) + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x20 + * Set register 0x7F (Register Bank Select) to 0x00 == Bank 0 + * Set register 0x7E (Memory Bank Select) to 0x03 + * Set register 0x7C (Memory Start Address) to 0x0A + * Write 0x0000 to memory (48 * 16 + 10 = BAC Rate) + * Set register 0x7C (Memory Start Address) to 0x08 + * Write 0x0000 to memory (48 * 16 + 8 = B2S Rate) + * Set register 0x76 (FIFO Config) to 0x00 + * Set register 0x68 (FIFO Reset) to 0x1F + * Set register 0x68 (FIFO Reset) to 0x1E + * Set register 0x66 (FIFO Enable 1) to 0x00 + * Set register 0x67 (FIFO Enable 2) to 0x00 + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x07 (Power Management 2) to 0x7F (Reserved bit 6 set, disable all accel and gyro axes) + * Set register 0x06 (Power Management 1) to 0x61 (Sleep mode on, low power on, auto clock) + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x00 + * Set register 0x7F (Register Bank Select) to 0x30 == Bank 3 + * Set register 0x05 (Peripheral 0 Control) to 0x00 + * Set register 0x09 (Peripheral 1 Control) to 0x00 + * Set register 0x0D (Peripheral 2 Control) to 0x00 + * Set register 0x11 (Peripheral 3 Control) to 0x00 + * Set register 0x01 (Master Control) to 0x10 + * Set register 0x00 (Master ODR Config) to 0x04 + * Set register 0x03 (Master Delay Control) to 0x8C + * Set register 0x04 (Peripheral 0 Register) to 0x00 + * Set register 0x05 (Peripheral 0 Control) to 0x81 + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x30 + * Set register 0x7F (Register Bank Select) to 0x00 == Bank 0 + * Set register 0x03 (User Control) to 0x20 + * ##### + * ##### + * ##### + * Set register 0x03 (User Control) to 0x00 + * Select and read register 0x3B (Ext Peripheral Sensor Data) + * ICM returns 0x48 + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x00 + * Set register 0x7F (Register Bank Select) to 0x30 == Bank 3 + * Set register 0x05 (Peripheral 0 Control) to 0x00 + * Set register 0x07 (Peripheral 1 Address) to 0x0C + * Set register 0x08 (Peripheral 1 Register) to 0x31 + * Set register 0x0A (Peripheral 1 Data) to 0x00 + * Set register 0x09 (Peripheral 1 Control) to 0x81 + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x30 + * Set register 0x7F (Register Bank Select) to 0x00 == Bank 0 + * Set register 0x03 (User Control) to 0x20 + * ##### + * ##### + * ##### + * Set register 0x03 (User Control) to 0x00 + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x00 + * Set register 0x7F (Register Bank Select) to 0x30 == Bank 3 + * Set register 0x09 (Peripheral 1 Control) to 0x00 + * Set register 0x05 (Peripheral 0 Control) to 0x00 + * Set register 0x09 (Peripheral 1 Control) to 0x00 + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x30 + * Set register 0x7F (Register Bank Select) to 0x00 == Bank 0 + * Set register 0x03 (User Control) to 0x00 + * Set register 0x7E (Memory Bank Select) to 0x01 + * Set register 0x7C (Memory Start Address) to 0x70 + * Write 0x09999999 to memory (23 * 16 + 0 = Compass Matrix 00) + * Set register 0x7C (Memory Start Address) to 0x74 + * Write 0x00000000 to memory (23 * 16 + 4 = Compass Matrix 01) + * Set register 0x7C (Memory Start Address) to 0x78 + * Write 0x00000000 to memory (23 * 16 + 8 = Compass Matrix 02) + * Set register 0x7C (Memory Start Address) to 0x7C + * Write 0x00000000 to memory (23 * 16 + 12 = Compass Matrix 10) + * Set register 0x7C (Memory Start Address) to 0x80 + * Write 0xF6666667 to memory (24 * 16 + 0 = Compass Matrix 11) + * Set register 0x7C (Memory Start Address) to 0x84 + * Write 0x00000000 to memory (24 * 16 + 4 = Compass Matrix 12) + * Set register 0x7C (Memory Start Address) to 0x88 + * Write 0x00000000 to memory (24 * 16 + 8 = Compass Matrix 20) + * Set register 0x7C (Memory Start Address) to 0x8C + * Write 0x00000000 to memory (24 * 16 + 12 = Compass Matrix 21) + * Set register 0x7C (Memory Start Address) to 0x90 + * Write 0xF6666667 to memory (25 * 16 + 0 = Compass Matrix 22) + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Set register 0x7E (Memory Bank Select) to 0x0D + * Set register 0x7C (Memory Start Address) to 0x00 + * Write 0x40000000 to memory (208 * 16 + 0 = B2S Mounting Matrix 00) + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Set register 0x7C (Memory Start Address) to 0x04 + * Write 0x00000000 to memory (208 * 16 + 4 = B2S Mounting Matrix 01) + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Set register 0x7C (Memory Start Address) to 0x08 + * Write 0x00000000 to memory (208 * 16 + 8 = B2S Mounting Matrix 02) + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Set register 0x7C (Memory Start Address) to 0x0C + * Write 0x00000000 to memory (208 * 16 + 12 = B2S Mounting Matrix 10) + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Set register 0x7C (Memory Start Address) to 0x10 + * Write 0x40000000 to memory (209 * 16 + 0 = B2S Mounting Matrix 11) + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Set register 0x7C (Memory Start Address) to 0x14 + * Write 0x00000000 to memory (209 * 16 + 4 = B2S Mounting Matrix 12) + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Set register 0x7C (Memory Start Address) to 0x18 + * Write 0x00000000 to memory (209 * 16 + 8 = B2S Mounting Matrix 20) + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Set register 0x7C (Memory Start Address) to 0x1C + * Write 0x00000000 to memory (209 * 16 + 12 = B2S Mounting Matrix 21) + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Set register 0x7C (Memory Start Address) to 0x20 + * Write 0x40000000 to memory (210 * 16 + 0 = B2S Mounting Matrix 22) + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Set register 0x7C (Memory Start Address) to 0x00 + * Write 0x40000000 to memory (208 * 16 + 0 = B2S Mounting Matrix 00) + * ..... + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x00 + * Set register 0x7F (Register Bank Select) to 0x20 == Bank 2 + * Select and read register 0x14 (Accel Config) + * ICM returns 0x02 + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x20 + * Set register 0x7F (Register Bank Select) to 0x00 == Bank 0 + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x00 + * Set register 0x7F (Register Bank Select) to 0x20 == Bank 2 + * Set register 0x14 (Accel Config) to 0x02 + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x20 + * Set register 0x7F (Register Bank Select) to 0x00 == Bank 0 + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x00 + * Set register 0x7F (Register Bank Select) to 0x20 == Bank 2 + * Select and read register 0x15 (Accel Config 2) + * ICM returns 0x00 + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x20 + * Set register 0x7F (Register Bank Select) to 0x00 == Bank 0 + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x00 + * Set register 0x7F (Register Bank Select) to 0x20 == Bank 2 + * Set register 0x15 (Accel Config 2) to 0x00 + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x20 + * Set register 0x7F (Register Bank Select) to 0x00 == Bank 0 + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Set register 0x7E (Memory Bank Select) to 0x01 + * Set register 0x7C (Memory Start Address) to 0xE0 + * Write 0x40000000 to memory (30 * 16 + 0 = Accelerometer Scale) + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Set register 0x7E (Memory Bank Select) to 0x04 + * Set register 0x7C (Memory Start Address) to 0xF4 + * Write 0x00040000 to memory (79 * 16 + 4 = Accelerometer Scale 2) + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x00 + * Set register 0x7F (Register Bank Select) to 0x20 == Bank 2 + * Select and read register 0x14 (Accel Config) + * ICM returns 0x02 + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x20 + * Set register 0x7F (Register Bank Select) to 0x00 == Bank 0 + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x00 + * Set register 0x7F (Register Bank Select) to 0x20 == Bank 2 + * Set register 0x14 (Accel Config) to 0x02 + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x20 + * Set register 0x7F (Register Bank Select) to 0x00 == Bank 0 + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x00 + * Set register 0x7F (Register Bank Select) to 0x20 == Bank 2 + * Select and read register 0x15 (Accel Config 2) + * ICM returns 0x00 + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x20 + * Set register 0x7F (Register Bank Select) to 0x00 == Bank 0 + * Set register 0x06 (Power Management 1) to 0x21 (Turn on low power, auto clock) + * Set register 0x06 (Power Management 1) to 0x01 (Auto clock) + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x00 + * Set register 0x7F (Register Bank Select) to 0x20 == Bank 2 + * Set register 0x15 (Accel Config 2) to 0x00 + * ..... + * Set register 0x7E (Memory Bank Select) to 0x01 + * Set register 0x7C (Memory Start Address) to 0xE0 + * Write 0x04000000 to memory (30 * 16 + 0 = Accelerometer Scale) + * ..... + * Set register 0x7E (Memory Bank Select) to 0x04 + * Set register 0x7C (Memory Start Address) to 0xF4 + * Write 0x00040000 to memory (79 * 16 + 4 = Accelerometer Scale 2) + * ..... + * Select and read register 0x7F (Register Bank Select) + * ICM returns 0x00 + * Set register 0x7F (Register Bank Select) to 0x20 == Bank 2 + * Select and read register 0x01 (Gyro Config 1) + * ICM returns 0x07 + * ..... + * Set register 0x01 (Gyro Config 1) to 0x07 + * ..... + * Select and read register 0x02 (Gyro Config 2) + * ICM returns 0x00 + * ..... + * Set register 0x02 (Gyro Config 2) to 0x00 + * ..... + * Set register 0x7F (Register Bank Select) to 0x10 == Bank 1 + * Select and read register 0x28 (Timebase Correction PLL) + * ICM returns 0x18 + * ..... + * Set register 0x7E (Memory Bank Select) to 0x01 + * Set register 0x7C (Memory Start Address) to 0x30 + * Write 0x26FAB4B1 to memory (19 * 16 + 0 = Gyro Scaling Factor) + * ..... + * Set register 0x7E (Memory Bank Select) to 0x04 + * Set register 0x7C (Memory Start Address) to 0x8C + * Write 0x10000000 to memory (72 * 16 + 12 = Gyro Fullscale) + * ..... + * Set register 0x7F (Register Bank Select) to 0x20 == Bank 2 + * Select and read register 0x01 (Gyro Config 1) + * ICM returns 0x07 + * ..... + * Set register 0x01 (Gyro Config 1) to 0x07 + * ..... + * Select and read register 0x02 (Gyro Config 2) + * ICM returns 0x00 + * ..... + * Set register 0x02 (Gyro Config 2) to 0x00 + * ..... + * Set register 0x7C (Memory Start Address) to 0x8C + * Write 0x10000000 to memory (72 * 16 + 12 = Gyro Fullscale) + * ..... + * Set register 0x7F (Register Bank Select) to 0x20 == Bank 2 + * Select and read register 0x01 (Gyro Config 1) + * ICM returns 0x07 + * ..... + * Set register 0x01 (Gyro Config 1) to 0x07 + * ..... + * Select and read register 0x02 (Gyro Config 2) + * ICM returns 0x00 + * ..... + * Set register 0x02 (Gyro Config 2) to 0x00 + * ..... + * Set register 0x7F (Register Bank Select) to 0x00 == Bank 0 + * ..... + * Set register 0x7C (Memory Start Address) to 0x8C + * Write 0x10000000 to memory (72 * 16 + 12 = Gyro Fullscale) + * Set register 0x06 (Power Management 1) to 0x21 + * ..... + * Set register 0x07 (Power Management 2) to 0x47 + * Set register 0x06 (Power Management 1) to 0x01 + * Set register 0x03 (User Control) to 0xC0 + * Set register 0x7E (Memory Bank Select) to 0x00 + * Set register 0x7C (Memory Start Address) to 0x40 + * Write 0x4048 to memory (4 * 16 + 0 == Data Out Control 1) + * Set register 0x7C (Memory Start Address) to 0x4C + * Write 0x4048 to memory (4 * 16 + 12 == Data Interrupt Control) + * Set register 0x7C (Memory Start Address) to 0x42 + * Write 0x2000 to memory (4 * 16 + 2 == Data Out Control 2) + * Set register 0x7C (Memory Start Address) to 0x4E + * Write 0x0100 to memory (4 * 16 + 14 == Motion Event Control) + * ..... + * Set register 0x7F (Register Bank Select) to 0x20 == Bank 2 + * Set register 0x00 (Gyro Sample Rate Divider) to 0xE0 + * ..... + * Set register 0x7F (Register Bank Select) to 0x00 == Bank 0 + * Set register 0x7C (Memory Start Address) to 0xBA + * Write 0x0000 to memory (11 * 16 + 10 == ODR Gyro) + * Set register 0x7C (Memory Start Address) to 0xB8 + * Write 0x0000 to memory (11 * 16 + 8 == ODR Gyro Calibr) + * Set register 0x7E (Memory Bank Select) to 0x01 + * Set register 0x7C (Memory Start Address) to 0x30 + * Write 0x7FFFFFFF to memory (19 * 16 + 0 == Gyro Scaling Factor) + * Set register 0x07 (Power Management 2) to 0x78 + * Set register 0x7E (Memory Bank Select) to 0x00 + * Set register 0x7C (Memory Start Address) to 0x8A + * Write 0x0001 to memory (8 * 16 + 10 == Data Ready Status) + * ..... + * Set register 0x7C (Memory Start Address) to 0x40 + * Write 0xC048 to memory (4 * 16 + 0 == Data Out Control 1) + * Set register 0x7C (Memory Start Address) to 0x4C + * Write 0xC048 to memory (4 * 16 + 12 == Data Interrupt Control) + * Set register 0x7C (Memory Start Address) to 0x42 + * Write 0x6000 to memory (4 * 16 + 2 == Data Out Control 2) + * Set register 0x7C (Memory Start Address) to 0x4E + * Write 0x0300 to memory (4 * 16 + 14 == FIFO Watermark) + * Set register 0x7E (Memory Bank Select) to 0x01 + * Set register 0x7C (Memory Start Address) to 0x0C + * Write 0x00E8BA2E to memory (16 * 16 + 12 == Accel Only Gain) + * Set register 0x7E (Memory Bank Select) to 0x05 + * Set register 0x7C (Memory Start Address) to 0xB0 + * Write 0x06666666 to memory (91 * 16 + 0 == Accel Alpha Var) + * Set register 0x7C (Memory Start Address) to 0xC0 + * Write 0x39999A to memory (92 * 16 + 0 == Accel A Var) + * Set register 0x7C (Memory Start Address) to 0xE4 + * Write 0x0000 to memory (94 * 16 + 4 == Accel Cal Rate) + * ..... + * Set register 0x7F (Register Bank Select) to 0x20 == Bank 2 + * Set register 0x10 (Accel Sample Rate Divider 1&2) to 0x00E0 + * ..... + * Set register 0x7F (Register Bank Select) to 0x00 == Bank 0 + * Set register 0x7E (Memory Bank Select) to 0x00 + * Set register 0x7C (Memory Start Address) to 0xBE + * Write 0x0000 to memory (11 * 16 + 14 == ODR Accel) + * Set register 0x7C (Memory Start Address) to 0xBA + * Write 0x0000 to memory (11 * 16 + 10 == ODR Gyro) + * Set register 0x7C (Memory Start Address) to 0xB8 + * Write 0x0000 to memory (11 * 16 + 8 == ODR Gyro Calibr) + * Set register 0x07 (Power Management 2) to 0x40 + * Set register 0x7C (Memory Start Address) to 0x8A + * Write 0x0003 to memory (8 * 16 + 10 == Data Ready Status) + * ..... + * Set register 0x7C (Memory Start Address) to 0x40 + * Write 0xC848 to memory (4 * 16 + 0 == Data Out Control 1) + * Set register 0x7C (Memory Start Address) to 0x4C + * Write 0xC848 to memory (4 * 16 + 12 == Data Interrupt Control) + * Set register 0x7C (Memory Start Address) to 0x42 + * Write 0x6000 to memory (4 * 16 + 2 == Data Out Control 2) + * Set register 0x7C (Memory Start Address) to 0x4E + * Write 0x0300 to memory (4 * 16 + 14 == FIFO Watermark) + * Set register 0x7C (Memory Start Address) to 0xBE + * Write 0x0000 to memory (11 * 16 + 14 == ODR Accel) + * Set register 0x7C (Memory Start Address) to 0xBA + * Write 0x0000 to memory (11 * 16 + 10 == ODR Gyro) + * Set register 0x7C (Memory Start Address) to 0xB8 + * Write 0x0000 to memory (11 * 16 + 8 == ODR Gyro Calibr) + * Set register 0x07 (Power Management 2) to 0x40 + * Set register 0x7C (Memory Start Address) to 0x8A + * Write 0x0003 to memory (8 * 16 + 10 == Data Ready Status) + * ..... + * Set register 0x7C (Memory Start Address) to 0x40 + * Write 0xC848 to memory (4 * 16 + 0 == Data Out Control 1) + * Set register 0x7C (Memory Start Address) to 0x4C + * Write 0xC848 to memory (4 * 16 + 12 == Data Interrupt Control) + * Set register 0x7C (Memory Start Address) to 0x42 + * Write 0x6000 to memory (4 * 16 + 2 == Data Out Control 2) + * Set register 0x7C (Memory Start Address) to 0x4E + * Write 0x0300 to memory (4 * 16 + 14 == FIFO Watermark) + * Set register 0x7C (Memory Start Address) to 0xBE + * Write 0x0000 to memory (11 * 16 + 14 == ODR Accel) + * Set register 0x7C (Memory Start Address) to 0xBA + * Write 0x0000 to memory (11 * 16 + 10 == ODR Gyro) + * Set register 0x7C (Memory Start Address) to 0xB8 + * Write 0x0000 to memory (11 * 16 + 8 == ODR Gyro Calibr) + * Set register 0x07 (Power Management 2) to 0x40 + * Set register 0x7C (Memory Start Address) to 0x8A + * Write 0x0003 to memory (8 * 16 + 10 == Data Ready Status) + * Set register 0x06 (Power Management 1) to 0x21 + * Select and read register 0x19 (Interrupt Status) + * ICM returns 0x0A + * Select and read register 0x18 (DMP Interrupt Status) + * ICM returns 0x01 + * Select and read register 0x70 (FIFO Count Hi&Lo) + * ICM returns 0x0000 + * Select and read register 0x19 (Interrupt Status) + * ICM returns 0x00 + * Select and read register 0x18 (DMP Interrupt Status) + * ICM returns 0x00 + * Select and read register 0x70 (FIFO Count Hi&Lo) + * ICM returns 0x0000 + * ..... + * ..... + * Select and read register 0x19 (Interrupt Status) + * ICM returns 0x04 + * Select and read register 0x18 (DMP Interrupt Status) + * ICM returns 0x00 + * Select and read register 0x70 (FIFO Count Hi&Lo) + * ICM returns 0x0000 + * Select and read register 0x19 (Interrupt Status) + * ICM returns 0x00 + * Select and read register 0x18 (DMP Interrupt Status) + * ICM returns 0x00 + * Select and read register 0x70 (FIFO Count Hi&Lo) + * ICM returns 0x0000 + * ..... + * ..... + * Select and read register 0x19 (Interrupt Status) + * ICM returns 0x00 + * Select and read register 0x18 (DMP Interrupt Status) + * ICM returns 0x00 + * Select and read register 0x70 (FIFO Count Hi&Lo) + * ICM returns 0x001C + * Select and read register 0x72 (FIFO Read Write) + * Data Stream is: + * Header: 0xC048 : Accel & Gyro & Gyro_Calibr & Header2 + * Header2: 0x6000 : Accel_Accuracy & Gyro_Accuracy + * Accel: 0x0130 0xFD3C 0x1FD0 + * Gyro: 0xFFE7 0x000C 0x0007 + * Gyro_Bias: 0x0000 0x0000 0x0000 + * Accel_Accuracy: 0x0000 + * Gyro_Accuracy: 0x0000 + * Footer: 0x20DD + * ..... + * Header: 0xC040 : Accel & Gyro & Gyro_Calibr + * Accel: 0x0178 0xFD84 0x1F44 + * Gyro: 0xFFEE 0x0016 0x0000 + * Gyro_Bias: 0x0000 0x0000 0x0000 + * Footer: 0x70DD + * ..... + * Header: 0xC040 : Accel & Gyro & Gyro_Calibr + * Accel: 0x0134 0xFDAC 0x1FC4 + * Gyro: 0xFFF9 0x0013 0x0001 + * Gyro_Bias: 0x0000 0x0000 0x0000 + * Footer: 0x70DD + * ..... + * Select and read register 0x19 (Interrupt Status) + * ICM returns 0x02 + * Select and read register 0x18 (DMP Interrupt Status) + * ICM returns 0x01 + * Select and read register 0x70 (FIFO Count Hi&Lo) + * ICM returns 0x0022 + * Select and read register 0x72 (FIFO Read Write) + * Data Stream is: + * Header: 0xC840 : Accel & Gyro & Quat6 & Gyro_Calibr + * Accel: 0x0188 0xFDC4 0x1FA4 + * Gyro: 0xFFF1 0x0019 0xFFFF + * Gyro_Bias: 0x0000 0x0000 0x0000 + * Quat6: 0xFFC7A057 0x0030BD92 0x000A6646 + * Footer: 0x00DB +*/ +``` diff --git a/README.md b/README.md index f580425..90df95a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# SparkFun ICM-20948 ArduinoLibrary +# SparkFun ICM-20948 Arduino Library This is the SparkFun library for the TDK InvenSense ICM-20948 Inertial Measurement Unit 9-Degree Of Freedom sensor as used on the [SparkFun 9DoF IMU Breakout - ICM-20948 (Qwiic)](https://www.sparkfun.com/products/15335). From 372b12cc3dd4ebe810dcc3276ec919fd149b35aa Mon Sep 17 00:00:00 2001 From: PaulZC Date: Sat, 27 Feb 2021 10:06:46 +0000 Subject: [PATCH 5/7] Update DMP.md --- DMP.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/DMP.md b/DMP.md index 60568b9..6d8207e 100644 --- a/DMP.md +++ b/DMP.md @@ -56,7 +56,8 @@ The DMP firmware is loaded into the ICM-20948's processor memory space via three - **AGB0_REG_MEM_R_W** (0x7D) - the memory read/write register - **AGB0_REG_MEM_BANK_SEL** (0x7E) - the memory bank select. The complete read/write address is: (AGB0_REG_MEM_BANK_SEL * 256) + AGB0_REG_MEM_START_ADDR -The firmware binary (14301 Bytes) is written into processor memory starting at address 0x90. ```loadDMPFirmware``` automatically breaks the code up into 256 byte blocks and increments **AGB0_REG_MEM_BANK_SEL** during the writing. +The firmware binary (14301 Bytes) is written into processor memory starting at address 0x90. ```loadDMPFirmware``` automatically breaks the code up into 256 byte blocks and increments +**AGB0_REG_MEM_BANK_SEL** during the writing. Before the DMP is enabled, the 16-bit register **AGB2_REG_PRGM_START_ADDRH** (Bank 2, 0x50) needs to be loaded with the program start address. ```setDMPstartAddress``` does this for you. @@ -66,7 +67,8 @@ The helper functions ```readDMPmems``` and ```writeDMPmems``` will let you read ## How do I access the DMP data? -The DMP data is returned via the FIFO (First In First Out). ```readDMPdataFromFIFO``` checks if any data is present in the FIFO (by calling ```getFIFOcount``` which reads the 16-bit register **AGB0_REG_FIFO_COUNT_H** (0x70)). If data is present, it is copied into a ```icm_20948_DMP_data_t``` struct. +The DMP data is returned via the FIFO (First In First Out). ```readDMPdataFromFIFO``` checks if any data is present in the FIFO (by calling ```getFIFOcount``` which reads the 16-bit register +**AGB0_REG_FIFO_COUNT_H** (0x70)). If data is present, it is copied into a ```icm_20948_DMP_data_t``` struct. ```readDMPdataFromFIFO``` will return: - ```ICM_20948_Stat_FIFONoDataAvail``` if no data or incomplete data is available @@ -108,7 +110,9 @@ Yes it can, but you might find that they are not fully supported as we have not ## How is the DMP data rate set? -We don't know the complete answer to this. As we understand it, it is a _combination_ of the raw sensor rate (set by ```setSampleRate```) and the multiple DMP Output Data Rate (ODR) registers (set by ```setDMPODRrate```). The documentation says that the "DMP is capable of outputting multiple sensor data at different rates to FIFO". So, in theory, you can have (e.g.) raw accelerometer data and Quaternion data arriving at different rates, but we have not tested that. +We don't know the complete answer to this. As we understand it, it is a _combination_ of the raw sensor rate (set by ```setSampleRate```) and the multiple DMP Output Data Rate (ODR) registers +(set by ```setDMPODRrate```). The documentation says that the "DMP is capable of outputting multiple sensor data at different rates to FIFO". So, in theory, you can have (e.g.) raw accelerometer +data and Quaternion data arriving at different rates, but we have not tested that. ## Can I contribute to this library? @@ -118,6 +122,9 @@ Absolutely! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for further details. Brace yourself. Here it is: +- **.....** - indicates where I've omitted some of the bus transactions. There are _many_ writes to the Power Management 1 register to enable and disable low power mode. I have omitted many of those. +- **#####** - indicates an interval in the I2C bus traffic. + ``` /* * From @ericalbers port of the InvenSense example (https://github.com/ericalbers/ICM20948_DMP_Arduino) From 45ce9d74d6c4be17226caa0cbdfe33b1b1b72497 Mon Sep 17 00:00:00 2001 From: PaulZC Date: Sat, 27 Feb 2021 10:20:24 +0000 Subject: [PATCH 6/7] Update DMP.md --- DMP.md | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/DMP.md b/DMP.md index 6d8207e..4b0e0ba 100644 --- a/DMP.md +++ b/DMP.md @@ -92,6 +92,28 @@ You can examine the 16-bit ```icm_20948_DMP_data_t data.header``` to see what da - **DMP_header2_bitmap_Gyro_Accuracy** (0x2000) - **DMP_header2_bitmap_Accel_Accuracy** (0x4000) +## Which DMP features are currently supported? + +All of the following _should_ work, but we have not tested them all: + +``` +INV_ICM20948_SENSOR_ACCELEROMETER (16-bit accel) +INV_ICM20948_SENSOR_GYROSCOPE (16-bit gyro + 32-bit calibrated gyro) +INV_ICM20948_SENSOR_RAW_ACCELEROMETER (16-bit accel) +INV_ICM20948_SENSOR_RAW_GYROSCOPE (16-bit gyro + 32-bit calibrated gyro) +INV_ICM20948_SENSOR_MAGNETIC_FIELD_UNCALIBRATED (16-bit compass) +INV_ICM20948_SENSOR_GYROSCOPE_UNCALIBRATED (16-bit gyro) +INV_ICM20948_SENSOR_STEP_DETECTOR (Pedometer Step Detector) +INV_ICM20948_SENSOR_STEP_COUNTER (Pedometer Step Detector) +INV_ICM20948_SENSOR_GAME_ROTATION_VECTOR (32-bit 6-axis quaternion) +INV_ICM20948_SENSOR_ROTATION_VECTOR (32-bit 9-axis quaternion + heading accuracy) +INV_ICM20948_SENSOR_GEOMAGNETIC_ROTATION_VECTOR (32-bit Geomag RV + heading accuracy) +INV_ICM20948_SENSOR_GEOMAGNETIC_FIELD (32-bit calibrated compass) +INV_ICM20948_SENSOR_GRAVITY (32-bit 6-axis quaternion) +INV_ICM20948_SENSOR_LINEAR_ACCELERATION (16-bit accel + 32-bit 6-axis quaternion) +INV_ICM20948_SENSOR_ORIENTATION (32-bit 9-axis quaternion + heading accuracy) +``` + ## The DMP examples are verbose. Is that deliberate? Yes, it certainly is! As you can tell from the examples, we are still gaining experience with the DMP. We have _deliberately_ written the examples so you can follow each step as the DMP is configured. @@ -122,8 +144,8 @@ Absolutely! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for further details. Brace yourself. Here it is: -- **.....** - indicates where I've omitted some of the bus transactions. There are _many_ writes to the Power Management 1 register to enable and disable low power mode. I have omitted many of those. -- **#####** - indicates an interval in the I2C bus traffic. +- **.....** indicates where I've omitted some of the bus transactions. There are _many_ writes to the Power Management 1 register to enable and disable low power mode. I have omitted many of those. +- **#####** indicates an interval in the I2C bus traffic. ``` /* From d957d023e2aca224e08d3c19a826dc24f77820dc Mon Sep 17 00:00:00 2001 From: PaulZC Date: Sat, 27 Feb 2021 10:46:13 +0000 Subject: [PATCH 7/7] Update keywords. Change version to 1.2.0. --- keywords.txt | 102 ++++++++++++++++++++++++++++++++++++++++----- library.properties | 6 +-- 2 files changed, 95 insertions(+), 13 deletions(-) diff --git a/keywords.txt b/keywords.txt index 52d7741..f618c28 100644 --- a/keywords.txt +++ b/keywords.txt @@ -10,7 +10,7 @@ ICM_20948_I2C KEYWORD1 ICM_20948_SPI KEYWORD1 ICM_20948_Status_e KEYWORD1 ICM_20948_InternalSensorID_bm KEYWORD1 - +icm_20948_DMP_data_t KEYWORD1 ####################################### # Methods and Functions (KEYWORD2) @@ -23,6 +23,7 @@ debugPrintStatus KEYWORD2 debugPrint KEYWORD2 debugPrintln KEYWORD2 doDebugPrint KEYWORD2 +debugPrintf KEYWORD2 getAGMT KEYWORD2 magX KEYWORD2 magY KEYWORD2 @@ -49,6 +50,22 @@ setFullScale KEYWORD2 setDLPFcfg KEYWORD2 enableDLPF KEYWORD2 setSampleRate KEYWORD2 +clearInterrupts +cfgIntActiveLow KEYWORD2 +cfgIntOpenDrain KEYWORD2 +cfgIntLatch KEYWORD2 +cfgIntAnyReadToClear KEYWORD2 +cfgFsyncActiveLow KEYWORD2 +cfgFsyncIntMode KEYWORD2 +intEnableI2C KEYWORD2 +intEnableDMP KEYWORD2 +intEnablePLL KEYWORD2 +intEnableWOM KEYWORD2 +intEnableWOF KEYWORD2 +intEnableRawDataReady KEYWORD2 +intEnableOverflowFIFO KEYWORD2 +intEnableWatermarkFIFO KEYWORD2 +WOMThreshold KEYWORD2 i2cMasterPassthrough KEYWORD2 i2cMasterEnable KEYWORD2 i2cControllerConfigurePeripheral KEYWORD2 @@ -56,21 +73,28 @@ i2cControllerPeriph4Transaction KEYWORD2 i2cMasterSingleW KEYWORD2 i2cMasterSingleR KEYWORD2 startupDefault KEYWORD2 -startupMagnetometer KEYWORD2 -getMagnetometerData KEYWORD2 read KEYWORD2 write KEYWORD2 -ICM_20948_I2C KEYWORD2 -begin KEYWORD2 startupMagnetometer KEYWORD2 +magWhoIAm KEYWORD2 readMag KEYWORD2 writeMag KEYWORD2 -magWhoIAm KEYWORD2 -magIsConnected KEYWORD2 -getMagnetometerData KEYWORD2 -ICM_20948_SPI KEYWORD2 +enableFIFO KEYWORD2 +resetFIFO KEYWORD2 +setFIFOmode KEYWORD2 +getFIFOcount KEYWORD2 +readFIFO KEYWORD2 +enableDMP KEYWORD2 +resetDMP KEYWORD2 +loadDMPFirmware KEYWORD2 +setDMPstartAddress KEYWORD2 +enableDMPSensor KEYWORD2 +enableDMPSensorInt KEYWORD2 +writeDMPmems KEYWORD2 +readDMPmems KEYWORD2 +setDMPODRrate KEYWORD2 +readDMPdataFromFIFO KEYWORD2 begin KEYWORD2 -WOMThreshold KEYWORD2 ####################################### # Constants (LITERAL1) @@ -95,6 +119,13 @@ ICM_20948_Stat_WrongID LITERAL1 ICM_20948_Stat_InvalSensor LITERAL1 ICM_20948_Stat_NoData LITERAL1 ICM_20948_Stat_SensorNotSupported LITERAL1 +ICM_20948_Stat_DMPNotSupported LITERAL1 +ICM_20948_Stat_DMPVerifyFail LITERAL1 +ICM_20948_Stat_FIFONoDataAvail LITERAL1 +ICM_20948_Stat_FIFOMoreDataAvail LITERAL1 +ICM_20948_Stat_UnrecognisedDMPHeader LITERAL1 +ICM_20948_Stat_UnrecognisedDMPHeader2 LITERAL1 +ICM_20948_Stat_InvalDMPRegister LITERAL1 ICM_20948_Stat_NUM LITERAL1 ICM_20948_Stat_Unknown LITERAL1 ICM_20948_Internal_Acc LITERAL1 @@ -102,3 +133,54 @@ ICM_20948_Internal_Gyr LITERAL1 ICM_20948_Internal_Mag LITERAL1 ICM_20948_Internal_Tmp LITERAL1 ICM_20948_Internal_Mst LITERAL1 +DMP_ODR_Reg_Accel LITERAL1 +DMP_ODR_Reg_Gyro LITERAL1 +DMP_ODR_Reg_Cpass LITERAL1 +DMP_ODR_Reg_ALS LITERAL1 +DMP_ODR_Reg_Quat6 LITERAL1 +DMP_ODR_Reg_Quat9 LITERAL1 +DMP_ODR_Reg_PQuat6 LITERAL1 +DMP_ODR_Reg_Geomag LITERAL1 +DMP_ODR_Reg_Pressure LITERAL1 +DMP_ODR_Reg_Gyro_Calibr LITERAL1 +DMP_ODR_Reg_Cpass_Calibr LITERAL1 +INV_ICM20948_SENSOR_ACCELEROMETER LITERAL1 +INV_ICM20948_SENSOR_GYROSCOPE LITERAL1 +INV_ICM20948_SENSOR_RAW_ACCELEROMETER LITERAL1 +INV_ICM20948_SENSOR_RAW_GYROSCOPE LITERAL1 +INV_ICM20948_SENSOR_MAGNETIC_FIELD_UNCALIBRATED LITERAL1 +INV_ICM20948_SENSOR_GYROSCOPE_UNCALIBRATED LITERAL1 +INV_ICM20948_SENSOR_ACTIVITY_CLASSIFICATON LITERAL1 +INV_ICM20948_SENSOR_STEP_DETECTOR LITERAL1 +INV_ICM20948_SENSOR_STEP_COUNTER LITERAL1 +INV_ICM20948_SENSOR_GAME_ROTATION_VECTOR LITERAL1 +INV_ICM20948_SENSOR_ROTATION_VECTOR LITERAL1 +INV_ICM20948_SENSOR_GEOMAGNETIC_ROTATION_VECTOR LITERAL1 +INV_ICM20948_SENSOR_GEOMAGNETIC_FIELD LITERAL1 +INV_ICM20948_SENSOR_WAKEUP_SIGNIFICANT_MOTION LITERAL1 +INV_ICM20948_SENSOR_FLIP_PICKUP LITERAL1 +INV_ICM20948_SENSOR_WAKEUP_TILT_DETECTOR LITERAL1 +INV_ICM20948_SENSOR_GRAVITY LITERAL1 +INV_ICM20948_SENSOR_LINEAR_ACCELERATION LITERAL1 +INV_ICM20948_SENSOR_ORIENTATION LITERAL1 +INV_ICM20948_SENSOR_B2S LITERAL1 +DMP_header_bitmap_Header2 LITERAL1 +DMP_header_bitmap_Step_Detector LITERAL1 +DMP_header_bitmap_Compass_Calibr LITERAL1 +DMP_header_bitmap_Gyro_Calibr LITERAL1 +DMP_header_bitmap_Pressure LITERAL1 +DMP_header_bitmap_Geomag LITERAL1 +DMP_header_bitmap_PQuat6 LITERAL1 +DMP_header_bitmap_Quat9 LITERAL1 +DMP_header_bitmap_Quat6 LITERAL1 +DMP_header_bitmap_ALS LITERAL1 +DMP_header_bitmap_Compass LITERAL1 +DMP_header_bitmap_Gyro LITERAL1 +DMP_header_bitmap_Accel LITERAL1 +DMP_header2_bitmap_Secondary_On_Off LITERAL1 +DMP_header2_bitmap_Activity_Recog LITERAL1 +DMP_header2_bitmap_Pickup LITERAL1 +DMP_header2_bitmap_Fsync LITERAL1 +DMP_header2_bitmap_Compass_Accuracy LITERAL1 +DMP_header2_bitmap_Gyro_Accuracy LITERAL1 +DMP_header2_bitmap_Accel_Accuracy LITERAL1 diff --git a/library.properties b/library.properties index f891b11..af956b5 100644 --- a/library.properties +++ b/library.properties @@ -1,9 +1,9 @@ name=SparkFun 9DoF IMU Breakout - ICM 20948 - Arduino Library -version=1.1.2 +version=1.2.0 author=SparkFun Electronics maintainer=SparkFun Electronics -sentence=Use the low-power high-resolution ICM 20948 9 DoF IMU from Invensense with I2C or SPI. Includes a portable C skeleton -paragraph=The SparkFun 9DoF IMU Breakout uses the Invensense ICM-20948 -- a system-in-package featuring acceleration full-scales of ±2 / ±4 / ±8 / ±16 (g), rotational full-scales of ±250 / ±500 / ±1000 / ±2000 (°/sec) and a magnetic field full scale of ±4800 µT. The ICM-20948 can be accessed via either I2C (400 kHz) or SPI (7 MHz) +sentence=Use the low-power high-resolution ICM 20948 9 DoF IMU from Invensense with I2C or SPI. Version 1.2 of the library includes support for the InvenSense Digital Motion Processor (DMP™). +paragraph=The SparkFun 9DoF IMU Breakout uses the Invensense ICM-20948 -- a system-in-package featuring acceleration full-scales of ±2 / ±4 / ±8 / ±16 (g), rotational full-scales of ±250 / ±500 / ±1000 / ±2000 (°/sec) and a magnetic field full scale of ±4800 µT. The ICM-20948 can be accessed via either I2C (400 kHz) or SPI (7 MHz) category=Sensors url=https://github.com/sparkfun/SparkFun_ICM-20948_ArduinoLibrary architectures=*