CI13LC SDK API手册  2.1.1
本手册用于描述CI13LC SDK各个组件和驱动API
ci13lc_dtrflash.h
浏览该文件的文档.
1 #ifndef __SPIC_H_
2 #define __SPIC_H_
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include <stdint.h>
9 #include <string.h>
10 #include <stdbool.h>
11 
12 #define SPIC_DMA_MODEFI 0 /*待芯片回来,提高主频后,再测试哪一种方式效率更高,且代码更少*/
13 
14 #define FLASH_F_SAME_AS_IP_CORE (0) /*1:flash时钟和IPCORE同频。0:不同频 */
15 
16 #define RX_NAGE_SAMPLE 0 /*FLASH的时序窗口调整:0 上升沿采样、1 下降沿采样 */
17 #define RX_NAGE_EN 1 /*FLASH的时序窗口调整:0、1 */
18 #define DELAY_LINE 0x1a /*FLASH的时序窗口调整:1 ~ 32 */
19 
20 typedef enum
21 {
22  FLASH_CLK_DIV_2 = 0,
23  FLASH_CLK_DIV_4 = 1,
24  FLASH_CLK_DIV_6 = 2,
25  FLASH_CLK_DIV_8 = 3,
26 }flash_clk_div_t;
27 
28 typedef enum
29 {
30  MD_SEL_LINE_1 = 0,
31  MD_SEL_LINE_4 = 1,
32  MD_SEL_LINE_8 = 2,
33  MD_SEL_RESERVED_0 = 3,
34  MD_SEL_LINE_1_MERGE = 4,
35  MD_SEL_LINE_4_MERGE = 5,
36  MD_SEL_RESERVED_1 = 6,
37  MD_SEL_RESERVED_2 = 7,
38  MD_SEL_DTR_LINE_1 = 8,
39  MD_SEL_DTR_LINE_4 = 9,
40  MD_SEL_DTR_LINE_8 = 10,
41  MD_SEL_RESERVED_3 = 11,
42  MD_SEL_DTR_LINE_1_MERGE = 12,
43  MD_SEL_DTR_LINE_4_MERGE = 13,
44  MD_SEL_RESERVED_4 = 14,
45 }md_sel_t;
46 
47 typedef enum
48 {
52 
53 typedef struct
54 {
55  flash_clk_div_t flash_clk_div;
56  uint32_t flash_sel;
57  uint32_t addr_size;
59 
60 typedef struct
61 {
62  md_sel_t cmd_md;
63  md_sel_t data_md;
64  uint32_t cmd0;
65  uint32_t cmd1;
66  uint32_t addr;
67  uint32_t addr_en;
68  uint32_t dummy;
69  uint32_t dummy_en;
71 
72 int32_t spic_cmd(uint32_t spic_base,spic_base_config_p spic_base_config);
73 
74 int32_t spic_read_by_cpu(uint32_t spic_base,spic_base_config_p spic_base_config,uint8_t* read_data,uint32_t read_len);
75 
76 int32_t spic_write_by_cpu(uint32_t spic_base,spic_base_config_p spic_base_config,uint8_t* write_data,uint32_t write_len);
77 
78 int32_t spic_readwrite_by_dma(uint32_t spic_base,spic_base_config_p spic_base_config,uint8_t* data,uint32_t len,flash_flag_t flag);
79 
80 int32_t spic_read_xip(uint32_t spic_base,spic_base_config_p spic_base_config,uint8_t* read_data,uint32_t read_len);
81 
82 int32_t spic_init(uint32_t spic_base,spic_init_p init);
83 
84 int32_t spic_clk_phase_set(uint32_t spic_base,uint32_t tx_shift,uint32_t tx_nege_en,uint32_t rx_shift,uint32_t rx_nege_en);
85 
86 void spic_hardware_reset(uint32_t spic_base,uint8_t enable);
87 
88 int32_t spic_xip_config(uint32_t spic_base,spic_base_config_p spic_base_config);
89 
90 uint32_t spic_prefetch_en(uint32_t spic_base,bool en);
91 
92 void spic_change_clk(uint32_t spic_base,flash_clk_div_t clk);
93 
94 #ifdef __cplusplus
95 }
96 #endif
97 
98 #endif
int32_t spic_clk_phase_set(uint32_t spic_base, uint32_t tx_shift, uint32_t tx_nege_en, uint32_t rx_shift, uint32_t rx_nege_en)
flash时钟相位调制
Definition: ci13lc_dtrflash.c:437
int32_t spic_read_by_cpu(uint32_t spic_base, spic_base_config_p spic_base_config, uint8_t *read_data, uint32_t read_len)
spic以CPU的方式向flash读数据
Definition: ci13lc_dtrflash.c:230
md_sel_t data_md
Definition: ci13lc_dtrflash.h:63
int32_t spic_write_by_cpu(uint32_t spic_base, spic_base_config_p spic_base_config, uint8_t *write_data, uint32_t write_len)
spic以CPU的方式向flash写数据
Definition: ci13lc_dtrflash.c:279
uint32_t flash_sel
Definition: ci13lc_dtrflash.h:56
int32_t spic_readwrite_by_dma(uint32_t spic_base, spic_base_config_p spic_base_config, uint8_t *data, uint32_t len, flash_flag_t flag)
spic以dma的方式flash写/读数据
Definition: ci13lc_dtrflash.c:327
flash_clk_div_t flash_clk_div
Definition: ci13lc_dtrflash.h:55
uint32_t spic_prefetch_en(uint32_t spic_base, bool en)
flash预取开关
Definition: ci13lc_dtrflash.c:490
int32_t spic_cmd(uint32_t spic_base, spic_base_config_p spic_base_config)
spic向flash发送命令
Definition: ci13lc_dtrflash.c:215
uint32_t dummy
Definition: ci13lc_dtrflash.h:68
Definition: ci13lc_dtrflash.h:60
Definition: ci13lc_dtrflash.h:50
Definition: ci13lc_dtrflash.h:53
int32_t spic_read_xip(uint32_t spic_base, spic_base_config_p spic_base_config, uint8_t *read_data, uint32_t read_len)
flash_flag_t
Definition: ci13lc_dtrflash.h:47
uint32_t cmd0
Definition: ci13lc_dtrflash.h:64
uint32_t addr_en
Definition: ci13lc_dtrflash.h:67
void spic_change_clk(uint32_t spic_base, flash_clk_div_t clk)
切换flash的时钟分频
Definition: ci13lc_dtrflash.c:85
Definition: ci13lc_dtrflash.h:49
uint32_t addr
Definition: ci13lc_dtrflash.h:66
int32_t spic_xip_config(uint32_t spic_base, spic_base_config_p spic_base_config)
XIP配置
Definition: ci13lc_dtrflash.c:185
void spic_hardware_reset(uint32_t spic_base, uint8_t enable)
struct spic_base_config_t * spic_base_config_p
int32_t spic_init(uint32_t spic_base, spic_init_p init)
spic控制器初始化
Definition: ci13lc_dtrflash.c:399
uint32_t cmd1
Definition: ci13lc_dtrflash.h:65
md_sel_t cmd_md
Definition: ci13lc_dtrflash.h:62
uint32_t addr_size
Definition: ci13lc_dtrflash.h:57
uint32_t dummy_en
Definition: ci13lc_dtrflash.h:69
struct spic_init_t * spic_init_p