PE0211型号存储器接口——SFC

PE0211型号存储器接口——SFC 易百纳用户53690 2023-04-14 17:16:31 2675

存储器接口1 SFC(SPI Flash control)
一 SFC的基本概述
SFC也就是我们说的SPI Flash 控制器,其业务侧是提供一个AHB slave接口,主要完成AHB通道对SPI Flash的访问控制功能;提供一个AHB Master接口,用于DMA方式读写Flash
注意:AHB为先进高性能总线,可自行查阅有关资料以及熟悉AMBA2.0协议(AHB APB ASP)

二 AHB Slave/Master接口
AHB Slave接口特点:支持AMBA2.0协议,仅支持小端(大端和小端的区别)

AHB Master接口特点:支持AMBA2.0协议,仅支持小端只有Single INCR4 INCR8 INCR16传输类型,支持总线Lock。
补充:
single类型为一次传输一个单独的beat,不是burst类型;其他均表示传输连续的beat,为burst类型。
每一次single传输的地址与上一次的传输的地址没有关系(即前后两次传输是独立的);
burst传输的非首次传输的地址均是在上一次地址的基础上加上地址增量后的地址;

三 SFC工作方式
读写Flash
1 通过寄存器配置发送Read等命令来读写Flash,例如对寄存器CMD_CONFIG写入0x0000_7F8B,表示读64byte
2 通过AHB Slave接口类似读写普通Memory的方式读写Flash,SFC模块会自动将AHB总线读写操作时序映射为SPI Flash读写命令
3 通过DMA方式在Flash和外部Memory之间Copy数据
补充:配置寄存器中寄存器的具体bit信息将在后面讲解

其他操作:对于Flash的其他操作只能通过配置访问相关寄存器实现,在后续会讲解有关寄存器

初始化流程 (用寄存器操作寄存器可不用初始化)
配置总线操作寄存器(总线读写Flash)
1根据实际Flash大小配置BUS_FLASH_SIZE寄存器
2依据Flash映射到系统地址空间配置BUS_BASE_ADDR_CS0 BUS_BASE_ADDR_CSI BUS_ALIAS_CS.
3因为默认是标准SPI读写时序,那么有些期间想要进入非标准SPI,就要通过寄存器配置Flash,该寄存器为CMD_INS
4通过BUS_CONFIG1/BUS_CONFIG2配置总线读写操作指令和参数
5如果开启总线写操作,配置BUS_CONFIG[wr_enable]为1,使能总线写。注意:默认是关闭总线写功能的!

我将先讲解各类寄存器相关信息和使用方式,在最后讲解具体怎么操作寄存器或者AHB Slave接口去读写Flash
SFC寄存器基址为0x4000_0000

1 GLOBAL_CONFIG 为全局配置寄存器 偏移量为0x0100 复位值为0x0000_0000
[31:5] 保留
[4:3] SPI读出数据延迟周期个数 00:0个时钟周期(默认) 01:1个时钟周期 10:2个时钟周期 11:3个时钟周期
[2] SPI地址模式 0:3byte寻址模式(默认) 1:4btye寻址模式
[1] 硬件写入保护使能(写保护) 0:禁止 1:使能
[0] SPI模式设置 0:支持mode0(极性相位设置都为0) 1:支持mode3(极性相位设置都为1) 时钟上升沿采样 下降沿输出数据

2 TIMING 为Timing配置寄存器 偏移量为0x0110 复位值为0x0000_660F
[31:15]保留
[14:12]片选保持时间(为(n+1)时钟周期)
[11]保留
[10:8]片选建立时间(为(n+1)时钟周期)
[7:4]保留
[3:0]设置2次Flash操作之间的时间间隔(为(n+2)时钟周期)

3 INT_RAW_STATUS为中断原始状态寄存器 偏移量为0x0120 复位值为0x0000_0000
[31:2] 保留
[1] DMA操作完成中断原始状态(未经过屏蔽) 0:未完成 1:已完成
[0] 指令操作完成中断原始状态(未经过屏蔽) 0:未完成 1:已完成

