CI130X SDK API手册  2.2.0
本手册用于描述CI130X SDK各个组件和驱动API
结构体 | 宏定义 | 类型定义 | 函数 | 变量
ci130x_dtrflash.c 文件参考
#include "ci130x_dtrflash.h"
#include "ci130x_system.h"
#include "ci130x_dma.h"
#include "romlib_runtime.h"

结构体

struct  spic_register
 
struct  spic_config_t
 

宏定义

#define DMAC_CHANNEL0_LOCK()   do{}while(0);
 
#define DMAC_CHANNEL0_UNLOCK()   do{}while(0);
 
#define SPIC_TIMEOUT_ARBT   (5000)
 
#define SPIC_TIMEOUT_MAIN_CTRL   (5000)
 
#define SPIC_TIMEOUT_DMA   (5000)
 
#define SPIC_FIFO_ADDR   (0x50000000)
 
#define SPIC_DMA_FIFO_ADDR   (0x60000000)
 
#define SPIC_CS_HIGH_CYCLE   (1)
 
#define SPIC_CS_LOW_CYCLE   (1)
 
#define SPIC_WFIFO_AMFULL_LEVEL   (60)
 
#define SPIC_RFIFO_AMEMPTY_LEVEL   (60)
 
#define SPIC_RFIFO_AMFULL_LEVEL   (4)
 
#define STATE_REG_GM_DONE_INT   (0x1 << 3)
 

类型定义

typedef volatile struct spic_register spic_register_t
 
typedef volatile struct spic_registerspic_register_p
 
typedef struct spic_config_tspic_config_p
 

函数

void spic_change_clk (uint32_t spic_base, flash_clk_div_t clk)
 
static int32_t spic_wait_idle (uint32_t spic_base)
 等待spic空闲 更多...
 
static int32_t spic_ready_change_mode (uint32_t spic_base)
 spic是否能够进行模式切换 更多...
 
static int32_t spic_general_mode_config (uint32_t spic_base, spic_config_p config)
 通用模式配置 更多...
 
static int32_t spic_xip_read_mode_config (uint32_t spic_base, spic_config_p config)
 XIP模式读数据 更多...
 
static int32_t spic_config_init (spic_config_p config, spic_base_config_p spic_base_config)
 配置结构体简化 更多...
 
int32_t spic_cmd (uint32_t spic_base, spic_base_config_p spic_base_config)
 spic向flash发送命令 更多...
 
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读数据 更多...
 
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写数据 更多...
 
int32_t spic_read_by_dma (uint32_t spic_base, spic_base_config_p spic_base_config, uint8_t *read_data, uint32_t read_len)
 spic以DMA的方式向flash读数据 更多...
 
int32_t spic_write_by_dma (uint32_t spic_base, spic_base_config_p spic_base_config, uint8_t *write_data, uint32_t write_len)
 spic以DMA的方式向flash写数据 更多...
 
int32_t spic_xip_config (uint32_t spic_base, spic_base_config_p spic_base_config)
 
int32_t spic_init (uint32_t spic_base, spic_init_p init)
 spic控制器初始化 更多...
 
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时钟相位调制 更多...
 
void spic_prefetch_en (uint32_t spic_base, bool en)
 flash预取开关 更多...
 

变量

static uint8_t spi_dma_buf [512]
 
static uint32_t global_flash_sel = 0
 
static uint32_t global_addr_size = 0
 
DMACChannelx dmachanel = DMACChannel0
 
typedef enum
 

结构体说明

◆ spic_register

struct spic_register
成员变量
uint32_t addr_mask_cfg

属性:RW 偏移:0x0C 位宽:32 功能:地址MASK寄存器 功能:addr_mask[x]:1 = nomask,0 = mask;例:器件大小16MB,器件有效地址24bit,addr_mask = 16'h00FF;器件大小32MB,器件有效地址25bit,addr_mask = 16'h01FF;

uint32_t fifo_level_cfg

属性:RW 偏移:0x30 位宽:32 功能:FIFO水线配置寄存器

uint32_t globe1_cfg

属性:RW 偏移:0x04 位宽:32 功能:全局配置寄存器1

uint32_t globe_cfg

属性:RW 偏移:0x00 位宽:32 功能:全局配置寄存器0

