From d820430865971e0f0aa3a402a689b8177ec8d3f4 Mon Sep 17 00:00:00 2001 From: myles-parfeniuk Date: Tue, 23 Jul 2024 16:01:11 -0700 Subject: [PATCH] New feature, menuconfig menu --- BNO08x.cpp | 80 +++++++++++++++++------------- BNO08x.hpp | 76 +++++++--------------------- Kconfig.projbuild | 90 ++++++++++++++++++++++++++++++++++ README.md | 24 ++++++++- esp32_BNO08x_menuconfig_1.png | Bin 0 -> 15260 bytes esp32_BNO08x_menuconfig_2.png | Bin 0 -> 21527 bytes 6 files changed, 178 insertions(+), 92 deletions(-) create mode 100644 Kconfig.projbuild create mode 100644 esp32_BNO08x_menuconfig_1.png create mode 100644 esp32_BNO08x_menuconfig_2.png diff --git a/BNO08x.cpp b/BNO08x.cpp index 564629a..68482c6 100644 --- a/BNO08x.cpp +++ b/BNO08x.cpp @@ -35,10 +35,10 @@ BNO08x::BNO08x(bno08x_config_t imu_config) // SPI slave device specific config imu_spi_config.mode = 0x3; // set mode to 3 as per BNO08x datasheet (CPHA second edge, CPOL bus high when idle) - if (imu_config.sclk_speed > 3000000) // max sclk speed of 3MHz for BNO08x + if (imu_config.sclk_speed > 3000000UL) // max sclk speed of 3MHz for BNO08x { - ESP_LOGE(TAG, "Max clock speed exceeded, %lld overwritten with 3000000Hz", imu_config.sclk_speed); - imu_config.sclk_speed = 3000000; + ESP_LOGE(TAG, "Max clock speed exceeded, %ld overwritten with 3MHz", imu_config.sclk_speed); + imu_config.sclk_speed = 3000000UL; } imu_spi_config.clock_source = SPI_CLK_SRC_DEFAULT; @@ -74,7 +74,7 @@ BNO08x::BNO08x(bno08x_config_t imu_config) gpio_config_t inputs_config; inputs_config.pin_bit_mask = (1ULL << imu_config.io_int); inputs_config.mode = GPIO_MODE_INPUT; - inputs_config.pull_up_en = GPIO_PULLUP_ENABLE; + inputs_config.pull_up_en = GPIO_PULLUP_DISABLE; inputs_config.pull_down_en = GPIO_PULLDOWN_DISABLE; inputs_config.intr_type = GPIO_INTR_NEGEDGE; gpio_config(&inputs_config); @@ -116,8 +116,9 @@ bool BNO08x::initialize() // launch tasks data_proc_task_hdl = NULL; spi_task_hdl = NULL; - xTaskCreate(&data_proc_task_trampoline, "bno08x_data_processing_task", 4096, this, 7, &data_proc_task_hdl); // launch data processing task - xTaskCreate(&spi_task_trampoline, "bno08x_spi_task", 4096, this, 8, &spi_task_hdl); // launch SPI task + xTaskCreate(&data_proc_task_trampoline, "bno08x_data_processing_task", CONFIG_ESP32_BNO08X_DATA_PROC_TASK_SZ, this, 7, + &data_proc_task_hdl); // launch data processing task + xTaskCreate(&spi_task_trampoline, "bno08x_spi_task", 4096, this, 8, &spi_task_hdl); // launch SPI task if (!hard_reset()) return false; @@ -151,8 +152,9 @@ bool BNO08x::wait_for_rx_done() // wait until an interrupt has been asserted and data received or timeout has occured if (xEventGroupWaitBits(evt_grp_spi, EVT_GRP_SPI_RX_DONE_BIT, pdTRUE, pdTRUE, HOST_INT_TIMEOUT_MS / portTICK_PERIOD_MS)) { - if (imu_config.debug_en) - ESP_LOGI(TAG, "int asserted"); + #ifdef CONFIG_ESP32_BNO08x_DEBUG_STATEMENTS + ESP_LOGI(TAG, "int asserted"); + #endif success = true; } @@ -190,8 +192,10 @@ bool BNO08x::wait_for_data() // only return true if packet is valid if (xEventGroupGetBits(evt_grp_spi) & EVT_GRP_SPI_RX_VALID_PACKET) { - if (imu_config.debug_en) - ESP_LOGI(TAG, "Valid packet received."); + #ifdef CONFIG_ESP32_BNO08x_DEBUG_STATEMENTS + ESP_LOGI(TAG, "Valid packet received."); + #endif + success = true; } else @@ -224,9 +228,9 @@ bool BNO08x::wait_for_tx_done() if (xEventGroupWaitBits(evt_grp_spi, EVT_GRP_SPI_TX_DONE, pdTRUE, pdTRUE, HOST_INT_TIMEOUT_MS / portTICK_PERIOD_MS)) { - - if (imu_config.debug_en) - ESP_LOGI(TAG, "Packet sent successfully."); + #ifdef CONFIG_ESP32_BNO08x_DEBUG_STATEMENTS + ESP_LOGI(TAG, "Packet sent successfully."); + #endif return true; } @@ -411,8 +415,9 @@ bool BNO08x::receive_packet() packet.length = (((uint16_t) packet.header[1]) << 8) | ((uint16_t) packet.header[0]); packet.length &= ~(1 << 15); // Clear the MSbit - if (imu_config.debug_en) - ESP_LOGW(TAG, "packet rx length: %d", packet.length); + #ifdef CONFIG_ESP32_BNO08x_DEBUG_STATEMENTS + ESP_LOGW(TAG, "packet rx length: %d", packet.length); + #endif if (packet.length == 0) return false; @@ -853,7 +858,7 @@ bool BNO08x::data_available() /** * @brief Registers a callback to execute when new data from a report is received. * - * @param cb_fxn Pointer to the call-back function should be of void return type and void input parameters. + * @param cb_fxn Pointer to the call-back function should be of void return type and void input parameters. * @return void, nothing to return */ void BNO08x::register_cb(std::function cb_fxn) @@ -869,8 +874,9 @@ void BNO08x::register_cb(std::function cb_fxn) */ uint16_t BNO08x::parse_packet(bno08x_rx_packet_t* packet) { - if (imu_config.debug_en) - ESP_LOGE(TAG, "SHTP Header RX'd: 0x%X 0x%X 0x%X 0x%X", packet->header[0], packet->header[1], packet->header[2], packet->header[3]); + #ifdef CONFIG_ESP32_BNO08x_DEBUG_STATEMENTS + ESP_LOGW(TAG, "SHTP Header RX'd: 0x%X 0x%X 0x%X 0x%X", packet->header[0], packet->header[1], packet->header[2], packet->header[3]); + #endif if (packet->body[0] == SHTP_REPORT_PRODUCT_ID_RESPONSE) // check to see that product ID matches what it should { @@ -885,23 +891,26 @@ uint16_t BNO08x::parse_packet(bno08x_rx_packet_t* packet) // Check to see if this packet is a sensor reporting its data to us if (packet->header[2] == CHANNEL_REPORTS && packet->body[0] == SHTP_REPORT_BASE_TIMESTAMP) { - if (imu_config.debug_en) - ESP_LOGI(TAG, "RX'd packet, channel report"); + #ifdef CONFIG_ESP32_BNO08x_DEBUG_STATEMENTS + ESP_LOGI(TAG, "RX'd packet, channel report"); + #endif return parse_input_report(packet); // This will update the rawAccelX, etc variables depending on which feature // report is found } else if (packet->header[2] == CHANNEL_CONTROL) { - if (imu_config.debug_en) - ESP_LOGI(TAG, "RX'd packet, channel control"); + #ifdef CONFIG_ESP32_BNO08x_DEBUG_STATEMENTS + ESP_LOGI(TAG, "RX'd packet, channel control"); + #endif return parse_command_report(packet); // This will update responses to commands, calibrationStatus, etc. } else if (packet->header[2] == CHANNEL_GYRO) { - if (imu_config.debug_en) - ESP_LOGI(TAG, "Rx packet, channel gyro"); + #ifdef CONFIG_ESP32_BNO08x_DEBUG_STATEMENTS + ESP_LOGI(TAG, "Rx packet, channel gyro"); + #endif return parse_input_report(packet); // This will update the rawAccelX, etc variables depending on which feature // report is found @@ -2770,7 +2779,11 @@ void BNO08x::spi_task_trampoline(void* arg) */ void BNO08x::spi_task() { - static uint64_t prev_time = 0; + #ifdef CONFIG_ESP32_BNO08x_DEBUG_STATEMENTS + static uint64_t prev_time = esp_timer_get_time(); + static uint64_t current_time = 0; + #endif + bno08x_tx_packet_t tx_packet; while (1) @@ -2781,11 +2794,12 @@ void BNO08x::spi_task() gpio_intr_enable(imu_config.io_int); ulTaskNotifyTake(pdTRUE, portMAX_DELAY); // block until notified by ISR (hint_handler) - if (imu_config.debug_en) - { - ESP_LOGI(TAG, "HINT asserted, time since last assertion: %llu", (esp_timer_get_time() - prev_time)); - prev_time = esp_timer_get_time(); - } + + #ifdef CONFIG_ESP32_BNO08x_DEBUG_STATEMENTS + current_time = esp_timer_get_time(); + ESP_LOGI(TAG, "HINT asserted, time since last assertion: %llu", (current_time - prev_time)); + prev_time = current_time; + #endif if (xQueueReceive(queue_tx_data, &tx_packet, 0)) // check for queued packet to be sent, non blocking send_packet(&tx_packet); // send packet @@ -2823,9 +2837,9 @@ void BNO08x::data_proc_task() { if (parse_packet(&packet) != 0) // check if packet is valid { - //execute any registered callbacks - for(auto& cb_fxn : cb_list) - cb_fxn(); + // execute any registered callbacks + for (auto& cb_fxn : cb_list) + cb_fxn(); xEventGroupSetBits(evt_grp_spi, EVT_GRP_SPI_RX_VALID_PACKET); // indicate valid packet to wait_for_data() } diff --git a/BNO08x.hpp b/BNO08x.hpp index b5ecfe0..72b0cf9 100644 --- a/BNO08x.hpp +++ b/BNO08x.hpp @@ -1,5 +1,5 @@ #pragma once -//esp-idf includes +// esp-idf includes #include #include #include @@ -12,7 +12,7 @@ #include #include -//standard library includes +// standard library includes #include #include #include @@ -50,62 +50,28 @@ typedef struct bno08x_config_t gpio_num_t io_int; /// Host interrupt pin (connects to BNO08x INT pin) gpio_num_t io_rst; /// Reset pin (connects to BNO08x RST pin) gpio_num_t io_wake; ///GPIO Configuration. + /// Alternatively, edit the default values in "Kconfig.projbuild" bno08x_config_t() - : spi_peripheral(SPI2_HOST) - , io_mosi(GPIO_NUM_4) - , io_miso(GPIO_NUM_19) - , io_sclk(GPIO_NUM_18) - , io_cs(GPIO_NUM_5) - , io_int(GPIO_NUM_6) - , io_rst(GPIO_NUM_7) - , io_wake(GPIO_NUM_NC) - , sclk_speed(2000000UL) // 2MHz SCLK speed - , debug_en(false) - { - } -#elif defined(ESP32C6_IMU_CONFIG) - /// @brief Default IMU configuration settings constructor for ESP32-C6, add - /// add_compile_definitions("ESP32C6_IMU_CONFIG") to CMakeList to use - bno08x_config_t() - : spi_peripheral(SPI2_HOST) - , io_mosi(GPIO_NUM_22) - , io_miso(GPIO_NUM_21) - , io_sclk(GPIO_NUM_23) - , io_cs(GPIO_NUM_6) - , io_int(GPIO_NUM_4) - , io_rst(GPIO_NUM_5) - , io_wake(GPIO_NUM_NC) - , sclk_speed(2000000UL) // 2MHz SCLK speed - , debug_en(false) - { - } -#else - /// @brief Default IMU configuration settings constructor for ESP32 - bno08x_config_t() - : spi_peripheral(SPI3_HOST) - , io_mosi(GPIO_NUM_23) - , io_miso(GPIO_NUM_19) - , io_sclk(GPIO_NUM_18) - , io_cs(GPIO_NUM_33) - , io_int(GPIO_NUM_26) - , io_rst(GPIO_NUM_32) - , io_wake(GPIO_NUM_NC) - , sclk_speed(2000000UL) // 2MHz SCLK speed - // , sclk_speed(10000U), //clock slowed to see on AD2 - , debug_en(false) + : spi_peripheral((spi_host_device_t)CONFIG_ESP32_BNO08x_SPI_HOST) + , io_mosi((gpio_num_t)CONFIG_ESP32_BNO08X_GPIO_DI) // default: + , io_miso((gpio_num_t)CONFIG_ESP32_BNO08X_GPIO_SDA) // default: + , io_sclk((gpio_num_t)CONFIG_ESP32_BNO08X_GPIO_SCL) // default: + , io_cs((gpio_num_t)CONFIG_ESP32_BNO08X_GPIO_CS) // default: + , io_int((gpio_num_t)CONFIG_ESP32_BNO08X_GPIO_HINT) // default: + , io_rst((gpio_num_t)CONFIG_ESP32_BNO08X_GPIO_RST) // default: + , io_wake((gpio_num_t)CONFIG_ESP32_BNO08X_GPIO_WAKE) // default: -1 (unused) + , sclk_speed((uint32_t)CONFIG_ESP32_BNO08X_SCL_SPEED_HZ) // default: 2MH { } -#endif + /// @brief Overloaded IMU configuration settings constructor for custom pin settings bno08x_config_t(spi_host_device_t spi_peripheral, gpio_num_t io_mosi, gpio_num_t io_miso, gpio_num_t io_sclk, gpio_num_t io_cs, - gpio_num_t io_int, gpio_num_t io_rst, gpio_num_t io_wake, uint64_t sclk_speed, bool debug) + gpio_num_t io_int, gpio_num_t io_rst, gpio_num_t io_wake, uint32_t sclk_speed) : spi_peripheral(spi_peripheral) , io_mosi(io_mosi) , io_miso(io_miso) @@ -115,8 +81,6 @@ typedef struct bno08x_config_t , io_rst(io_rst) , io_wake(io_wake) , sclk_speed(sclk_speed) - , debug_en(false) - { } } bno08x_config_t; @@ -354,8 +318,6 @@ class BNO08x static bno08x_config_t default_imu_config; ///< default imu config settings - - EventGroupHandle_t evt_grp_spi; ///> cb_list; //Vector for storing any call-back functions added with register_cb() + std::vector> cb_list; // Vector for storing any call-back functions added with register_cb() uint32_t meta_data[9]; ///
  • Wiring
  • Adding to Project
  • -
  • Examples
  • +
  • Menuconfig
  • +
  • Examples
  • Documentation
  • @@ -32,7 +33,10 @@ Currently, only SPI is supported. There are no plans to support I2C due to unpre

    (back to top)

    ### Wiring -The default wiring is depicted below, it can be changed at driver initialization (see example section). +The default wiring is depicted below, it can be changed at driver initialization (see example section). + +If your ESP does not have the GPIO pin numbers depicted below, you **must change the default GPIO settings in menuconfig**. See the Menuconfig section. + ![image](esp32_BNO08x_wiring.png)

    (back to top)

    @@ -59,6 +63,22 @@ The default wiring is depicted below, it can be changed at driver initialization ```

    (back to top)

    +### Menuconfig +This library provides a menuconfig menu configured in Kconfig.projbuild. It contains settings to control the default GPIO and a few other things. + +To access the menu: + +1. Within esp-idf enabled terminal, execute the menuconfig command: + ```sh + idf.py menuconfig + +2. Scroll down to the esp_BNO08x menu and enter it, if you're using vsCode you may have to use the "j" and "k" keys instead of the arrow keys. + ![image](esp32_BNO08x_menuconfig_1.png) + +3. Modify whatever settings you'd like from the sub menus. The GPIO Configuration menu allows for the default GPIO pins to be modified, the SPI Configuration menu allows for the default SCLK frequency and host peripheral to be modified. + ![image](esp32_BNO08x_menuconfig_2.png) +

    (back to top)

    + ### Examples There are two ways data returned from the BNO08x can be accessed with this library: diff --git a/esp32_BNO08x_menuconfig_1.png b/esp32_BNO08x_menuconfig_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ee150b22ea38164cc30804782a2fae88285a6 GIT binary patch literal 15260 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 literal 0 HcmV?d00001