4 INT_STATUS 为经过屏蔽处理的中断状态寄存器 偏移量为0x0124 复位值为0x0000_0000
[31:2] 保留
[1] DMA操作完成中断原始状态(经过屏蔽) 0:未完成 1:已完成
[0] 指令操作完成中断原始状态(经过屏蔽) 0:未完成 1:已完成

5 INT_MASK为中断屏蔽寄存器 偏移量为0x0128 复位值为0x0000_0000
[31:2] 保留
[1] DMA操作完成中断屏蔽位 0:屏蔽 1:不屏蔽
[0] 指令操作结束中断屏蔽位 0:屏蔽 1:不屏蔽

6 INT_CLEAR 为中断清除寄存器 偏移量为 0x012c 复位值为0x0000_0000
[31:2] 保留
[1] DMA操作完成中断清除位,向该位写1将清除INT_STATUS和INT_RAW_STATUS中有关DMA的bit位 写入0将不清除
[0] 指令操作结束中断清除位,向该位写1将清除INT_STATUS和INT_RAW_STATUS中有关指令的bit位 写入0将不清除

7 VERSION 为版本寄存器 偏移量为0x1F8 复位值为0x0000_0350
[31:0] SFC版本V350

8 VERSION_SEL 为版本选择寄存器 偏移量为0x01FC 复位值为0x0000_0001
[31:1] 保留
[0] 新旧版本寄存器组 0:旧版 1:新版

9 BUS_CONFIG1 为总线操作方式配置寄存器1 偏移量为0x0200 复位值为0x8080_0300
[31] 总线读使能 0:禁止 1:使能
[30] 总线写使能 0:禁止 1:使能
[29:22] 写指令
[21:19] 总线写操作 000:没有btye 001:有一个btye .... 111:7btye
[18:16] 总线写操作指定连接的SPI Flash接口类型 000:标准SPI接口类型 001:Dual-Input/Dual-Output SPI; 010:Dual-I/O SPI; 011:Full DIO SPI; 100:保留; 101:Quad-Input/Dual-Output SPI;110:Quad-I/O SPI; 111:Full QIO SPI
[15:8] 读指令
[7:6] 总线访问Flash方式预取周期 00:不预取(默认) 01:预取1个时钟周期 10:预取2个时钟周期 11:预取3个时钟周期
[5:3] 总线读操作 000:没有btye 001:有一个btye .... 111:7btye
[2:0] 总线写操作指定连接的SPI Flash接口类型 000:标准SPI接口类型 001:Dual-Input/Dual-Output SPI 010:Dual-I/O SPI 011:Full DIO SPI
100:保留; 101:Quad-Input/Dual-Output SPI 110:Quad-I/O SPI 111:Full QIO SPI

10 BUS_CONFIG2 为总线操作方式配置寄存器2 偏移量为0x0204 复位值为0x0000_0000
[31:3] 保留
[2:0] WIP(wrute in progress)位于Flash状态寄存器的位置 000:WIP位于flash状态寄存器的bit[0] ....111:WIP位于Flash状态寄存器的bit[7]

11 BUS_FLASH_SIZE 为总线操作方式映射尺寸寄存器 偏移量为0x0210 复位值为0x0000_0909
[31:12] 保留
[11:8] 指定片选1连接的SPI Flash容量 0x0:没有连接SPI Flash 0x1:512Kbit; 0x2:1Mbit; 0x3:2Mbit; 0x4:4Mbit; 0x5:8Mbit; 0x6:16Mbit;0x7:32Mbit; 0x8:64Mbit; 0x9:128Mbit(默认值); 其他:不支持。
[7:4] 保留
[3:0] 指定片选0连接的SPI Flash容量 0x0:没有连接SPI Flash 0x1:512Kbit; 0x2:1Mbit; 0x3:2Mbit; 0x4:4Mbit; 0x5:8Mbit; 0x6:16Mbit;0x7:32Mbit; 0x8:64Mbit; 0x9:128Mbit(默认值); 其他:不支持。

