diff --git a/src/machine/machine_esp32c3_spi.go b/src/machine/machine_esp32c3_spi.go index 5fd0a853d..20e8d0f03 100644 --- a/src/machine/machine_esp32c3_spi.go +++ b/src/machine/machine_esp32c3_spi.go @@ -137,6 +137,12 @@ func (spi *SPI) Configure(config SPIConfig) error { // configure SPI bus clock spi.Bus.CLOCK.Set(freqToClockDiv(config.Frequency)) + // Default CS to NoPin so that an unset CS field (zero value = GPIO0) + // does not accidentally configure GPIO0 as the chip select output. + if config.CS == 0 { + config.CS = NoPin + } + // configure esp32c3 gpio pin matrix config.SDI.Configure(PinConfig{Mode: PinInput}) inFunc(FSPIQ_IN_IDX).Set(esp.GPIO_FUNC_IN_SEL_CFG_SEL | uint32(config.SDI)) diff --git a/src/machine/machine_esp32s3_spi.go b/src/machine/machine_esp32s3_spi.go index fb320f5ed..512addd35 100644 --- a/src/machine/machine_esp32s3_spi.go +++ b/src/machine/machine_esp32s3_spi.go @@ -67,6 +67,12 @@ func (spi *SPI) Configure(config SPIConfig) error { config.Frequency = SPI_DEFAULT_FREQUENCY } + // Default CS to NoPin so that an unset CS field (zero value = GPIO0) + // does not accidentally configure GPIO0 as the chip select output. + if config.CS == 0 { + config.CS = NoPin + } + switch spi.busID { case 2: // SPI2 (FSPI) if config.SCK == 0 {