接前一篇文章: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