esp32: remove extra configuration

Этот коммит содержится в:
sago35 2021-09-16 21:10:04 +09:00 коммит произвёл Ayke
родитель 5c0a337c4f
коммит 06c60b4ecf

Просмотреть файл

@ -318,7 +318,7 @@ func (spi SPI) Configure(config SPIConfig) error {
// Configure the SPI clock. This assumes a peripheral clock of 80MHz. // Configure the SPI clock. This assumes a peripheral clock of 80MHz.
var clockReg uint32 var clockReg uint32
if config.Frequency >= 40e6 { if config.Frequency > 40e6 {
// Don't use a prescaler, but directly connect to the APB clock. This // Don't use a prescaler, but directly connect to the APB clock. This
// results in a SPI clock frequency of 40MHz. // results in a SPI clock frequency of 40MHz.
clockReg |= esp.SPI_CLOCK_CLK_EQU_SYSCLK clockReg |= esp.SPI_CLOCK_CLK_EQU_SYSCLK
@ -363,38 +363,16 @@ func (spi SPI) Configure(config SPIConfig) error {
// (mode), among others. // (mode), among others.
var ctrl2Reg, userReg, pinReg uint32 var ctrl2Reg, userReg, pinReg uint32
// For mode configuration, see table 29 in the reference manual (page 128). // For mode configuration, see table 29 in the reference manual (page 128).
var delayMode uint32
switch config.Mode { switch config.Mode {
case 0: case 0:
delayMode = 2
case 1: case 1:
delayMode = 1
userReg |= esp.SPI_USER_CK_OUT_EDGE userReg |= esp.SPI_USER_CK_OUT_EDGE
case 2: case 2:
delayMode = 1
userReg |= esp.SPI_USER_CK_OUT_EDGE userReg |= esp.SPI_USER_CK_OUT_EDGE
pinReg |= esp.SPI_PIN_CK_IDLE_EDGE pinReg |= esp.SPI_PIN_CK_IDLE_EDGE
case 3: case 3:
delayMode = 2
pinReg |= esp.SPI_PIN_CK_IDLE_EDGE pinReg |= esp.SPI_PIN_CK_IDLE_EDGE
} }
// Extra configuration necessary for correct data input at high frequencies.
// This is only necessary when MISO goes through the GPIO matrix (which it
// currently does).
if config.Frequency >= 40e6 {
// Delay mode must be set to 0 and SPI_USR_DUMMY_CYCLELEN should be set
// to 0 (the default).
userReg |= esp.SPI_USER_USR_DUMMY
} else if config.Frequency >= 20e6 {
// Nothing to do here, delay mode should be set to 0 according to the
// datasheet.
} else {
// Follow the delay mode as given in table 29 on page 128 of the
// reference manual.
// Note that this is only specified for SPI frequency of 10MHz and
// below (≤Fapb/8), so 13.3MHz appears to be left unspecified.
ctrl2Reg |= delayMode << esp.SPI_CTRL2_MOSI_DELAY_MODE_Pos
}
// Enable full-duplex communication. // Enable full-duplex communication.
userReg |= esp.SPI_USER_DOUTDIN userReg |= esp.SPI_USER_DOUTDIN
userReg |= esp.SPI_USER_USR_MOSI userReg |= esp.SPI_USER_USR_MOSI