- parameterize SPIs & UART pin setting

- move SPIS definition to sketch.ino.cpp
- max log level is info, debug will delay the initial boot causing reading CS incorrectly for BT and wifi mode (only available for 750ms)
This commit is contained in:
hathach 2025-03-18 15:32:40 +07:00
parent f7c4cde6b9
commit 7f17ca5f40
No known key found for this signature in database
GPG key ID: 26FAB84F615C3C52
7 changed files with 66 additions and 38 deletions

View file

@ -112,27 +112,5 @@ void SPISClass::handleSetupComplete()
xSemaphoreGiveFromISR(_readySemaphore, NULL); xSemaphoreGiveFromISR(_readySemaphore, NULL);
} }
// ADAFRUIT-CHANGE: different pin // Move definition to sketch.ino.cpp
#if defined(CONFIG_IDF_TARGET_ESP32) // SPISClass SPIS(VSPI_HOST, 1, 12, 23, 18, 5, 33);
// SPISClass SPIS(VSPI_HOST, 1, 12, 23, 18, 5, 33); // Arduino's original
SPISClass SPIS(VSPI_HOST,
1, // dmaChannel
14, // mosiPin
23, // misoPin
18, // sclkPin
5, // csPin
33 // readyPin
);
#elif defined(CONFIG_IDF_TARGET_ESP32C6)
// Temporary choices for Feather ESP32-C6
SPISClass SPIS(SPI2_HOST,
SPI_DMA_CH_AUTO,
22, // mosiPin
23, // misoPin
21, // sclkPin
5, // csPin
6 // readyPin
);
#endif

View file

