SPI0¶
功能介绍¶
SPI0是CI1102通过4线SPI接口方式(QSPI)访问片外Nor Flash的专用接口,其主要特征如下:
- 支持winbond、gigadevice等多个公司的SPI Nor Flash
- 支持APB配置接口
- 支持AHB 数据传输接口,只支持以word方式传输
- 支持默认从SPI Nor Flash启动,默认传输模式为单线传输
寄存器映射¶
SPI0的控制器命名为SPIC,其寄存器映射的基地址为0x4004C000,详细的寄存器映射见表19。
表19 SPIC寄存器映射
偏移量 | 名称 | 位宽 | 类型 | 复位值 | 描述 |
---|---|---|---|---|---|
0x00 | SPIC_CSR_00 | 32 | R/W | 0x00124F80 | SPIC控制寄存器0 |
0x04 | SPIC_CSR_01 | 32 | R/W | 0x00000000 | SPIC控制寄存器1 |
0x08 | SPIC_CSR_02 | 32 | R/W | 0x00000000 | SPIC控制寄存器2 |
0x0C | SPIC_CSR_03 | 32 | R/W | 0x00000000 | SPIC控制寄存器3 |
0x10 | SPIC_CSR_04 | 32 | R/W | 0x00000000 | SPIC控制寄存器4 |
0x14 | SPIC_CSR_05 | 32 | R/W | 0x00000000 | SPIC控制寄存器5 |
0x18 | SPIC_CSR_06 | 32 | R/W | 0x00000000 | SPIC控制寄存器6 |
0x1C | SPIC_CSR_07 | 32 | R/W | 0x00000000 | SPIC控制寄存器7 |
0x20 | SPIC_CSR_08 | 32 | R/W | 0x00000000 | SPIC控制寄存器8 |
0x24 | SPIC_CSR_09 | 32 | R/W | 0x00000000 | SPIC控制寄存器9 |
0x28 | SPIC_CSR_10 | 32 | R/W | 0x0003A980 | SPIC控制寄存器10 |
0x2C | SPIC_CSR_11 | 32 | R/W | 0x01E84800 | SPIC控制寄存器11 |
0x30 | SPIC_CSR_12 | 32 | R/W | 0x03D09000 | SPIC控制寄存器12 |
0x34 | SPIC_CSR_13 | 32 | R/W | 0x04C4B400 | SPIC控制寄存器13 |
0x38 | SPIC_CSR_14 | 32 | R/W | 0x47868C00 | SPIC控制寄存器14 |
0x3C | SPIC_CSR_15 | 32 | R/W | 0x00000024 | SPIC控制寄存器15 |
0x40 | SPIC_CSR_16 | 32 | R/W | 0x00F000F0 | SPIC控制寄存器16 |
SPIC控制寄存器0(SPIC_CSR_00)¶
偏移量:0x00
复位值:0x00124F80
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:24 | Reserved | 0x00 | R/W | 保留 |
23:0 | TW | 0x124F80 | R/W | 烧写时间寄存器 |
SPIC控制寄存器1(SPIC_CSR_01)¶
偏移量:0x04
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:2 | Reserved | 0x00000000 | R/W | 保留 |
1:0 | BUS_MODE | 0 | R/W | SPI操作位宽控制: 0:标准 spi(如果是rd/wr安全寄存器,则设置为标准spi) 1:双线 spi 2:四线 spi 3:保留 |
SPIC控制寄存器2(SPIC_CSR_02)¶
偏移量:0x08
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | ERASE_COUNTER_TAP | 0x00000000 | R/W | 擦除时间控制位: 等待擦除完成的计数器计数步进,默认值为1,即计数器每个cycle做+1,若配为4,则每4个cycle+1。该寄存器在大容量flash擦除时间过长,计数器位数不够时使用。 |
SPIC控制寄存器3(SPIC_CSR_03)¶
偏移量:0x0C
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:1 | Reserved | 0x00000000 | R/W | 保留 |
0 | DMA_EN_HCLK_STATUS | 0 | R | dma_en在HCLK时钟域下的状态,当cpu读写数据时,必须等到dma_en_hclk_status=0时,才能开始数据传输。 |
SPIC控制寄存器4(SPIC_CSR_04)¶
偏移量:0x10
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:3 | Reserved | 0x00000000 | R/W | 保留 |
2 | SPI_CLK_MODE | 0 | R/W | 时钟空闲状态控制位: 0:模式0,总线上无传输时时钟低 1:模式3,总线上无传输时时钟高 |
1 | FAST_READ_IO | 0 | R/W | IO控制位: 0:仅对读取输出使用io 1:对地址和数据使用io |
0 | FAST_READ_EN | 0 | R/W | Fast read使能位: 0:fast read不使能 1:fast read使能(如果读取安全寄存器,则该位必须为1) |
注:当使用read security register时,该寄存器要置1,双线和四线操作时,该位也必须置1。
SPIC控制寄存器5(SPIC_CSR_05)¶
偏移量:0x14
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | WR_RD_NUM | 0x00000000 | R/W | 读写操作的数据量,单位为字节。 注意:写操作范围为1~256。 |
SPIC控制寄存器6(SPIC_CSR_06)¶
偏移量:0x18
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:14 | Reserved | 0x0000 | R/W | 保留 |
13:6 | CMD_CODE | 0x00 | R/W | spi 命令编码 |
5 | DMA_EN | 0 | R/W | 数据搬运控制: 1:表示使用dma搬运数据 0:表示使用cpu搬运数据 |
4:1 | CMD_TYPE | 0x0 | R/W | 命令类型: 0:编程 1:在flash中写入状态寄存器 2:在flash中读取状态寄存器 3:扇区擦除(4KB) 4:块擦除(32KB) 5:块擦除(64KB) 6:芯片擦除 7:断电 8:释放掉电源 9:保留 10:读取安全寄存器 11:擦除安全寄存器r 12:写入安全寄存器 13:读取 14:读取制造商id 15:读取每个id |
0 | CMD_EN | 0 | R/W | 0:命令有效 |
SPIC控制寄存器7(SPIC_CSR_07)¶
偏移量:0x1C
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:3 | Reserved | 0x000000 | R/W | 保留 |
2 | INT_EN | 0 | R/W | 中断使能信号: 0:不使用中断 1:使用中断 |
1 | INT_CLR | 0 | W | 中断清除信号: 0:无效 1:清除有效 |
0 | INT | 0 | R | 中断信号: 0:无效 1:中断 |
SPIC控制寄存器8(SPIC_CSR_08)¶
偏移量:0x20
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:3 | Reserved | 0x000000 | R/W | 保留 |
2:0 | DMA_TAP | 0x0 | R/W | 0:每32bit数据准备好向dma申请一次操作 1:每32bitX4数据准备好向dma申请一次操作 2:每32bitX8数据准备好向dma申请一次操作 3:每32bitX16数据准备好向dma申请一次操作 4:每32bitX32数据准备好向dma申请一次操作 5:每32bitX64数据准备好向dma申请一次操作 |
SPIC控制寄存器9(SPIC_CSR_09)¶
偏移量:0x24
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | WR_RD_ADDR | 0x00000000 | R/W | FLASH读写地址 |
SPIC控制寄存器10(SPIC_CSR_10)¶
偏移量:0x28
复位值:0x0003A980
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:24 | Reserved | 0x00 | R/W | 保留 |
23:0 | TPP | 0x03A980 | R/W | 页面编程时间(周期) |
SPIC控制寄存器11(SPIC_CSR_11)¶
偏移量:0x2C
复位值:0x01E84800
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | TSE | 0x1E84800 | R/W | 扇区擦除(4K) 时间(周期) |
SPIC控制寄存器12(SPIC_CSR_12)¶
偏移量:0x30
复位值:0x03D09000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | TBE1 | 0x03D09000 | R/W | 块擦除(32K)时间(周期) |
SPIC控制寄存器13(SPIC_CSR_13)¶
偏移量:0x34
复位值:0x04C4B400
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | TBE2 | 0x04C4B400 | R/W | 块擦除(64K)时间(周期) |
SPIC控制寄存器14(SPIC_CSR_14)¶
偏移量:0x38
复位值:0x47868C00
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | TCE | 0x47868C00 | R/W | 芯片擦除时间(周期) |
SPIC控制寄存器15(SPIC_CSR_15)¶
偏移量:0x3C
复位值:0x00000024
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:10 | Reserved | 0x00000000 | R/W | 保留 |
9:5 | TCSH1 | 0x1 | R/W | cs取消选择读取或断电时间 |
4:0 | TCSH2 | 0x4 | R/W | cs取消选择编程或擦除时间 |
SPIC控制寄存器16(SPIC_CSR_16)¶
偏移量:0x40
复位值:0x00F000F0
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:16 | TRES | 0x00F0 | R/W | 释放掉电时间 |
15:0 | TDP | 0x00F0 | R/W | cs 取消选择断电时间 |