Go to the documentation of this file.
17 #include "driver/gpio.h"
18 #include "driver/spi_master.h"
19 #include "esp_sleep.h"
29 #define SENSOR_COUNT 1
35 #define GPIO_ENABLE 23
37 #define GPIO_INTERRUPT 4
45 static spi_device_handle_t
spi = NULL;
54 #define SPI_MAX_TRANSFER_SIZE 64
60 #define SPI_TRANSFER_SPEED 1*1000*1000
79 memset(&t, 0,
sizeof(t));
80 t.length = buffer_size*8;
84 ret = spi_device_polling_transmit(
spi, &t);
93 BaseType_t xHigherPriorityTaskWoken = pdFALSE;
95 xSemaphoreGiveFromISR(
isr_sem, &xHigherPriorityTaskWoken);
96 portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
108 if (interupt_level == 1)
116 return xSemaphoreTake(
isr_sem, timeout_ms / portTICK_PERIOD_MS) == pdTRUE;
131 .optimization.transfer16 = NULL,
137 gpio_set_direction(
GPIO_SEL0, GPIO_MODE_OUTPUT);
138 gpio_set_direction(
GPIO_SEL1, GPIO_MODE_OUTPUT);
139 gpio_set_direction(
GPIO_SEL2, GPIO_MODE_OUTPUT);
141 gpio_set_direction(
GPIO_CS, GPIO_MODE_OUTPUT);
152 gpio_install_isr_service(0);
156 spi_bus_config_t buscfg =
166 spi_device_interface_config_t devcfg =
175 ret = spi_bus_initialize(SPI2_HOST, &buscfg, 0);
176 ESP_ERROR_CHECK(ret);
178 ret = spi_bus_add_device(SPI2_HOST, &devcfg, &
spi);
179 ESP_ERROR_CHECK(ret);
void acc_hal_integration_sensor_supply_off(acc_sensor_id_t sensor_id)
Power off sensor supply.
void acc_integration_sleep_us(uint32_t time_usec)
Sleep for a specified number of microseconds.
static spi_device_handle_t spi
static StaticSemaphore_t xSemaphoreBuffer
static void isr_handler(void *args)
static void acc_hal_integration_sensor_transfer(acc_sensor_id_t sensor_id, uint8_t *buffer, size_t buffer_size)
void acc_integration_log(acc_log_level_t level, const char *module, const char *format,...)
Log function.
void acc_hal_integration_sensor_supply_on(acc_sensor_id_t sensor_id)
Power on sensor supply.
#define SENSOR_COUNT
The number of sensors available on the board.
#define SPI_TRANSFER_SPEED
Transfer speed in Hz.
#define SPI_MAX_TRANSFER_SIZE
Size of SPI transfer buffer.
uint16_t acc_hal_integration_sensor_count(void)
Get the max number of sensors the integration supports.
const acc_hal_a121_t * acc_hal_rss_integration_get_implementation(void)
Get hal implementation reference.
uint32_t acc_sensor_id_t
Type representing a sensor ID.
uint16_t max_spi_transfer_size
static const acc_hal_a121_t hal
static SemaphoreHandle_t isr_sem
void acc_hal_integration_sensor_disable(acc_sensor_id_t sensor_id)
Disable sensor.
bool acc_hal_integration_wait_for_sensor_interrupt(acc_sensor_id_t sensor_id, uint32_t timeout_ms)
Wait for a sensor interrupt.
void acc_hal_integration_sensor_enable(acc_sensor_id_t sensor_id)
Enable sensor.