12 BUS_BASE_ADDR_CS0 为总线操作方式片选0映射基地址寄存器 偏移量为0x0214 复位值为0x3200_0000
[31:16] CS0 Flash映射到系统空间基地址
[15:0] 保留

13 BUS_BASE_ADDR_CS1 为总线操作方式片选1映射基地址寄存器 偏移量为0x0218 复位值为0x0100_0000
[31:16] CS1 Flash映射到系统空间基地址
[15:0] 保留

14 BUS_ALIAS_ADDR 为总线操作方式Alias映射基地址寄存器 偏移量为0x021c 复位值为0x0000_0000
[31:16] Flash映射到系统空间第2个基地址
[15:0] 保留

15 BUS_ALIAS_CS 为总线操作方式Alias片选指示寄存器 偏移量为0x0220 复位值为0x0000_0001
[31:1] 保留
[0] Alias片选选择指示位 ,又外部管脚控制,复位后保持不变 0:Alias片选为0 1:Alias片选为1

16 BUS_DMA_CTRL DMA操作控制寄存器 偏移量为0x0240 复位值为0x0000_0000
[31:5] 保留
[4] DMA操作指定片选 0:片选0 1:片选1
[3:2] 保留
[1] DMA读写指示 0:写操作 1:读操作
[0] DMA传输使能控制 0:无操作 1:开始DMA操作 注意:当DMA传输完成自动回0

17 BUS_DMA_MEM_SADDR 为DMA操作DDR起始地址寄存器 偏移量为0x0244 复位值为0x0000_0000
[31:0] DMA操作Memory起始地址 配置值应该为0x200_0000~0x0203_ffff之间(芯片型号不同区间不同)

18 BUS_DMA_FLASH_SADDR 为DMA操作flash起始地址寄存器 偏移量为0x0248 复位值为0x0000_0000
[31:0] DMA操作Flsah起始地址

19 BUS_DMA_LEN 为DMA操作搬运数据长度寄存器 偏移量为0x024c 复位值为0x0000_0000
[31:30] 保留
[29:0] DMA操作数据搬运长度(n+1),单位:btye

20 BUS_DMA_AHB_CTRL 为DMA操作AHB时burst操作方式选择控制寄存器 偏移量为0x0250 复位值为0x0000_0007
[31:3] 保留
[2] INC16 burst类型使能 0:禁止 1:使能
[1] INC8 burst类型使能 0:禁止 1:使能
[0] INC4 burst类型使能 0:禁止 1:使能

21 重点!CMD_CONFIG 命令操作方式配置寄存器 偏移量为0x0300 复位值为0x0000_7E00
[31:20] 保留
[19:17] 指定寄存器命令操作方式连接的SPI Flash接口类型 000:标准 SPI; 001:Dual-Input/Dual-Output SPI; 010:Dual-I/O SPI; 011:Full DIO SPI;
100:保留; 101:Quad-Input/Dual-Output SPI 110:Quad-I/O SPI; 111:Full QIO SPI。
[16:15] 保留
[14:9] 读写数据长度 0x00~0x3F:(n+1)byte
[8] 标识此次操作数据读写,需要[7]为1 0:写,有发送数据 1:读,有返回数据
[7] 标识此次操作是否有数据 0:无数据 1:有数据
[6:4] 寄存器命令操作方式 000:没有btye 001:有一个btye .... 111:7btye
[3] 此次操作是否有地址 0:无地址 1:有地址
[2] 保留
[1] 片选选择操作 0:选择片选0进行操作 1:选择片选1进行操作
[0] 标识指令操作开始 0:结束 1:开始

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 1 1 评论 打赏
评论
1个
内容存在敏感词
手气红包
  • 利烨电子 2024-04-15 18:43:41
    回复
    这是哪个品牌的芯片?
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
易百纳用户53690
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区