26#ifndef __XC_DRV_FMC_SPI_H_
27#define __XC_DRV_FMC_SPI_H_
38#define __RAM_CODE __attribute__((section("ram_code")))
40#define __WRITE_REG32(REG, VAL) ((*REG) = (VAL))
41#define __READ_REG32(REG, VAL) ((VAL) = (*REG))
42#define __SET_BIT(REG, BIT) ((REG) |= (BIT))
43#define __CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
45#define FMC_SSI_CTRL0_DFS_LEN_4BIT (0x03UL)
46#define FMC_SSI_CTRL0_DFS_LEN_5BIT (0x04UL)
47#define FMC_SSI_CTRL0_DFS_LEN_6BIT (0x05UL)
48#define FMC_SSI_CTRL0_DFS_LEN_7BIT (0x06UL)
49#define FMC_SSI_CTRL0_DFS_LEN_8BIT (0x07UL)
50#define FMC_SSI_CTRL0_DFS_LEN_9BIT (0x08UL)
51#define FMC_SSI_CTRL0_DFS_LEN_10BIT (0x09UL)
52#define FMC_SSI_CTRL0_DFS_LEN_11BIT (0x0aUL)
53#define FMC_SSI_CTRL0_DFS_LEN_12BIT (0x0bUL)
54#define FMC_SSI_CTRL0_DFS_LEN_13BIT (0x0cUL)
55#define FMC_SSI_CTRL0_DFS_LEN_14BIT (0x0dUL)
56#define FMC_SSI_CTRL0_DFS_LEN_15BIT (0x0eUL)
57#define FMC_SSI_CTRL0_DFS_LEN_16BIT (0x0fUL)
59#define FMC_SSI_CTRL0_DFS_LEN_17BIT (0x10UL)
60#define FMC_SSI_CTRL0_DFS_LEN_18BIT (0x11UL)
61#define FMC_SSI_CTRL0_DFS_LEN_19BIT (0x12UL)
62#define FMC_SSI_CTRL0_DFS_LEN_20BIT (0x13UL)
63#define FMC_SSI_CTRL0_DFS_LEN_21BIT (0x14UL)
64#define FMC_SSI_CTRL0_DFS_LEN_22BIT (0x15UL)
65#define FMC_SSI_CTRL0_DFS_LEN_23BIT (0x16UL)
66#define FMC_SSI_CTRL0_DFS_LEN_24BIT (0x17UL)
67#define FMC_SSI_CTRL0_DFS_LEN_25BIT (0x18UL)
68#define FMC_SSI_CTRL0_DFS_LEN_26BIT (0x19UL)
69#define FMC_SSI_CTRL0_DFS_LEN_27BIT (0x1AUL)
70#define FMC_SSI_CTRL0_DFS_LEN_28BIT (0x1BUL)
71#define FMC_SSI_CTRL0_DFS_LEN_29BIT (0x1CUL)
72#define FMC_SSI_CTRL0_DFS_LEN_30BIT (0x1DUL)
73#define FMC_SSI_CTRL0_DFS_LEN_31BIT (0x1EUL)
74#define FMC_SSI_CTRL0_DFS_LEN_32BIT (0x1FUL)
76#define FMC_SSI_CTRL0_FRF_MOTOROLA (0x0UL)
77#define FMC_SSI_CTRL0_FRF_TI (0x1UL)
79#define FMC_SSI_CTRL0_SCPHA_LEAD (0x0UL)
80#define FMC_SSI_CTRL0_SCPHA_TRAIL (0x1UL)
82#define FMC_SSI_CTRL0_SCPOL_HIGH (0x1UL)
83#define FMC_SSI_CTRL0_SCPOL_LOW (0x0UL)
85#define FMC_SSI_CTRL0_TMOD_WR (0x0UL)
86#define FMC_SSI_CTRL0_TMOD_W (0x1UL)
87#define FMC_SSI_CTRL0_TMOD_R (0x2UL)
89#define FMC_SSI_CTRL0_SLV_OE_ENABLE (0x0UL)
90#define FMC_SSI_CTRL0_SLV_OE_DISABLE (0x1UL)
92#define FMC_SSI_CTRL0_SRL_NORMAL (0x0UL)
93#define FMC_SSI_CTRL0_SRL_LOOKBACK (0x1UL)
95#define FMC_SSI_CTRL0_SSTE_ENABLE (0x1UL)
96#define FMC_SSI_CTRL0_SSTE_DISABLE (0x0UL)
98#define FMC_SSI_CTRL0_CFS_SIZE_Bit_01 (0x0UL)
99#define FMC_SSI_CTRL0_CFS_SIZE_Bit_02 (0x1UL)
100#define FMC_SSI_CTRL0_CFS_SIZE_Bit_03 (0x2UL)
101#define FMC_SSI_CTRL0_CFS_SIZE_Bit_04 (0x3UL)
102#define FMC_SSI_CTRL0_CFS_SIZE_Bit_05 (0x4UL)
103#define FMC_SSI_CTRL0_CFS_SIZE_Bit_06 (0x5UL)
104#define FMC_SSI_CTRL0_CFS_SIZE_Bit_07 (0x6UL)
105#define FMC_SSI_CTRL0_CFS_SIZE_Bit_08 (0x7UL)
106#define FMC_SSI_CTRL0_CFS_SIZE_Bit_09 (0x8UL)
108#define FMC_SSI_CTRL0_SPI_FRF_STANDARD (0x0UL)
110#define FMC_SSI_CTRL0_SPI_FRF_DUAL (0x1UL)
111#define FMC_SSI_CTRL0_SPI_FRF_QUAD (0x2UL)
112#define FMC_SSI_CTRL0_SPI_FRF_OCTAL (0x3UL)
114#define FMC_SSI_EN_SEN_ENABLE (0x1UL)
115#define FMC_SSI_EN_SEN_DISABLE (0x0UL)
117#define FMC_SSI_SE_SS0_SELECT_YES (0x1UL)
118#define FMC_SSI_SE_SS0_SELECT_NO (0x0UL)
120#define FMC_SSI_BAUD_DIV_2 (0x02UL)
121#define FMC_SSI_BAUD_DIV_4 (0x04UL)
122#define FMC_SSI_BAUD_DIV_6 (0x06UL)
123#define FMC_SSI_BAUD_DIV_8 (0x08UL)
124#define FMC_SSI_BAUD_DIV_10 (0x10UL)
125#define FMC_SSI_BAUD_DIV_12 (0x12UL)
127#define FMC_SSI_TXFTL_FIFO_0 (0x00UL)
128#define FMC_SSI_TXFTL_FIFO_1 (0x01UL)
129#define FMC_SSI_TXFTL_FIFO_2 (0x02UL)
130#define FMC_SSI_TXFTL_FIFO_3 (0x03UL)
131#define FMC_SSI_TXFTL_FIFO_4 (0x04UL)
132#define FMC_SSI_TXFTL_FIFO_5 (0x05UL)
133#define FMC_SSI_TXFTL_FIFO_6 (0x06UL)
134#define FMC_SSI_TXFTL_FIFO_7 (0x07UL)
136#define FMC_SSI_RXFTL_FIFO_0 (0x00UL)
137#define FMC_SSI_RXFTL_FIFO_1 (0x01UL)
138#define FMC_SSI_RXFTL_FIFO_2 (0x02UL)
139#define FMC_SSI_RXFTL_FIFO_3 (0x03UL)
140#define FMC_SSI_RXFTL_FIFO_4 (0x04UL)
141#define FMC_SSI_RXFTL_FIFO_5 (0x05UL)
142#define FMC_SSI_RXFTL_FIFO_6 (0x06UL)
143#define FMC_SSI_RXFTL_FIFO_7 (0x07UL)
145#define FMC_SSI_STS_BUSY_SET (0x1UL << BUSY_POS)
146#define FMC_SSI_STS_BUSY_RESET (0x0UL << BUSY_POS)
148#define FMC_SSI_STS_TFNF_SET (0x1UL << TFNF_POS)
149#define FMC_SSI_STS_TFNF_RESET (0x0UL << TFNF_POS)
151#define FMC_SSI_STS_TFE_SET (0x1UL << TFE_POS)
152#define FMC_SSI_STS_TFE_RESET (0x0UL << TFE_POS)
154#define FMC_SSI_STS_RFNE_SET (0x1UL << RFNE_POS)
155#define FMC_SSI_STS_RFNE_RESET (0x0UL << RFNE_POS)
157#define FMC_SSI_STS_RFF_SET (0x1UL << RFF_POS)
158#define FMC_SSI_STS_RFF_RESET (0x0UL << RFF_POS)
160#define FMC_SSI_STS_TXE_SET (0x1UL << TXE_POS)
161#define FMC_SSI_STS_TXE_RESET (0x0UL << TXE_POS)
163#define FMC_SSI_IE_TXEIE_ENABLE (0x1UL << TXEIE_POS)
164#define FMC_SSI_IE_TXEIE_DISABLE (0x0UL << TXEIE_POS)
166#define FMC_SSI_IE_TXOIE_ENABLE (0x1UL << TXOIE_POS)
167#define FMC_SSI_IE_TXOIE_DISABLE (0x0UL << TXOIE_POS)
169#define FMC_SSI_IE_RXUIE_ENABLE (0x1UL << RXUIE_POS)
170#define FMC_SSI_IE_RXUIE_DISABLE (0x0UL << RXUIE_POS)
172#define FMC_SSI_IE_RXOIE_ENABLE (0x1UL << RXOIE_POS)
173#define FMC_SSI_IE_RXOIE_DISABLE (0x0UL << RXOIE_POS)
175#define FMC_SSI_IE_RXFIE_ENABLE (0x1UL << RXFIE_POS)
176#define FMC_SSI_IE_RXFIE_DISABLE (0x0UL << RXFIE_POS)
178#define FMC_SSI_IS_TXEIS_SET (0x1UL << TXEIS_POS)
179#define FMC_SSI_IS_TXEIS_RESET (0x0UL << TXEIS_POS)
181#define FMC_SSI_IS_TXOIS_SET (0x1UL << TXOIS_POS)
182#define FMC_SSI_IS_TXOIS_RESET (0x0UL << TXOIS_POS)
184#define FMC_SSI_IS_RXUIS_SET (0x1UL << RXUIS_POS)
185#define FMC_SSI_IS_RXUIS_RESET (0x0UL << RXUIS_POS)
187#define FMC_SSI_IS_RXOIS_SET (0x1UL << RXOIS_POS)
188#define FMC_SSI_IS_RXOIS_RESET (0x0UL << RXOIS_POS)
190#define FMC_SSI_SSI_IS_RXFIS_SET (0x1UL << RXFIS_POS)
191#define FMC_SSI_SSI_IS_RXFIS_RESET (0x0UL << RXFIS_POS)
193#define FMC_SSI_RIS_TXEIR_SET (0x1UL << TXEIR_POS)
194#define FMC_SSI_RIS_TXEIR_RESET (0x0UL << TXEIR_POS)
196#define FMC_SSI_RIS_TXOIR_SET (0x1UL << TXOIR_POS)
197#define FMC_SSI_RIS_TXOIR_RESET (0x0UL << TXOIR_POS)
199#define FMC_SSI_RIS_RXUIR_SET (0x1UL << RXUIR_POS)
200#define FMC_SSI_RIS_RXUIR_RESET (0x0UL << RXUIR_POS)
202#define FMC_SSI_RIS_RXOIR_SET (0x1UL << RXOIR_POS)
203#define FMC_SSI_RIS_RXOIR_RESET (0x0UL << RXOIR_POS)
205#define FMC_SSI_RIS_RXFIR_SET (0x1UL << RXFIR_POS)
206#define FMC_SSI_RIS_RXFIR_RESET (0x0UL << RXFIR_POS)
208#define PUYA_FLASH_STATUS_WIP_SET (0x01UL)
209#define PUYA_FLASH_STATUS_WIP_RESET (0x00UL)
211#define CMD_READ_DATA (uint8_t)0x03
212#define CMD_READ_STATUS (uint8_t)0x05
213#define CMD_CHIP_ERASE (uint8_t)0xc7
214#define CMD_WRITE_ENABLE (uint8_t)0x06
215#define CMD_WRITE_DISABLE (uint8_t)0x04
216#define CMD_PAGE_PROGRAM (uint8_t)0x02
217#define CMD_BLOCK_ERASE (uint8_t)0xD8
218#define CMD_SECTOR_ERASE (uint8_t)0x20
219#define CMD_PAGE_ERASE (uint8_t)0x81
220#define CMD_RELEASE_PWRDWN (uint8_t)0xAB
221#define CMD_PWRDWN (uint8_t)0xB9
222#define CMD_RUID (uint8_t)0x4B
223#define CMD_RDID (uint8_t)0x9F
224#define CMD_QREMS (uint8_t)0x94
225#define CMD_WRITE_STATUS_REG (uint8_t)0x01
227#define FLASH_PAGE_SIZE 256
228#define FLASH_SECTOR_SIZE 4096
230#define CUR_PAGE_NUM(addr) (addr / FLASH_PAGE_SIZE)
231#define CUR_START_PSR(addr) (addr % FLASH_PAGE_SIZE)
232#define CUR_SECTOR_NUM(addr) (addr / FLASH_SECTOR_SIZE)
233#define CUR_SECTOR_PSR(addr) (addr % FLASH_SECTOR_SIZE)
235#define BLE_COMMON_BASE 0x53022000UL
236#define BLE_COMN_AGC_REG_OUT0 ((volatile uint32_t *)(BLE_COMMON_BASE + 0x28))
237#define FMC_IDLE_STATUS ((uint32_t)0x01 << 31)
240#define CMD_ERASE_SECURITY_REG (uint8_t)0x44
241#define CMD_READ_SECURITY_REG (uint8_t)0x48
242#define CMD_PROGRAM_SECURITY_REG (uint8_t)0x42
244#define OTP_PROGRAM_PAGE_0 (uint8_t)0x0
245#define OTP_PROGRAM_PAGE_1 (uint8_t)0x10
246#define OTP_PROGRAM_PAGE_2 (uint8_t)0x20
247#define OTP_PROGRAM_PAGE_3 (uint8_t)0x30
249#define FLASH_2M_FLAG 0x15
250#define FLASH_1M_FLAG 0x14
251#define FLASH_512K_FLAG 0x13
252#define FLASH_256K_FLAG 0x12
253#define FLASH_128K_FLAG 0x11
255#define FLASH_2M_SIZE 1024*2048
256#define FLASH_1M_SIZE 1024*1024
257#define FLASH_512K_SIZE 1024*512
258#define FLASH_256K_SIZE 1024*256
259#define FLASH_128K_SIZE 1024*128
261#define YOUCUN_FLASH 0x60B3
262#define PURAN_128K_FLASH 0x4485
263#define GD25WD40_512K_FLASH 0x64C8
265#define FLASH_PAGE_SIZE 256
266#define FLASH_SECTOR_SIZE 4096
uint32_t chip_cnt_reverse_verif
uint32_t adc2v4_reverse_verif
uint32_t ft_rest_reverse_verif
uint32_t flash_id_reverse_verif
uint32_t rc_cail_reverse_verif
bool xc_adc_2v4_calibrate_read(uint16_t *adc_calibrate)
xc_adc_2v4_calibrate_read
void xc_fmc_spi_flash_ruid(uint8_t *ruid)
xc_fmc_spi_flash_ruid
void xc_fmc_spi_flash_erase_sector(uint32_t addr)
xc_fmc_spi_flash_erase_sector
struct board_c board_card_t
uint8_t xc_fmc_spi_flash_read(uint32_t addr, uint8_t *buff, uint16_t len)
xc_fmc_spi_flash_write
void xc_fmc_spi_otp_read_page(uint32_t addr, uint8_t *data, uint16_t size)
xc_fmc_spi_flash_read_page
bool flash_size_and_type_get(uint32_t *flash_size, uint16_t *flash_type)
flash_size_and_type_get
bool xc_unique_identification_read(uint8_t *unique_id)
xc_unique_identification_read
void xc_fmc_spi_flash_erase_page(uint32_t addr)
xc_fmc_spi_flash_erase_page
void xc_fmc_spi_flash_wait_busy(void)
void xc_fmc_spi_flash_wake_up(void)
xc_fmc_spi_flash_power_down
void xc_fmc_spi_flash_read_page(uint32_t addr, uint8_t *buff, uint16_t size)
xc_fmc_spi_flash_read_page
void xc_fmc_spi_flash_write_page(uint32_t addr, uint8_t *buff, uint16_t size)
xc_fmc_spi_flash_write_page
void xc_fmc_spi_flash_write_enable(void)
void xc_fmc_spi_flash_power_down(void)
xc_fmc_spi_flash_power_down
void xc_fmc_spi_flash_rdid(uint8_t *rdid)
xc_fmc_spi_flash_rdid
void xc_fmc_spi_init_oprt(void)
xc_fmc_spi_init_oprt
uint8_t xc_fmc_spi_flash_write(uint32_t addr, uint8_t *buff, uint16_t len)