mirror of
https://github.com/rstrouse/ESPSomfy-RTS.git
synced 2026-10-31 13:52:15 +01:00
fix: warn of radio pins that can stop the board booting (#34)
GPIO12 is a strapping pin on the original ESP32: high at reset, it powers the flash at 1.8 V. A CC1101 can hold GDO2 high at power-up, so a board with RX on 12 bootloops after a power cut until EN is pressed. It was the default RX pin. - RX defaults to GPIO35 on the original ESP32. Saved settings keep their pins. - The log warns each time the radio starts, and the radio settings show a warning, while TX, RX or MISO is on a pin whose level at reset can stop the chip booting (src/BootPins.h, data-src/js/pins.js). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
a92c7a26f6
commit
8a59f51111
10 changed files with 234 additions and 7 deletions
49
test/test_bootpins/test_bootpins.cpp
Normal file
49
test/test_bootpins/test_bootpins.cpp
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
#include <unity.h>
|
||||
#include <string.h>
|
||||
// No target defined: the original ESP32.
|
||||
#include "BootPins.h"
|
||||
|
||||
void setUp() {}
|
||||
void tearDown() {}
|
||||
|
||||
static void test_gpio12_picks_the_flash_voltage() {
|
||||
// Issue #34: a CC1101 holding GDO2 high on GPIO12 at power-up.
|
||||
const char *effect = bootPinEffect(12);
|
||||
TEST_ASSERT_NOT_NULL(effect);
|
||||
TEST_ASSERT_NOT_NULL(strstr(effect, "1.8 V"));
|
||||
}
|
||||
|
||||
static void test_gpio0_picks_the_boot_mode() {
|
||||
const char *effect = bootPinEffect(0);
|
||||
TEST_ASSERT_NOT_NULL(effect);
|
||||
TEST_ASSERT_NOT_NULL(strstr(effect, "download mode"));
|
||||
}
|
||||
|
||||
static void test_harmless_strapping_pins_are_not_listed() {
|
||||
// 2 only matters for the download mode, 5 and 15 set the SDIO timing and
|
||||
// the boot log. 5 is the default CSN.
|
||||
TEST_ASSERT_NULL(bootPinEffect(2));
|
||||
TEST_ASSERT_NULL(bootPinEffect(5));
|
||||
TEST_ASSERT_NULL(bootPinEffect(15));
|
||||
}
|
||||
|
||||
static void test_default_radio_pins_are_safe() {
|
||||
// transceiver_config_t::load()'s defaults for the original ESP32.
|
||||
const uint8_t pins[] = {13, 35, 23, 19, 18, 5};
|
||||
for(uint8_t pin : pins) TEST_ASSERT_NULL_MESSAGE(bootPinEffect(pin), "default radio pin");
|
||||
}
|
||||
|
||||
static void test_other_chips_boot_pins_are_safe_here() {
|
||||
TEST_ASSERT_NULL(bootPinEffect(9));
|
||||
TEST_ASSERT_NULL(bootPinEffect(45));
|
||||
}
|
||||
|
||||
int main(int, char **) {
|
||||
UNITY_BEGIN();
|
||||
RUN_TEST(test_gpio12_picks_the_flash_voltage);
|
||||
RUN_TEST(test_gpio0_picks_the_boot_mode);
|
||||
RUN_TEST(test_harmless_strapping_pins_are_not_listed);
|
||||
RUN_TEST(test_default_radio_pins_are_safe);
|
||||
RUN_TEST(test_other_chips_boot_pins_are_safe_here);
|
||||
return UNITY_END();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue