ICM42670 Portable Driver
Public API reference for the ICM-42670-P IMU driver
Loading...
Searching...
No Matches
ICM42670_esp_idf.h
Go to the documentation of this file.
1
6#ifndef ICM42670_ESP_IDF_H
7#define ICM42670_ESP_IDF_H
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13#include "ICM42670_driver.h"
14#include "driver/gpio.h"
15#include "driver/i2c_master.h"
16#include "driver/spi_master.h"
17#include "esp_err.h"
18#include <stdbool.h>
19#include <stdint.h>
20
21#define ICM42670_ESP_DEFAULT_I2C_SPEED_HZ 400000U
22#define ICM42670_ESP_DEFAULT_SPI_SPEED_HZ 1000000
27typedef struct {
28 i2c_master_bus_handle_t bus_handle;
29 i2c_master_dev_handle_t dev_handle;
30 uint32_t timeout_ms;
31 bool owns_bus;
34
38typedef struct {
39 spi_host_device_t host_id;
40 spi_device_handle_t dev_handle;
41 uint32_t timeout_ms;
42 bool owns_bus;
45
62 ICM42670_ESP_I2CBus *bus, int i2c_port,
63 gpio_num_t sda_pin, gpio_num_t scl_pin,
64 uint8_t device_addr,
65 uint32_t scl_speed_hz);
66
81 i2c_master_bus_handle_t bus_handle,
82 i2c_master_dev_handle_t dev_handle);
83
91
100 uint8_t device_addr);
101
111int8_t ICM42670_ESP_I2C_ReadReg(void *handle, uint8_t reg_addr, uint8_t *data,
112 uint16_t len);
113
123int8_t ICM42670_ESP_I2C_WriteReg(void *handle, uint8_t reg_addr,
124 const uint8_t *data, uint16_t len);
125
142esp_err_t ICM42670_ESP_SPI_Init(ICM42670_Config *config,
144 spi_host_device_t host_id, gpio_num_t miso_pin,
145 gpio_num_t mosi_pin, gpio_num_t sclk_pin,
146 gpio_num_t cs_pin, int clock_speed_hz);
147
162 spi_host_device_t host_id,
163 spi_device_handle_t dev_handle);
164
172
182int8_t ICM42670_ESP_SPI_ReadReg(void *handle, uint8_t reg_addr, uint8_t *data,
183 uint16_t len);
184
194int8_t ICM42670_ESP_SPI_WriteReg(void *handle, uint8_t reg_addr,
195 const uint8_t *data, uint16_t len);
196
197#ifdef __cplusplus
198}
199#endif
200
201#endif /* ICM42670_ESP_IDF_H */
Core ICM-42670-P configuration and sensor read API.
int8_t ICM42670_ESP_I2C_WriteReg(void *handle, uint8_t reg_addr, const uint8_t *data, uint16_t len)
ESP-IDF I2C register-write callback for ICM42670_Config.
Definition ICM42670_esp_idf.c:165
esp_err_t ICM42670_ESP_SPI_Init(ICM42670_Config *config, ICM42670_ESP_SPIBus *bus, spi_host_device_t host_id, gpio_num_t miso_pin, gpio_num_t mosi_pin, gpio_num_t sclk_pin, gpio_num_t cs_pin, int clock_speed_hz)
Create an ESP-IDF SPI bus/device and populate ICM42670_Config.
Definition ICM42670_esp_idf.c:190
esp_err_t ICM42670_ESP_I2C_Probe(ICM42670_ESP_I2CBus *bus, uint8_t device_addr)
Probe an I2C address on the adapter's bus.
Definition ICM42670_esp_idf.c:128
esp_err_t ICM42670_ESP_I2C_Init(ICM42670_Config *config, ICM42670_ESP_I2CBus *bus, int i2c_port, gpio_num_t sda_pin, gpio_num_t scl_pin, uint8_t device_addr, uint32_t scl_speed_hz)
Create an ESP-IDF I2C bus/device and populate ICM42670_Config.
Definition ICM42670_esp_idf.c:36
int8_t ICM42670_ESP_SPI_WriteReg(void *handle, uint8_t reg_addr, const uint8_t *data, uint16_t len)
ESP-IDF SPI register-write callback for ICM42670_Config.
Definition ICM42670_esp_idf.c:308
esp_err_t ICM42670_ESP_I2C_AttachDevice(ICM42670_Config *config, ICM42670_ESP_I2CBus *bus, i2c_master_bus_handle_t bus_handle, i2c_master_dev_handle_t dev_handle)
Attach an existing ESP-IDF I2C device to ICM42670_Config.
Definition ICM42670_esp_idf.c:87
esp_err_t ICM42670_ESP_SPI_AttachDevice(ICM42670_Config *config, ICM42670_ESP_SPIBus *bus, spi_host_device_t host_id, spi_device_handle_t dev_handle)
Attach an existing ESP-IDF SPI device to ICM42670_Config.
Definition ICM42670_esp_idf.c:242
int8_t ICM42670_ESP_SPI_ReadReg(void *handle, uint8_t reg_addr, uint8_t *data, uint16_t len)
ESP-IDF SPI register-read callback for ICM42670_Config.
Definition ICM42670_esp_idf.c:283
esp_err_t ICM42670_ESP_SPI_Deinit(ICM42670_ESP_SPIBus *bus)
Release ESP-IDF SPI resources owned by this adapter.
Definition ICM42670_esp_idf.c:261
int8_t ICM42670_ESP_I2C_ReadReg(void *handle, uint8_t reg_addr, uint8_t *data, uint16_t len)
ESP-IDF I2C register-read callback for ICM42670_Config.
Definition ICM42670_esp_idf.c:138
esp_err_t ICM42670_ESP_I2C_Deinit(ICM42670_ESP_I2CBus *bus)
Release ESP-IDF I2C resources owned by this adapter.
Definition ICM42670_esp_idf.c:106
Platform-independent driver configuration.
Definition ICM42670_driver.h:172
ESP-IDF I2C bus state used by the portable driver callbacks.
Definition ICM42670_esp_idf.h:27
bool owns_bus
Definition ICM42670_esp_idf.h:31
i2c_master_dev_handle_t dev_handle
Definition ICM42670_esp_idf.h:29
uint32_t timeout_ms
Definition ICM42670_esp_idf.h:30
bool owns_device
Definition ICM42670_esp_idf.h:32
i2c_master_bus_handle_t bus_handle
Definition ICM42670_esp_idf.h:28
ESP-IDF SPI bus state used by the portable driver callbacks.
Definition ICM42670_esp_idf.h:38
bool owns_device
Definition ICM42670_esp_idf.h:43
spi_device_handle_t dev_handle
Definition ICM42670_esp_idf.h:40
uint32_t timeout_ms
Definition ICM42670_esp_idf.h:41
spi_host_device_t host_id
Definition ICM42670_esp_idf.h:39
bool owns_bus
Definition ICM42670_esp_idf.h:42