uint32_t gm1_cfg

属性:RW 偏移:0x14 位宽:32 功能:通用模式配置寄存器1

uint32_t gm_addr_cfg

属性:RW 偏移:0x18 位宽:32 功能:通用模式读写地址

gm_cfg
uint32_t gm_data_szie_cfg

属性:RW 偏移:0x1C 位宽:32 功能:通用模式数据大小配置寄存器

uint32_t int_ctrl_cfg

属性:RW 偏移:0x3C 位宽:32 功能:中断控制寄存器

uint32_t rd1_cfg

属性:RW 偏移:0x24 位宽:32 功能:读操作模式配置寄存器1

rd_cfg
uint32_t rw_data0_cfg

属性:RW 偏移:0x34 位宽:32 功能:读写数据寄存器0

uint32_t rw_data1_cfg

属性:RW 偏移:0x38 位宽:32 功能:读写数据寄存器1

uint32_t rx_clk_cfg

属性:RW 偏移:0x08 位宽:32 功能:接收时钟配置寄存器

uint32_t state_reg

属性:RO 偏移:0x40 位宽:32 功能:状态寄存器

union

< 属性:RW 偏移:0x10 位宽:32 功能:通用模式配置寄存器0

< 属性:RW 偏移:0x20 位宽:32 功能:读操作模式配置寄存器0

uint32_t val
uint32_t wr1_cfg

属性:RW 偏移:0x2C 位宽:32 功能:写操作模式配置寄存器1(PSRAM用)

uint32_t wr_cfg

属性:RW 偏移:0x28 位宽:32 功能:写操作模式配置寄存器0(PSRAM用)

◆ spic_config_t

struct spic_config_t
成员变量
md_sel_t addr_md_sel
uint32_t cmd_code0
uint32_t cmd_code1
md_sel_t cmd_md_sel
uint32_t cmd_size
md_sel_t data_md_sel
uint32_t dummy
uint32_t dummy_en
uint32_t gm_addr
uint32_t gm_addr_en
uint32_t gm_cmd_en
uint32_t gm_data_size
uint32_t gm_data_store_md
uint32_t gm_dma_en
uint32_t gm_read_en
uint32_t gm_write_en

宏定义说明

◆ DMAC_CHANNEL0_LOCK

#define DMAC_CHANNEL0_LOCK ( )    do{}while(0);

◆ DMAC_CHANNEL0_UNLOCK

#define DMAC_CHANNEL0_UNLOCK ( )    do{}while(0);

◆ SPIC_CS_HIGH_CYCLE

#define SPIC_CS_HIGH_CYCLE   (1)

◆ SPIC_CS_LOW_CYCLE

#define SPIC_CS_LOW_CYCLE   (1)

◆ SPIC_DMA_FIFO_ADDR

#define SPIC_DMA_FIFO_ADDR   (0x60000000)

◆ SPIC_FIFO_ADDR

#define SPIC_FIFO_ADDR   (0x50000000)

◆ SPIC_RFIFO_AMEMPTY_LEVEL

#define SPIC_RFIFO_AMEMPTY_LEVEL   (60)

◆ SPIC_RFIFO_AMFULL_LEVEL

#define SPIC_RFIFO_AMFULL_LEVEL   (4)

◆ SPIC_TIMEOUT_ARBT

#define SPIC_TIMEOUT_ARBT   (5000)

◆ SPIC_TIMEOUT_DMA

#define SPIC_TIMEOUT_DMA   (5000)

◆ SPIC_TIMEOUT_MAIN_CTRL

#define SPIC_TIMEOUT_MAIN_CTRL   (5000)

◆ SPIC_WFIFO_AMFULL_LEVEL

#define SPIC_WFIFO_AMFULL_LEVEL   (60)

◆ STATE_REG_GM_DONE_INT

#define STATE_REG_GM_DONE_INT   (0x1 << 3)

类型定义说明

◆ spic_config_p

typedef struct spic_config_t* spic_config_p

◆ spic_register_p

typedef volatile struct spic_register* spic_register_p

◆ spic_register_t

typedef volatile struct spic_register spic_register_t

函数说明

◆ spic_change_clk()

void spic_change_clk ( uint32_t  spic_base,
flash_clk_div_t  clk 
)

