50 lines
1.3 KiB
C
50 lines
1.3 KiB
C
#ifndef _W25Q64_H_
|
|
#define _W25Q64_H_
|
|
|
|
//#define USE_ST_HAL
|
|
#define USE_NXP_FSL
|
|
|
|
#if defined(USE_ST_HAL)
|
|
#include "spi.h"
|
|
|
|
#define SPI_Handle hspi1
|
|
#define SPI_CS_PORT GPIOA
|
|
#define SPI_CS_PIN GPIO_PIN_4
|
|
|
|
#elif defined(USE_NXP_FSL)
|
|
#include "fsl_gpio.h"
|
|
#include "fsl_lpspi.h"
|
|
|
|
#define SPI_Handle LPSPI3
|
|
#define SPI_CS_PORT GPIO1
|
|
#define SPI_CS_PIN 3
|
|
/* Select USB1 PLL PFD0 (720 MHz) as lpspi clock source */
|
|
#define LPSPI_CLOCK_SOURCE_SELECT (1U)
|
|
/* Clock divider for master lpspi clock source */
|
|
#define LPSPI_CLOCK_SOURCE_DIVIDER (7U)
|
|
/* 90MHz */
|
|
#define LPSPI_MASTER_CLK_FREQ (CLOCK_GetFreq(kCLOCK_Usb1PllPfd0Clk) / (LPSPI_CLOCK_SOURCE_DIVIDER + 1U))
|
|
/*! Transfer baudrate - 80M */
|
|
#define TRANSFER_BAUDRATE 80000000U
|
|
#endif /* USE_ST_HAL or USE_NXP_FSL */
|
|
|
|
enum {
|
|
ManufactDeviceID_CMD = 0x90,
|
|
READ_STATU_REGISTER_1 = 0x05,
|
|
READ_STATU_REGISTER_2 = 0x35,
|
|
READ_DATA_CMD = 0x03,
|
|
WRITE_ENABLE_CMD = 0x06,
|
|
WRITE_DISABLE_CMD = 0x04,
|
|
SECTOR_ERASE_CMD = 0x20,
|
|
CHIP_ERASE_CMD = 0xc7,
|
|
PAGE_PROGRAM_CMD = 0x02,
|
|
};
|
|
|
|
int w25qxx_init(void);
|
|
uint16_t w25qxx_read_deviceid(void);
|
|
int w25qxx_read(uint8_t* buffer, uint32_t start_addr, uint16_t nbytes);
|
|
int w25qxx_erase_sector(uint32_t sector_addr);
|
|
int w25qxx_page_program(uint8_t* dat, uint32_t write_addr, uint16_t nbytes);
|
|
|
|
#endif
|