File tree Expand file tree Collapse file tree 26 files changed +63
-55
lines changed
adafruit_feather_esp32_v2
adafruit_feather_esp32c6_4mbflash_nopsram
adafruit_feather_esp32s2_reverse_tft
adafruit_feather_esp32s2_tft
adafruit_feather_esp32s3_reverse_tft
adafruit_feather_esp32s3_tft
arduino_nano_esp32s3_inverted_statusled
cytron_maker_feather_aiot_s3
common-hal/microcontroller Expand file tree Collapse file tree 26 files changed +63
-55
lines changed Original file line number Diff line number Diff line change @@ -255,10 +255,13 @@ jobs:
255
255
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
256
256
unzip -q -d /tmp gcc-arm.zip
257
257
tar -C /tmp/arm-gnu-toolchain* -cf - . | tar -C /usr/local -xf -
258
- pip install wheel
259
- # requirements_dev.txt doesn't install on windows. (with msys2 python)
258
+ # We could use a venv instead, but that requires entering the venv on each run step
259
+ # that runs in its own shell. There are some actions that help with that, but not for msys2
260
+ # that I can find. (dhalbert)
261
+ pip install --break-system-packages wheel
262
+ # requirements-dev.txt doesn't install on windows. (with msys2 python)
260
263
# instead, pick a subset for what we want to do
261
- pip install cascadetoml jinja2 typer click intelhex
264
+ pip install --break-system-packages cascadetoml jinja2 typer click intelhex
262
265
# check that installed packages work....?
263
266
which python; python --version; python -c "import cascadetoml"
264
267
which python3; python3 --version; python3 -c "import cascadetoml"
Original file line number Diff line number Diff line change 14
14
bool espressif_board_reset_pin_number (gpio_num_t pin_number ) {
15
15
if (pin_number == 2 ) {
16
16
// Turn on NeoPixel and I2C power by default.
17
- gpio_set_direction (pin_number , GPIO_MODE_DEF_OUTPUT );
18
- gpio_set_level (pin_number , true);
17
+ config_pin_as_output_with_level (pin_number , true);
19
18
return true;
20
19
}
21
20
Original file line number Diff line number Diff line change 14
14
bool espressif_board_reset_pin_number (gpio_num_t pin_number ) {
15
15
if (pin_number == 20 ) {
16
16
// Turn on I2C power by default.
17
- gpio_set_direction (pin_number , GPIO_MODE_DEF_OUTPUT );
18
- gpio_set_level (pin_number , true);
17
+ config_pin_as_output_with_level (pin_number , true);
19
18
return true;
20
19
}
21
20
Original file line number Diff line number Diff line change @@ -103,8 +103,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
103
103
// Override the I2C/TFT power pin reset to prevent resetting the display.
104
104
if (pin_number == 7 ) {
105
105
// Turn on TFT and I2C
106
- gpio_set_direction (pin_number , GPIO_MODE_DEF_OUTPUT );
107
- gpio_set_level (pin_number , true);
106
+ config_pin_as_output_with_level (pin_number , true);
108
107
return true;
109
108
}
110
109
return false;
Original file line number Diff line number Diff line change @@ -103,8 +103,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
103
103
// Override the I2C/TFT power pin reset to prevent resetting the display.
104
104
if (pin_number == 21 ) {
105
105
// Turn on TFT and I2C
106
- gpio_set_direction (pin_number , GPIO_MODE_DEF_OUTPUT );
107
- gpio_set_level (pin_number , true);
106
+ config_pin_as_output_with_level (pin_number , true);
108
107
return true;
109
108
}
110
109
return false;
Original file line number Diff line number Diff line change @@ -103,8 +103,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
103
103
// Override the I2C/TFT power pin reset to prevent resetting the display.
104
104
if (pin_number == 7 ) {
105
105
// Turn on TFT and I2C
106
- gpio_set_direction (pin_number , GPIO_MODE_DEF_OUTPUT );
107
- gpio_set_level (pin_number , true);
106
+ config_pin_as_output_with_level (pin_number , true);
108
107
return true;
109
108
}
110
109
return false;
Original file line number Diff line number Diff line change @@ -103,8 +103,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
103
103
// Override the I2C/TFT power pin reset to prevent resetting the display.
104
104
if (pin_number == 21 ) {
105
105
// Turn on TFT and I2C
106
- gpio_set_direction (pin_number , GPIO_MODE_DEF_OUTPUT );
107
- gpio_set_level (pin_number , true);
106
+ config_pin_as_output_with_level (pin_number , true);
108
107
return true;
109
108
}
110
109
return false;
Original file line number Diff line number Diff line change 14
14
bool espressif_board_reset_pin_number (gpio_num_t pin_number ) {
15
15
if (pin_number == 2 ) {
16
16
// Turn on NeoPixel and I2C power by default.
17
- gpio_set_direction (pin_number , GPIO_MODE_DEF_OUTPUT );
18
- gpio_set_level (pin_number , true);
17
+ config_pin_as_output_with_level (pin_number , true);
19
18
return true;
20
19
}
21
20
Original file line number Diff line number Diff line change 12
12
bool espressif_board_reset_pin_number (gpio_num_t pin_number ) {
13
13
if (pin_number == 13 ) {
14
14
// Set D13 LED to input when not in use
15
- gpio_set_direction (pin_number , GPIO_MODE_DEF_INPUT );
16
- gpio_set_pull_mode (pin_number , GPIO_PULLDOWN_ONLY );
15
+ gpio_config_t cfg = {
16
+ .pin_bit_mask = BIT64 (pin_number ),
17
+ .mode = GPIO_MODE_INPUT ,
18
+ .pull_up_en = false,
19
+ .pull_down_en = true,
20
+ .intr_type = GPIO_INTR_DISABLE ,
21
+ };
22
+ gpio_config (& cfg );
17
23
return true;
18
24
}
19
25
Original file line number Diff line number Diff line change 12
12
bool espressif_board_reset_pin_number (gpio_num_t pin_number ) {
13
13
if (pin_number == 13 ) {
14
14
// Set D13 LED to input when not in use
15
- gpio_set_direction (pin_number , GPIO_MODE_DEF_INPUT );
16
- gpio_set_pull_mode (pin_number , GPIO_PULLDOWN_ONLY );
15
+ gpio_config_t cfg = {
16
+ .pin_bit_mask = BIT64 (pin_number ),
17
+ .mode = GPIO_MODE_INPUT ,
18
+ .pull_up_en = false,
19
+ .pull_down_en = true,
20
+ .intr_type = GPIO_INTR_DISABLE ,
21
+ };
22
+ gpio_config (& cfg );
17
23
return true;
18
24
}
19
25
Original file line number Diff line number Diff line change @@ -58,8 +58,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
58
58
59
59
void reset_board (void ) {
60
60
// Turn on VP by default.
61
- gpio_set_direction (11 , GPIO_MODE_DEF_OUTPUT );
62
- gpio_set_level (11 , true);
61
+ config_pin_as_output_with_level (11 , true);
63
62
}
64
63
65
64
// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here.
Original file line number Diff line number Diff line change @@ -103,8 +103,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
103
103
// Override the I2C/TFT power pin reset to prevent resetting the display.
104
104
if (pin_number == 21 ) {
105
105
// Turn on TFT and I2C
106
- gpio_set_direction (21 , GPIO_MODE_DEF_OUTPUT );
107
- gpio_set_level (21 , true);
106
+ config_pin_as_output_with_level (pin_number , true);
108
107
return true;
109
108
}
110
109
return false;
Original file line number Diff line number Diff line change @@ -101,8 +101,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
101
101
// Override the I2C/TFT power pin reset to prevent resetting the display.
102
102
if (pin_number == 15 ) {
103
103
// Turn on TFT
104
- gpio_set_direction (pin_number , GPIO_MODE_DEF_OUTPUT );
105
- gpio_set_level (pin_number , true);
104
+ config_pin_as_output_with_level (pin_number , true);
106
105
return true;
107
106
}
108
107
return false;
Original file line number Diff line number Diff line change @@ -131,8 +131,7 @@ void board_init(void) {
131
131
bool espressif_board_reset_pin_number (gpio_num_t pin_number ) {
132
132
if (pin_number == MOTOR_PIN ) {
133
133
// no motor
134
- gpio_set_direction (pin_number , GPIO_MODE_DEF_OUTPUT );
135
- gpio_set_level (pin_number , false);
134
+ config_pin_as_output_with_level (pin_number , false);
136
135
return true;
137
136
}
138
137
return false;
Original file line number Diff line number Diff line change @@ -89,8 +89,7 @@ void board_init(void) {
89
89
bool espressif_board_reset_pin_number (gpio_num_t pin_number ) {
90
90
// Set speaker gpio to ground to prevent noise from the speaker
91
91
if (pin_number == 25 ) {
92
- gpio_set_direction (pin_number , GPIO_MODE_DEF_OUTPUT );
93
- gpio_set_level (pin_number , false);
92
+ config_pin_as_output_with_level (pin_number , false);
94
93
return true;
95
94
}
96
95
return false;
Original file line number Diff line number Diff line change @@ -89,8 +89,7 @@ void board_init(void) {
89
89
bool espressif_board_reset_pin_number (gpio_num_t pin_number ) {
90
90
// Set speaker gpio to ground to prevent noise from the speaker
91
91
if (pin_number == 25 ) {
92
- gpio_set_direction (pin_number , GPIO_MODE_DEF_OUTPUT );
93
- gpio_set_level (pin_number , false);
92
+ config_pin_as_output_with_level (pin_number , false);
94
93
return true;
95
94
}
96
95
return false;
Original file line number Diff line number Diff line change @@ -92,11 +92,10 @@ void board_init(void) {
92
92
}
93
93
94
94
bool espressif_board_reset_pin_number (gpio_num_t pin_number ) {
95
- // Hold pind must be set high to avoid a power off when battery powered
95
+ // Hold pin must be set high to avoid a power off when battery powered
96
96
if (pin_number == 46 ) {
97
97
// Turn on hold output
98
- gpio_set_direction (46 , GPIO_MODE_DEF_OUTPUT );
99
- gpio_set_level (46 , true);
98
+ config_pin_as_output_with_level (pin_number , true);
100
99
return true;
101
100
}
102
101
return false;
Original file line number Diff line number Diff line change @@ -217,8 +217,7 @@ void board_init(void) {
217
217
bool espressif_board_reset_pin_number (gpio_num_t pin_number ) {
218
218
// Set IR led gpio high to prevent power drain from the led
219
219
if (pin_number == 9 ) {
220
- gpio_set_direction (pin_number , GPIO_MODE_DEF_OUTPUT );
221
- gpio_set_level (pin_number , true);
220
+ config_pin_as_output_with_level (pin_number , true);
222
221
return true;
223
222
}
224
223
return false;
Original file line number Diff line number Diff line change @@ -217,8 +217,7 @@ void board_init(void) {
217
217
bool espressif_board_reset_pin_number (gpio_num_t pin_number ) {
218
218
// Set IR led gpio high to prevent power drain from the led
219
219
if (pin_number == 9 ) {
220
- gpio_set_direction (pin_number , GPIO_MODE_DEF_OUTPUT );
221
- gpio_set_level (pin_number , true);
220
+ config_pin_as_output_with_level (pin_number , true);
222
221
return true;
223
222
}
224
223
return false;
Original file line number Diff line number Diff line change @@ -19,8 +19,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
19
19
* when usb is disconnected or
20
20
* the power button is released.
21
21
*/
22
- gpio_set_direction (pin_number , GPIO_MODE_DEF_OUTPUT );
23
- gpio_set_level (pin_number , true);
22
+ config_pin_as_output_with_level (pin_number , true);
24
23
return true;
25
24
}
26
25
return false;
Original file line number Diff line number Diff line change 34
34
bool espressif_board_reset_pin_number (gpio_num_t pin_number ) {
35
35
if (pin_number == 16 ) {
36
36
// Turn on I2C power by default.
37
- gpio_set_direction (pin_number , GPIO_MODE_DEF_OUTPUT );
38
- gpio_set_level (pin_number , true);
37
+ config_pin_as_output_with_level (pin_number , true);
39
38
return true;
40
39
}
41
40
Original file line number Diff line number Diff line change @@ -202,20 +202,16 @@ bool board_requests_safe_mode(void) {
202
202
203
203
bool espressif_board_reset_pin_number (gpio_num_t pin_number ) {
204
204
if (pin_number == 13 ) {
205
- gpio_set_direction (pin_number , GPIO_MODE_DEF_OUTPUT );
206
- gpio_set_level (pin_number , false);
205
+ config_pin_as_output_with_level (pin_number , false);
207
206
return true;
208
207
}
209
208
return false;
210
209
}
211
210
212
211
void reset_board (void ) {
213
- gpio_set_direction (13 , GPIO_MODE_OUTPUT );
214
- gpio_set_level (13 , false);
215
-
212
+ config_pin_as_output_with_level (13 , false);
216
213
}
217
214
218
215
void board_deinit (void ) {
219
- gpio_set_direction (13 , GPIO_MODE_DEF_OUTPUT );
220
- gpio_set_level (13 , false);
216
+ config_pin_as_output_with_level (13 , false);
221
217
}
Original file line number Diff line number Diff line change @@ -97,8 +97,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
97
97
// Pull the speaker pin low to reduce noise on reset
98
98
if (pin_number == 26 ) {
99
99
// Turn on TFT
100
- gpio_set_direction (pin_number , GPIO_MODE_DEF_OUTPUT );
101
- gpio_set_level (pin_number , false);
100
+ config_pin_as_output_with_level (pin_number , false);
102
101
return true;
103
102
}
104
103
return false;
Original file line number Diff line number Diff line change @@ -93,8 +93,7 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
93
93
// Pull the speaker pin low to reduce noise on reset
94
94
if (pin_number == 26 ) {
95
95
// Turn on audio
96
- gpio_set_direction (pin_number , GPIO_MODE_DEF_OUTPUT );
97
- gpio_set_level (pin_number , false);
96
+ config_pin_as_output_with_level (pin_number , false);
98
97
return true;
99
98
}
100
99
return false;
Original file line number Diff line number Diff line change @@ -393,3 +393,16 @@ bool common_hal_mcu_pin_is_free(const mcu_pin_obj_t *pin) {
393
393
uint8_t common_hal_mcu_pin_number (const mcu_pin_obj_t * pin ) {
394
394
return pin ? pin -> number : NO_PIN ;
395
395
}
396
+
397
+ void config_pin_as_output_with_level (gpio_num_t pin_number , bool level ) {
398
+ gpio_config_t cfg = {
399
+ .pin_bit_mask = BIT64 (pin_number ),
400
+ .mode = GPIO_MODE_OUTPUT ,
401
+ .pull_up_en = false,
402
+ .pull_down_en = false,
403
+ .intr_type = GPIO_INTR_DISABLE ,
404
+ };
405
+ gpio_config (& cfg );
406
+
407
+ gpio_set_level (pin_number , level );
408
+ }
Original file line number Diff line number Diff line change @@ -36,3 +36,7 @@ extern void clear_pin_preservations(void);
36
36
// Return true to indicate that the pin was reset. Returning false will lead to
37
37
// the port-default reset behavior.
38
38
extern bool espressif_board_reset_pin_number (gpio_num_t pin_number );
39
+
40
+ // Configure the IOMUX for the pin as GPIO, set the pin as output, and then set output the level.
41
+ // This ensures the IOMUX setting is correct.
42
+ extern void config_pin_as_output_with_level (gpio_num_t pin_number , bool level );
You can’t perform that action at this time.
0 commit comments