@ -2412,7 +2412,13 @@ CommandHandlerClass::CommandHandlerClass()
{ {
} }
#if defined(CONFIG_IDF_TARGET_ESP32)
static const int GPIO_IRQ = 0; static const int GPIO_IRQ = 0;
#endif
#if defined(CONFIG_IDF_TARGET_ESP32C6)
static const int GPIO_IRQ = 9;
#endif
void CommandHandlerClass::begin() void CommandHandlerClass::begin()
{ {

View file

@ -47,28 +47,70 @@
// UART debug is enabled on boot // UART debug is enabled on boot
int debug = 1; int debug = 1;
//--------------------------------------------------------------------
// ADAFRUIT CHANGE
//--------------------------------------------------------------------
#define AIRLIFT 1
#define NINA_PRINTF(...) do { if (debug) { ets_printf(__VA_ARGS__); } } while (0)
#if defined(CONFIG_IDF_TARGET_ESP32) #if defined(CONFIG_IDF_TARGET_ESP32)
// SPIS for WiFi
#define AIRLIFT_MOSI 14
#define AIRLIFT_MISO 23
#define AIRLIFT_SCK 18
#define AIRLIFT_CS 5
#define AIRLIFT_BUSY 33 // ready
// UART for BLE HCI
#define AIRLIFT_RTS AIRLIFT_BUSY
#define AIRLIFT_CTS 0 // BOOT PIN
// #define CONFIG_BT_LE_HCI_UART_RTS_PIN 33 // ESP_BUSY (ready)
// #define CONFIG_BT_LE_HCI_UART_CTS_PIN 0 // GPIO0
extern const struct __sFILE_fake __sf_fake_stdin; extern const struct __sFILE_fake __sf_fake_stdin;
extern const struct __sFILE_fake __sf_fake_stdout; extern const struct __sFILE_fake __sf_fake_stdout;
extern const struct __sFILE_fake __sf_fake_stderr; extern const struct __sFILE_fake __sf_fake_stderr;
// dev, dma, mosi, miso, sclk, cs, ready
SPISClass SPIS(VSPI_HOST, 1, AIRLIFT_MOSI, AIRLIFT_MISO, AIRLIFT_SCK, AIRLIFT_CS, AIRLIFT_BUSY);
#endif #endif
#if defined(CONFIG_IDF_TARGET_ESP32C6) #if defined(CONFIG_IDF_TARGET_ESP32C6)
// SPIS for WiFi
#define AIRLIFT_MOSI 21
#define AIRLIFT_MISO 6
#define AIRLIFT_SCK 22
#define AIRLIFT_CS 7
#define AIRLIFT_BUSY 18 // ready
// UART for BLE HCI
// CONFIG_BT_LE_HCI_UART_RTS_PIN and CONFIG_BT_LE_HCI_UART_CTS_PIN are defined in sdkconfig.defaults.esp32c6
// and used by hci_driver_uart_config() in hci_driver_uart.c. It should matches with BUSY and BOOT pins.
#ifndef CONFIG_BT_LE_HCI_INTERFACE_USE_UART #ifndef CONFIG_BT_LE_HCI_INTERFACE_USE_UART
#error "Please Enable Uart for HCI" #error "Please Enable Uart for HCI"
#endif #endif
#if CONFIG_BT_LE_HCI_UART_RTS_PIN != AIRLIFT_BUSY
#error "RTS pin must be the same as ready pin"
#endif #endif
// ADAFRUIT-CHANGE: AirLift conditionalization #if CONFIG_BT_LE_HCI_UART_CTS_PIN != 9
#define AIRLIFT 1 #error "CTS pin must be the same as BOOT pin"
#endif
#define NINA_PRINTF(...) do { if (debug) { ets_printf(__VA_ARGS__); } } while (0) // dev, dma, mosi, miso, sclk, cs, ready
SPISClass SPIS(SPI2_HOST, SPI_DMA_CH_AUTO, AIRLIFT_MOSI, AIRLIFT_MISO, AIRLIFT_SCK, AIRLIFT_CS, AIRLIFT_BUSY);
#endif
// Adafruit: prevent initArduino() to release BT memory // prevent initArduino() to release BT memory
extern "C" bool btInUse() { extern "C" bool btInUse() {
return true; return true;
} }
//--------------------------------------------------------------------
//
//--------------------------------------------------------------------
uint8_t* commandBuffer; uint8_t* commandBuffer;
uint8_t* responseBuffer; uint8_t* responseBuffer;
@ -122,12 +164,14 @@ void setup() {
setDebug(0); setDebug(0);
#endif #endif
#if !AIRLIFT
// put SWD and SWCLK pins connected to SAMD as inputs // put SWD and SWCLK pins connected to SAMD as inputs
pinMode(15, INPUT); pinMode(15, INPUT);
pinMode(21, INPUT); pinMode(21, INPUT);
#endif
pinMode(5, INPUT); pinMode(AIRLIFT_CS, INPUT);
if (digitalRead(5) == LOW) { if (digitalRead(AIRLIFT_CS) == LOW) {
setupBluetooth(); setupBluetooth();
} else { } else {
setupWiFi(); setupWiFi();
@ -149,8 +193,7 @@ void setupBluetooth() {
// TX GPIO1 & RX GPIO3 on ESP32 'hardware' UART // TX GPIO1 & RX GPIO3 on ESP32 'hardware' UART
// RTS on ESP_BUSY (GPIO33) // RTS on ESP_BUSY (GPIO33)
// CTS on GPIO0 (GPIO0) // CTS on GPIO0 (GPIO0)
// uart_set_pin(UART_NUM_1, 1, 3, 33, 0); uart_set_pin(UART_NUM_1, 1, 3, AIRLIFT_RTS, AIRLIFT_CTS);
uart_set_pin(UART_NUM_1, 14, 18, 33, 0);
#elif defined(UNO_WIFI_REV2) #elif defined(UNO_WIFI_REV2)
uart_set_pin(UART_NUM_1, 1, 3, 33, 0); // TX, RX, RTS, CTS uart_set_pin(UART_NUM_1, 1, 3, 33, 0); // TX, RX, RTS, CTS
#elif defined(NANO_RP2040_CONNECT) #elif defined(NANO_RP2040_CONNECT)

View file

@ -1 +1 @@
#CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_DEBUG=y CONFIG_LOG_DEFAULT_LEVEL_INFO=y

View file

@ -1,11 +1,13 @@
# This file was generated using idf.py save-defconfig. It can be edited manually. # This file was generated using idf.py save-defconfig. It can be edited manually.
# Espressif IoT Development Framework (ESP-IDF) 5.3.1 Project Minimal Configuration # Espressif IoT Development Framework (ESP-IDF) 5.3.1 Project Minimal Configuration
# #
CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
CONFIG_APP_EXCLUDE_PROJECT_VER_VAR=y CONFIG_APP_EXCLUDE_PROJECT_VER_VAR=y
CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y
CONFIG_PARTITION_TABLE_CUSTOM=y CONFIG_PARTITION_TABLE_CUSTOM=y
CONFIG_AUTOSTART_ARDUINO=y CONFIG_AUTOSTART_ARDUINO=y
CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_WARN=y CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL_WARN=y
CONFIG_ARDUHAL_ESP_LOG=y
CONFIG_ARDUINO_SELECTIVE_COMPILATION=y CONFIG_ARDUINO_SELECTIVE_COMPILATION=y
CONFIG_COMPILER_OPTIMIZATION_SIZE=y CONFIG_COMPILER_OPTIMIZATION_SIZE=y
CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING=y CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING=y

View file

@ -1,2 +1,2 @@
CONFIG_BTDM_CTRL_HCI_MODE_UART_H4=y CONFIG_BTDM_CTRL_HCI_MODE_UART_H4=y
CONFIG_BTDM_CTRL_HCI_UART_BAUDRATE=115200 CONFIG_BTDM_CTRL_HCI_UART_BAUDRATE=115200

View file

@ -1,9 +1,8 @@
# BT_LE_HCI # BT_LE_HCI
CONFIG_BT_LE_HCI_INTERFACE_USE_UART=y CONFIG_BT_LE_HCI_INTERFACE_USE_UART=y
CONFIG_BT_LE_HCI_UART_PORT=1
CONFIG_BT_LE_HCI_UART_BAUD=115200
CONFIG_BT_LE_HCI_UART_FLOWCTRL=y CONFIG_BT_LE_HCI_UART_FLOWCTRL=y
CONFIG_BT_LE_HCI_UART_TX_PIN=16 CONFIG_BT_LE_HCI_UART_TX_PIN=16
CONFIG_BT_LE_HCI_UART_RX_PIN=17 CONFIG_BT_LE_HCI_UART_RX_PIN=17
CONFIG_BT_LE_HCI_UART_RTS_PIN=6 CONFIG_BT_LE_HCI_UART_RTS_PIN=18
CONFIG_BT_LE_HCI_UART_CTS_PIN=0 CONFIG_BT_LE_HCI_UART_CTS_PIN=9
CONFIG_BT_LE_HCI_UART_BAUD=115200