#include "include\HSPI.h" #include "include\spi_register.h" #define __min(a,b) ((a > b) ? (b):(a)) void HSPI::begin() { spi_fifo = (uint32_t*)SPI_FLASH_C0(hspi_port); //bit9 of PERIPHS_IO_MUX should be cleared when HSPI clock doesn't equal CPU clock WRITE_PERI_REG(PERIPHS_IO_MUX, 0x105); PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_HSPIQ_MISO); // gpio12 PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, FUNC_HSPID_MOSI); // gpio13 PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U, FUNC_HSPI_CLK); // gpio14 PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_HSPI_CS0); // gpio15 uint32_t regvalue = SPI_FLASH_DOUT; regvalue |= SPI_DOUTDIN | SPI_CK_I_EDGE; regvalue &= ~(BIT2 | SPI_FLASH_USR_ADDR | SPI_FLASH_USR_DUMMY | SPI_FLASH_USR_DIN | SPI_USR_COMMAND); SET_PERI_REG_MASK(SPI_FLASH_USER(hspi_port), regvalue); // SPI clock=CPU clock/8 WRITE_PERI_REG(SPI_FLASH_CLOCK(hspi_port), ((1&SPI_CLKDIV_PRE)<