/** **************************************************************************************** * @brief Initializes spi and spi_flash drivers, discovers jedec id and releases from power down * * @param[in] cs_port: Chip select port * @param[in] cs_pin: Chip select pin * * @return Number of bytes actually written **************************************************************************************** */ int8_t spi_flash_enable(GPIO_PORT cs_port, GPIO_PIN cs_pin) { int8_t detected_spi_flash_device_index; SPI_Pad_t cs_pad_param; cs_pad_param.pin = cs_pin; cs_pad_param.port = cs_port; spi_init(&cs_pad_param, SPI_MODE_8BIT, SPI_ROLE_MASTER, SPI_CLK_IDLE_POL_LOW, SPI_PHA_MODE_0, SPI_MINT_DISABLE, SPI_XTAL_DIV_8); spi_flash_release_from_power_down(); detected_spi_flash_device_index = spi_flash_auto_detect(); return detected_spi_flash_device_index; }
static void da14583_spi_flash_init(void) { SPI_Pad_t cs_pad_param; // configure internal flash GPIOS GPIO_ConfigurePin( DA14583_SPI_FLASH_EN_GPIO_PORT, DA14583_SPI_FLASH_EN_GPIO_PIN, OUTPUT, PID_SPI_EN, true ); GPIO_ConfigurePin( DA14583_SPI_FLASH_CLK_GPIO_PORT, DA14583_SPI_FLASH_CLK_GPIO_PIN, OUTPUT, PID_SPI_CLK, false ); GPIO_ConfigurePin( DA14583_SPI_FLASH_DO_GPIO_PORT, DA14583_SPI_FLASH_DO_GPIO_PIN, OUTPUT, PID_SPI_DO, false ); GPIO_ConfigurePin( DA14583_SPI_FLASH_DI_GPIO_PORT, DA14583_SPI_FLASH_DI_GPIO_PIN, INPUT, PID_SPI_DI, false ); cs_pad_param.port = DA14583_SPI_FLASH_EN_GPIO_PORT; cs_pad_param.pin = DA14583_SPI_FLASH_EN_GPIO_PIN; // Initialize SPI driver spi_init(&cs_pad_param, SPI_MODE_8BIT, SPI_ROLE_MASTER, SPI_CLK_IDLE_POL_LOW, SPI_PHA_MODE_0, SPI_MINT_DISABLE, SPI_XTAL_DIV_8); // Initialize SPI Flash driver spi_flash_init(DA14583_SPI_FLASH_SIZE, DA14583_SPI_FLASH_PAGE_SIZE); // Power up flash spi_flash_release_from_power_down(); }