Skip to content

Commit abff261

Browse files
authored
Merge pull request #3754 from hierophect/esp-spi-pinclaim
ESP32S2: fix pin claiming bugs
2 parents 015ba00 + a854da3 commit abff261

File tree

2 files changed

+10
-2
lines changed
  • ports/esp32s2/common-hal

2 files changed

+10
-2
lines changed

ports/esp32s2/common-hal/busio/SPI.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,14 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
204204
// hal->dummy_bits = 0;
205205
// hal->addr = 0;
206206

207+
claim_pin(self->clock_pin);
208+
if (self->MOSI_pin != NULL) {
209+
claim_pin(self->MOSI_pin);
210+
}
211+
if (self->MISO_pin != NULL) {
212+
claim_pin(self->MISO_pin);
213+
}
214+
207215
hal->io_mode = SPI_LL_IO_MODE_NORMAL;
208216

209217
common_hal_busio_spi_configure(self, 250000, 0, 0, 8);

ports/esp32s2/common-hal/microcontroller/Pin.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ void reset_all_pins(void) {
9696
}
9797

9898
void claim_pin(const mcu_pin_obj_t* pin) {
99-
in_use[pin->number / 32] |= (1 << pin->number % 32);
99+
in_use[pin->number / 32] |= (1 << (pin->number % 32));
100100
#ifdef MICROPY_HW_NEOPIXEL
101101
if (pin == MICROPY_HW_NEOPIXEL) {
102102
neopixel_in_use = true;
@@ -116,7 +116,7 @@ bool pin_number_is_free(gpio_num_t pin_number) {
116116
#endif
117117

118118
uint8_t offset = pin_number / 32;
119-
uint8_t mask = 1 << pin_number % 32;
119+
uint32_t mask = 1 << (pin_number % 32);
120120
return (never_reset_pins[offset] & mask) == 0 && (in_use[offset] & mask) == 0;
121121
}
122122

0 commit comments

Comments
 (0)