8000 correct board special pin setup by dhalbert · Pull Request #9553 · adafruit/circuitpython · GitHub
[go: up one dir, main page]

Skip to content

correct board special pin setup #9553

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comment 8000 s.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -255,10 +255,13 @@ jobs:
wget --no-verbose -O gcc-arm.zip https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-mingw-w64-i686-arm-none-eabi.zip
unzip -q -d /tmp gcc-arm.zip
tar -C /tmp/arm-gnu-toolchain* -cf - . | tar -C /usr/local -xf -
pip install wheel
# requirements_dev.txt doesn't install on windows. (with msys2 python)
# We could use a venv instead, but that requires entering the venv on each run step
# that runs in its own shell. There are some actions that help with that, but not for msys2
# that I can find. (dhalbert)
pip install --break-system-packages wheel
# requirements-dev.txt doesn't install on windows. (with msys2 python)
# instead, pick a subset for what we want to do
pip install cascadetoml jinja2 typer click intelhex
pip install --break-system-packages cascadetoml jinja2 typer click intelhex
# check that installed packages work....?
which python; python --version; python -c "import cascadetoml"
which python3; python3 --version; python3 -c "import cascadetoml"
Expand Down
3 changes: 1 addition & 2 deletions ports/espressif/boards/adafruit_feather_esp32_v2/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@
bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
if (pin_number == 2) {
// Turn on NeoPixel and I2C power by default.
gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(pin_number, true);
config_pin_as_output_with_level(pin_number, true);
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@
bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
if (pin_number == 20) {
// Turn on I2C power by default.
gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(pin_number, true);
config_pin_as_output_with_level(pin_number, true);
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
// Override the I2C/TFT power pin reset to prevent resetting the display.
if (pin_number == 7) {
// Turn on TFT and I2C
gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(pin_number, true);
config_pin_as_output_with_level(pin_number, true);
return true;
}
return false;
Expand Down
3 changes: 1 addition & 2 deletions ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
// Override the I2C/TFT power pin reset to prevent resetting the display.
if (pin_number == 21) {
// Turn on TFT and I2C
gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(pin_number, true);
config_pin_as_output_with_level(pin_number, true);
return true;
}
return false;
Expand Down
A935 3 changes: 1 addition & 2 deletions ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
// Override the I2C/TFT power pin reset to prevent resetting the display.
if (pin_number == 7) {
// Turn on TFT and I2C
gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(pin_number, true);
config_pin_as_output_with_level(pin_number, true);
return true;
}
return false;
Expand Down
3 changes: 1 addition & 2 deletions ports/espressif/boards/adafruit_feather_esp32s3_tft/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
// Override the I2C/TFT power pin reset to prevent resetting the display.
if (pin_number == 21) {
// Turn on TFT and I2C
gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(pin_number, true);
config_pin_as_output_with_level(pin_number, true);
return true;
}
return false;
Expand Down
3 changes: 1 addition & 2 deletions ports/espressif/boards/adafruit_itsybitsy_esp32/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@
bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
if (pin_number == 2) {
// Turn on NeoPixel and I2C power by default.
gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(pin_number, true);
config_pin_as_output_with_level(pin_number, true);
return true;
}

Expand Down
10 changes: 8 additions & 2 deletions ports/espressif/boards/arduino_nano_esp32s3/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,14 @@
bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
if (pin_number == 13) {
// Set D13 LED to input when not in use
gpio_set_direction(pin_number, GPIO_MODE_DEF_INPUT);
gpio_set_pull_mode(pin_number, GPIO_PULLDOWN_ONLY);
gpio_config_t cfg = {
.pin_bit_mask = BIT64(pin_number),
.mode = GPIO_MODE_INPUT,
.pull_up_en = false,
.pull_down_en = true,
.intr_type = GPIO_INTR_DISABLE,
};
gpio_config(&cfg);
return true;
}

Expand Down
10000
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,14 @@
bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
if (pin_number == 13) {
// Set D13 LED to input when not in use
gpio_set_direction(pin_number, GPIO_MODE_DEF_INPUT);
gpio_set_pull_mode(pin_number, GPIO_PULLDOWN_ONLY);
gpio_config_t cfg = {
.pin_bit_mask = BIT64(pin_number),
.mode = GPIO_MODE_INPUT,
.pull_up_en = false,
.pull_down_en = true,
.intr_type = GPIO_INTR_DISABLE,
};
gpio_config(&cfg);
return true;
}

Expand Down
3 changes: 1 addition & 2 deletions ports/espressif/boards/cytron_maker_feather_aiot_s3/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {

void reset_board(void) {
// Turn on VP by default.
gpio_set_direction(11, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(11, true);
config_pin_as_output_with_level(11, true);
}

// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here.
3 changes: 1 addition & 2 deletions ports/espressif/boards/hexky_s2/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
// Override the I2C/TFT power pin reset to prevent resetting the display.
if (pin_number == 21) {
// Turn on TFT and I2C
gpio_set_direction(21, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(21, true);
config_pin_as_output_with_level(pin_number, true);
return true;
}
return false;
Expand Down
3 changes: 1 addition & 2 deletions ports/espressif/boards/lilygo_tdisplay_s3/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
// Override the I2C/TFT power pin reset to prevent resetting the display.
if (pin_number == 15) {
// Turn on TFT
gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(pin_number, true);
config_pin_as_output_with_level(pin_number, true);
return true;
}
return false;
Expand Down
3 changes: 1 addition & 2 deletions ports/espressif/boards/lilygo_twatch_2020_v3/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,7 @@ void board_init(void) {
bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
if (pin_number == MOTOR_PIN) {
// no motor
gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(pin_number, false);
config_pin_as_output_with_level(pin_number, false);
return true;
}
return false;
Expand Down
3 changes: 1 addition & 2 deletions ports/espressif/boards/m5stack_core_basic/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,7 @@ void board_init(void) {
bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
// Set speaker gpio to ground to prevent noise from the speaker
if (pin_number == 25) {
gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(pin_number, false);
config_pin_as_output_with_level(pin_number, false);
return true;
}
return false;
Expand Down
3 changes: 1 addition & 2 deletions ports/espressif/boards/m5stack_core_fire/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,7 @@ void board_init(void) {
bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
// Set speaker gpio to ground to prevent noise from the speaker
if (pin_number == 25) {
gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(pin_number, false);
config_pin_as_output_with_level(pin_number, false);
return true;
}
return false;
Expand Down
5 changes: 2 additions & 3 deletions ports/espressif/boards/m5stack_dial/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -92,11 +92,10 @@ void board_init(void) {
}

bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
// Hold pind must be set high to avoid a power off when battery powered
// Hold pin must be set high to avoid a power off when battery powered
if (pin_number == 46) {
// Turn on hold output
gpio_set_direction(46, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(46, true);
config_pin_as_output_with_level(pin_number, true);
return true;
}
return false;
Expand Down
3 changes: 1 addition & 2 deletions ports/espressif/boards/m5stack_stick_c/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -217,8 +217,7 @@ void board_init(void) {
bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
// Set IR led gpio high to prevent power drain from the led
if (pin_number == 9) {
gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(pin_number, true);
config_pin_as_output_with_level(pin_number, true);
return true;
}
return false;
Expand Down
3 changes: 1 addition & 2 deletions ports/espressif/boards/m5stack_stick_c_plus/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -217,8 +217,7 @@ void board_init(void) {
bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
// Set IR led gpio high to prevent power drain from the led
if (pin_number == 9) {
gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(pin_number, true);
config_pin_as_output_with_level(pin_number, true);
return true;
}
return false;
Expand Down
3 changes: 1 addition & 2 deletions ports/espressif/boards/m5stack_timer_camera_x/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
* when usb is disconnected or
* the power button is released.
*/
gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(pin_number, true);
config_pin_as_output_with_level(pin_number, true);
return true;
}
return false;
Expand Down
3 changes: 1 addition & 2 deletions ports/espressif/boards/seeed_xiao_esp32c6/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,7 @@
bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
if (pin_number == 16) {
// Turn on I2C power by default.
gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(pin_number, true);
config_pin_as_output_with_level(pin_number, true);
return true;
}

Expand Down
10 changes: 3 additions & 7 deletions ports/espressif/boards/sqfmi_watchy/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -202,20 +202,16 @@ bool board_requests_safe_mode(void) {

bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
if (pin_number == 13) {
gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(pin_number, false);
config_pin_as_output_with_level(pin_number, false);
return true;
}
return false;
}

void reset_board(void) {
gpio_set_direction(13, GPIO_MODE_OUTPUT);
gpio_set_level(13, false);

config_pin_as_output_with_level(13, false);
}

void board_deinit(void) {
gpio_set_direction(13, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(13, false);
config_pin_as_output_with_level(13, false);
}
3 changes: 1 addition & 2 deletions ports/espressif/boards/sunton_esp32_2432S028/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
// Pull the speaker pin low to reduce noise on reset
if (pin_number == 26) {
// Turn on TFT
gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(pin_number, false);
config_pin_as_output_with_level(pin_number, false);
return true;
}
return false;
Expand Down
3 changes: 1 addition & 2 deletions ports/espressif/boards/sunton_esp32_2432S032C/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
// Pull the speaker pin low to reduce noise on reset
if (pin_number == 26) {
// Turn on audio
gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT);
gpio_set_level(pin_number, false);
config_pin_as_output_with_level(pin_number, false);
return true;
}
return false;
Expand Down
13 changes: 13 additions & 0 deletions ports/espressif/common-hal/microcontroller/Pin.c
Original file line number Diff line number Diff line change
Expand Up @@ -393,3 +393,16 @@ bool common_hal_mcu_pin_is_free(const mcu_pin_obj_t *pin) {
uint8_t common_hal_mcu_pin_number(const mcu_pin_obj_t *pin) {
return pin ? pin->number : NO_PIN;
}

void config_pin_as_output_with_level(gpio_num_t pin_number, bool level) {
gpio_config_t cfg = {
.pin_bit_mask = BIT64(pin_number),
.mode = GPIO_MODE_OUTPUT,
.pull_up_en = false,
.pull_down_en = false,
.intr_type = GPIO_INTR_DISABLE,
};
gpio_config(&cfg);

gpio_set_level(pin_number, level);
}
4 changes: 4 additions & 0 deletions ports/espressif/common-hal/microcontroller/Pin.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,7 @@ extern void clear_pin_preservations(void);
// Return true to indicate that the pin was reset. Returning false will lead to
// the port-default reset behavior.
extern bool espressif_board_reset_pin_number(gpio_num_t pin_number);

// Configure the IOMUX for the pin as GPIO, set the pin as output, and then set output the level.
// This ensures the IOMUX setting is correct.
extern void config_pin_as_output_with_level(gpio_num_t pin_number, bool level);
0