接前一篇文章:ICM-20948 Wake on Motion功能开发全过程(6)
探索工作
深入探索
上一回讲到,笔者在InvenSense官网上找到了实现Wake on Motion功能的指导文档。其中主要步骤如下:
本回就来结合文档中的步骤,详细讲解每一步。
(1)第1步 —— 初始化所有配置
注意,文档中提到的寄存器是针对于IAM-20680的,需要将其“对”到ICM-20948中。
IAM-20680手册中的相关内容如下:
而在ICM-20948手册中,与IAM-20680一样,DEVICE_RESET位也是在PWR_MGMT_1寄存器中。如下所示:
当然,两个寄存器的地址有所区别,这一点在写代码的时候需要注意。
这一部分对应的代码如下:
//Step 1: Initialize all configurationsret = icm20948_reset(icm20948);if (ret != ESP_OK){ESP_LOGE(TAG, "icm20948_reset failed");return ret;}vTaskDelay(10 / portTICK_PERIOD_MS);
esp_err_t icm20948_reset(icm20948_handle_t sensor)
{esp_err_t ret;uint8_t tmp;ret = icm20948_read(sensor, ICM20948_PWR_MGMT_1, &tmp, 1);if (ret != ESP_OK)return ret;tmp |= 0x80; //bit7: DEVICE_RESET