◆ spic_clk_phase_set()

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时钟相位调制

参数
tx_shift偏移X个core_clk,注意X必须小于core_clk与flash_clk的频率倍数(dtr模式下小于倍数的一半)
tx_nege_en配置为1时在shift的基础上再向后平移半个core_clk周期
rx_shift偏移X个core_clk,注意X必须小于core_clk与flash_clk的频率倍数(dtr模式下小于倍数的一半)
rx_nege_en配置为1时在shift的基础上再向后平移半个core_clk周期
返回
int32_t 0:成功;1:失败;

◆ spic_cmd()

int32_t spic_cmd ( uint32_t  spic_base,
spic_base_config_p  spic_base_config 
)

spic向flash发送命令

参数
spic_base_config配置结构体指针
返回
int32_t 0:成功;1:失败;

◆ spic_config_init()

static int32_t spic_config_init ( spic_config_p  config,
spic_base_config_p  spic_base_config 
)
static

配置结构体简化

参数
config完整的配置结构体指针
spic_base_config简化版配置结构体指针
返回
int32_t 0:成功;1:失败;

◆ spic_general_mode_config()

static int32_t spic_general_mode_config ( uint32_t  spic_base,
spic_config_p  config 
)
static

通用模式配置

参数
config配置结构体指针
返回
int32_t 0:成功;1:失败;

◆ spic_init()

int32_t spic_init ( uint32_t  spic_base,
spic_init_p  init 
)

spic控制器初始化

参数
init初始化结构体
返回
int32_t 0:成功;1:失败;

◆ spic_prefetch_en()

void spic_prefetch_en ( uint32_t  spic_base,
bool  en 
)

flash预取开关

参数
enenable:开启;disable:关闭;

◆ spic_read_by_cpu()

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读数据

参数
spic_base_config配置结构体指针
read_data数据指针
read_len数据长度
返回
int32_t 0:成功;1:失败;

◆ spic_read_by_dma()

int32_t spic_read_by_dma ( uint32_t  spic_base,
spic_base_config_p  spic_base_config,
uint8_t *  read_data,
uint32_t  read_len 
)

spic以DMA的方式向flash读数据

参数
spic_base_config配置结构体指针
read_data数据指针
read_len数据长度
返回
int32_t 0:成功;1:失败;

◆ spic_ready_change_mode()

static int32_t spic_ready_change_mode ( uint32_t  spic_base)
static

spic是否能够进行模式切换

返回
int32_t 0:成功;1:失败;

◆ spic_wait_idle()

static int32_t spic_wait_idle ( uint32_t  spic_base)
static

等待spic空闲

返回
int32_t 0:成功;1:失败;

◆ spic_write_by_cpu()

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写数据

参数
spic_base_config配置结构体指针
write_data数据指针
write_len数据长度
返回
int32_t 0:成功;1:失败;

◆ spic_write_by_dma()

int32_t spic_write_by_dma ( uint32_t  spic_base,
spic_base_config_p  spic_base_config,
uint8_t *  write_data,
uint32_t  write_len 
)

spic以DMA的方式向flash写数据

参数
spic_base_config配置结构体指针
write_data数据指针
write_len数据长度
返回
int32_t 0:成功;1:失败;

◆ spic_xip_config()

int32_t spic_xip_config ( uint32_t  spic_base,
spic_base_config_p  spic_base_config 
)

◆ spic_xip_read_mode_config()

static int32_t spic_xip_read_mode_config ( uint32_t  spic_base,
spic_config_p  config 
)
static

XIP模式读数据

参数
config配置结构体指针
返回
int32_t 0:成功;1:失败;

变量说明

◆ dmachanel

◆ enum

typedef enum
初始值:
{
RAM_CLK_MD_0 = 0,
RAM_CLK_MD_2 = 1,
RAM_CLK_MD_4 = 2,
}ram_clk_md_t

< 功能:flash fifo时钟与sram时钟频率关系 功能:同频 功能:2分频 功能:4分频

◆ global_addr_size

uint32_t global_addr_size = 0
static

◆ global_flash_sel

uint32_t global_flash_sel = 0
static

◆ spi_dma_buf

uint8_t spi_dma_buf[512]
static