I.MX RT1170之FlexSPI(1):FlexSPI功能框图和特性

最近我也在做RT1170的相关项目,由于项目需要,研究了Flash下载算法、NOR Flash空间的擦除/烧写(OTFAD XIP更新固件时要更新OTFAD Key Blob字段)、HyperRAM初始化等功能,这些都是开发过程中可能会遇到的一些问题,而这些都与FlexSPI接口息息相关。初始化完FlexSPI后就可以像访问CPU中ITCM、DTCM等内置内存一样来访问外部存储器中的内容。对于FlexSPI1来说,它可以将外部存储器地址映射到0x30000000处;而FlexSPI2则可以映射到0x60000000处。

1 FlexSPI框图

FlexSPI(Flexible Serial Peripheral Interface)支持两个SPI通道和多达4个外部设备。每个通道支持Single/Dual/Quad/Octal模式的双向数据传输。下面来看一下FlexSPI的功能框图:
在这里插入图片描述
(1)FA port和FB port
FlexSPI可以通过它的两个通道FA和FB与外部的串行Flash在硬件上进行连接,FA和FB各有两个通道。比如说HyperRAM大多数就有八条数据线,它就占满了一个Port A/B。而对于QSPI NOR Flash来说,只需要四根数据线,所以在Port A/B上还能再接一个设备。
(2)SEQ_CTL
所有的外部存储器都有它的时序,SEQ_CTL就可以根据你的配置生成相应的控制时序来访问外部的存储器。其中有一个很重要的数据结构,就是LUT(Look Up Table),它用来指定Flash各个操作的时序。

(3)AHB BUS 64bitIPS BUS 32bit
32bit IPS BUS(即手动操作FlexSPI寄存器发送Flash读写命令),64bit AHB BUS(由FlexSPI翻译AHB访问地址并自动发送相应Flash读写命令)

  • AHB BUS 64bit:用户可以像访问内部SRAM一样访问接在FlexSPI上的外部存储器,此时地址通过AHB总线传到SEQ_CTL
  • IPS BUS 32bit:用户可以根据自己初始化的外部存储器各个操作(如擦除、读/写内存、读/写寄存器)的时序,主动访问FlexSPI的相关寄存器来完成外部存储器的一些操作

(4)ARB_CTL
由于AHB和IPS总线都可以请求外部存储器的数据,所以ARB_CTL就是用来控制两个总线在同一时间访问外部存储器时,哪个总线能优先执行。

(5)缓冲区
为了加快读取的速度,两个总线都有读写缓冲区。AHB Bus有发送缓冲区AHB_TX_BUF和接收缓冲区AHB_RX_BUF,它们将会缓存AHB突发传输的写数据或读数据;而IPS Bus有发送缓冲区IP_TX_FIFO和接收缓冲区IP_RX_FIFO,大小均为256字节,且支持DMA传输。

2 FlexSPI特性

(1)SDR和DDR模式
在SDR(Single Data transfer Rate)模式下,Flash在SCLK上升沿接收数据,下降沿发送数据。在DDR (Dual Data transfer Rate)模式下,Flash在SCLK上升沿和下降沿都接收数据和发送数据。SDR和DDR模式由LUT表格中的操作码决定。

(2)Individual和Parallel模式
Individual mode下,Flash读/写数据都在Port A或Port B完成。在parallel mode下,Flash的读写操作在Port A和Port B并行完成,FlexSPI将自动合并/拆分Flash读写的数据。也就是说,数据可以存储在两个不同的Flash中。当然在硬件上,也要有相应的连接。
在这里插入图片描述

  • 只有读写指令可以自动合并和拆分,对于其它的指令(比如命令/地址/模式/数据大小),相同的数据会同时传给两个Flash设备,比如发命令则两个Flash设备都会收到。

(3)Single, Dual, Quad, and Octal模式

  • Single模式:Flash在DATA0引脚上发送/接收数据
  • Dual模式:Flash在DATA0~DATA1引脚上发送/接收数据
  • Quad模式:Flash在DATA0~DATA3引脚上发送/接收数据
  • Octal模式:Flash在DATA0~DATA7引脚上发送/接收数据

这些模式也是在LUT表格中决定的。

(4)操作模式
Module Disable mode:用于低功耗模式,在该模式下AHB时钟和串行时钟域将会被关闭,但是IPS总线时钟不会被关闭。
Doze mode:用于低功耗模式。在该模式下,FlexSPI会等待所有的处理都完成后进入Doze mode,此时AHB和串行时钟域都会被关闭,但是IPS总线时钟不会被关闭。
Stop mode:用于低功耗模式。在该模式下,FlexSPI会等待所有的处理都完成,再返回一个ACK给系统,然后IP回关闭AHB和串行时钟域。但是可以在系统层面打开AHB/IPS/串行时钟。
Normal mode:所有的时钟都不会被关闭。

3 总结

本节大概介绍了一下FlexSPI的功能框图和一些特性,实际上这都是对参考手册的一个大概的总结,更多细节还是要看参考手册。而对于FlexSPI来说,最重要的应该就是LUT表格了,所以下一节就来详细地介绍一下LUT表格。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tilblackout

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值