0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FlexSPI外设如何支持行列混合寻址存储器

恩智浦MCU加油站 来源:恩智浦MCU加油站 作者:恩智浦MCU加油站 2022-10-13 09:11 次阅读

关于FlexSPI外设的lookupTable,之前写过一篇非常详细的文章 《从头开始认识i.MX RT启动头FDCB里的lookupTable》,这篇文章几乎可以帮助解决所有串行QuadSPI NOR Flash(四线) 以及Octal Flash(八线)的读时序配置问题,因为这些Flash都只用单一行地址(Row Addr)来寻址。

但是市面上也有一些特殊的存储器(比如八线HyperBus Flash/RAM,OctalRAM等)采用了行列混合寻址方式,对于这类存储器,我们在FlexSPI里配置读时序,尤其是读时序里的地址序列参数值时需要稍微注意一下,今天就来聊聊这个话题

一、FlexSPI外设关于行列地址
Memory支持

先来看FlexSPI外设是如何支持行列混合寻址存储器的。

在FLSHxxCR1寄存器里有CAS控制位,这里配置的即是存储器列地址(Column Addr)位宽。对于不支持列地址的存储器,CAS需要设置为0;如果存储器支持列地址,那么CAS需要根据存储器实际情况来设置。

83626f1e-4a8f-11ed-a3b6-dac502259ad0.png

如果FLSHxxCR1[CAS]位不为0,那么FlexSPI外设在传输时序里会拆分实际映射Flash Address(即存储器自身偏移地址)为行地址FA[31:CAS]和列地址[CAS-1:0]来分别传输。

83b24d18-4a8f-11ed-a3b6-dac502259ad0.png

在最终lookupTable里我们可以用这样的时序配置来实现存储器的读访问,这里RADDR_DDR子序列即传输行地址,CADDR_DDR子序列即传输列地址(注:如下示例是在FLSHxxCR1[CAS] = 3的设置下)。

83c493ba-4a8f-11ed-a3b6-dac502259ad0.png

看到这里,似乎已经把FlexSPI对于行列地址Memory的支持讲完了。

但是我相信你还是会有疑问,上面序列表里RADDR_DDR和CADDR_DDR具体参数值设置似乎没有讲清楚,为什么行列地址加起来位宽是0x18 + 0x10一共40bit(一般 Memory行列地址总位宽也就32 bit)?并且明明CAS值只是 3,为何CADDR_DDR 里设成0x10也行?

是的,这里需要再详细展开!

首先我们要明白一点,因为FlexSPI连接的是八线Memory,在实际总线上行、列地址传输位一定都是8bits的整数倍,如果RADDR/CADDR_DDR参数值设置得不是8bits的整数倍,不足8bits的部分,FlexSPI会自动在低位插入相应保留位(即下图低保留bits,这些保留位的值是什么不确定,对FlexSPI来说也不在乎),然后在 RADDR/CADDR_DDR设置的参数值范围内,如果对应Memory实际行、列地址位宽小于参数值,超出实际行、列地址的部分会被FlexSPI自动填入0值(即下图高亮填充bits)。

83ed3702-4a8f-11ed-a3b6-dac502259ad0.png

二、常见行列混合地址Memory
读配置实例

大部分 HyperBus Flash/RAM 在行、列地址设计上是一样的,这里罗列了市面上常见的型号如下,我们就以MIMXRT1050-EVKB板卡上那颗S26KS512为例来介绍。

ISSI的IS26KSxxx系列HyperFlash

ISSI的IS66/67WVH系列HyperRAM

Cypress/Infineon的S26KSxxx系列HyperFlash

Cypress/Infineon的S80KSxxx系列HyperRAM

Winbond的W957D8、W959D8系列HyperRAM

我们在S26KS512手册里可以找到如下读时序图,主要关注时序最前面48bits的Command-Address序列,在手册Command / Address Bit Assignments表里有这48bits的详细定义,其中CA[37:16] 是行地址与高位列地址,CA[2:0] 是低位列地址。

8406393c-4a8f-11ed-a3b6-dac502259ad0.png

8442d7ca-4a8f-11ed-a3b6-dac502259ad0.png

再来看 SDK_2_12_0_EVKB-IMXRT1050oardsevkbimxrt1050driver_examplesflexspihyper_flashpolling_transfer 例程里的如下lookupTable,RADDR_DDR参数值是0x18,CADDR_DDR参数值是0x10,根据上一节的分析,RADDR_DDR里的高2bits会被FlexSPI设为0(RADDR[21:0]用于传输CA[37:16])。

因为CAS = 3,所以CADDR_DDR里的高13bits也会被FlexSPI设为0(CADDR[2:0]用于传输CA[2:0]),这是符合S26KS512手册时序定义的。

flexspi_device_config_t deviceconfig = {
    .columnspace          = 3,
    .enableWordAddress    = true,
};

const uint32_t customLUT[CUSTOM_LUT_LENGTH] = {
    /* Read Data */
    [0] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_DDR,       kFLEXSPI_8PAD, 0xA0, kFLEXSPI_Command_RADDR_DDR, kFLEXSPI_8PAD, 0x18),
    [1] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_CADDR_DDR, kFLEXSPI_8PAD, 0x10, kFLEXSPI_Command_READ_DDR,  kFLEXSPI_8PAD, 0x04),
};

三、特殊行列混合地址Memory
读配置实例

最近我们在支持客户的过程中也发现了一些Memory有着不一样的行、列地址设计,比如如下这颗IS66WVO OctalRAM。从手册里找到其Command / Address bit assignment表里48bits的定义。与上一节HyperBus Flash/RAM不一样的是,其高位列地址并不是在8bits对齐处出现的。

1. ISSI出品的IS66/67WVO系列OctalRAM

8470a4e8-4a8f-11ed-a3b6-dac502259ad0.png

84d954de-4a8f-11ed-a3b6-dac502259ad0.png

对于IS66WVO这样的行、列地址设计,我们在lookupTable里该如何填入RADDR/CADDR_DDR参数值呢?首先CAS设为4,CADDR_DDR设为0x08可以解决CA[3:0]传输问题。

现在的重点是RADDR_DDR参数值,总共24bits传输位,低位还需要留2个保留位,所以RADDR_DDR仅能被设为0x16(RADDR[20:2]用于传输RA[12:0] + CA[9:4]),即如下面代码:

flexspi_device_config_t deviceconfig = {
    .columnspace          = 4,
    .enableWordAddress    = false,
};

const uint32_t customLUT[CUSTOM_LUT_LENGTH] = {
    /* Read Data with continuous burst Sequence in DDR command mode */
    [0] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_DDR,       kFLEXSPI_8PAD, 0xA0, kFLEXSPI_Command_DDR,       kFLEXSPI_8PAD, 0x00),
    [1] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_RADDR_DDR, kFLEXSPI_8PAD, 0x16, kFLEXSPI_Command_CADDR_DDR, kFLEXSPI_8PAD, 0x08),
    [2] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_DUMMY_DDR, kFLEXSPI_8PAD, 0x1E, kFLEXSPI_Command_READ_DDR,  kFLEXSPI_8PAD, 0x04),
};
审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5250

    浏览量

    119197
  • 存储器
    +关注

    关注

    38

    文章

    7366

    浏览量

    163091
  • 时序
    +关注

    关注

    5

    文章

    370

    浏览量

    37186
  • CAS
    CAS
    +关注

    关注

    0

    文章

    34

    浏览量

    15160

原文标题:理解i.MX RT中FlexSPI外设lookupTable里配置访问行列混合寻址Memory的参数值

文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于NIOS II的SOPC中存储器外设接口的设计

    强大的硬件支持。SOPC是Ahera公司提出的一种灵活、高效的片上系统(SOC)解决方案,它将处理存储器、I/O口等系统设计所需要的功能模块集成到一个可编程器件上,从而构成一个可编程的片上系统
    发表于 12-07 10:27

    FlexSPIFlexSPI2外设都可以使用BEE吗?

    使用 BEE 吗?(不是同时) 在查看 AN12852 时,我想执行以下操作。-未加密的引导映像存储在外部闪存中,并通过FlexSPI外设执行。- 我的软件(从 FlexSPI
    发表于 04-19 08:30

    内容可寻址存储器MCM69C232在交换机中的应用

      内容可寻址存储器CAM(Coment-Addressable Memo-ry)以内容进行寻址存储器,是一种特殊的存储阵列RAM。它的主
    发表于 09-23 11:12 1259次阅读
    内容可<b class='flag-5'>寻址</b><b class='flag-5'>存储器</b>MCM69C232在交换机中的应用

    pic单片机教程之数据存储器的直接间接寻址方式

    单片机数据存储器由特殊寄存(SFR)和通用寄存(GPR)组成。SFR特殊寄存器用到cpu和外设控制器件操作,GPR通用寄存则负责通用RAM存储寻址
    发表于 07-26 15:04 8491次阅读
    pic单片机教程之数据<b class='flag-5'>存储器</b>的直接间接<b class='flag-5'>寻址</b>方式

    STM32系列微控制存储器外设

    STM32系列微控制存储器外设
    发表于 09-29 14:50 7次下载
    STM32系列微控制<b class='flag-5'>器</b><b class='flag-5'>存储器</b>与<b class='flag-5'>外设</b>

    存储器寻址方式有哪些?

    存储器是现代信息技术中用于保存信息的记忆设备。其概念很广,有很多层次,在数字系统中,只要能保存二进制数据的都可以是存储器寻址是数据恢复技术的基础,是定位数据和扇区的关键。寻址这个概念比
    发表于 11-17 16:14 2.3w次阅读
    <b class='flag-5'>存储器</b><b class='flag-5'>寻址</b>方式有哪些?

    关于非易失性存储器和易失性存储器的区别详解

    非易失性存储器技术是在关闭计算机或者突然性、意外性关闭计算机的时候数据不会丢失的技术。非易失性存储器技术得到了快速发展,非易失性存储器主要分为块寻址和字节
    发表于 01-23 11:33 1.7w次阅读

    非易失性存储器和易失性存储器有什么全部详细资料对比

    非易失性存储器技术是在关闭计算机或者突然性、意外性关闭计算机的时候数据不会丢失的技术。非易失性存储器技术得到了快速发展,非易失性存储器主要分为块寻址和字节
    发表于 04-07 14:33 8646次阅读

    寄存存储器的区别

    存储器范围最大,它几乎涵盖了所有关于存储的范畴。寄存,内存,都是存储器里面的一种。凡是有存储能力的硬件,都可以称之为
    发表于 07-22 09:11 1.5w次阅读

    51单片机存储器的结构和原理解析

    51单片机存储器采用的是哈佛结构,即是程序存储器空间和数据存储器空间分开,程序存储器和数据存储器各自有自己的
    发表于 10-21 16:33 2.2w次阅读
    51单片机<b class='flag-5'>存储器</b>的结构和原理解析

    UC-009:寻址16MB外部数据存储器

    UC-009:寻址16MB外部数据存储器
    发表于 04-25 10:55 1次下载
    UC-009:<b class='flag-5'>寻址</b>16MB外部数据<b class='flag-5'>存储器</b>

    FlexSPI NOR连接方式大全(RT1015/1020/1050)

    由于i.MXRT内部没有非易失性存储器,因此在系统设计时为i.MXRT搭配一块存放应用程序代码的存储器是头等大事。i.MXRT支持启动的外部存储器类型众多,其中通过
    发表于 02-09 11:26 1次下载
    <b class='flag-5'>FlexSPI</b> NOR连接方式大全(RT1015/1020/1050)

    FlexSPI外设关于行列地址Memory支持

    但是市面上也有一些特殊的存储器(比如八线 HyperBus Flash/RAM, OctalRAM 等)采用了行列混合寻址方式,对于这类存储器
    的头像 发表于 10-14 09:05 943次阅读

    西门子博途: 存储器间接寻址的应用

    对于存储器间接寻址,可以在变量中存储地址。变量可以是 WORD 或 DWORD 数据类型。变量可以位于存储器区域“数据”(DB 或 DI)、“位存储
    发表于 07-15 11:20 4842次阅读

    理解i.MX RT中FlexSPI外设lookupTable里配置访问行列混合寻址Memory的参数值

    理解i.MX RT中FlexSPI外设lookupTable里配置访问行列混合寻址Memory的参数值
    的头像 发表于 10-30 17:23 410次阅读
    理解i.MX RT中<b class='flag-5'>FlexSPI</b><b class='flag-5'>外设</b>lookupTable里配置访问<b class='flag-5'>行列</b><b class='flag-5'>混合</b><b class='flag-5'>寻址</b>Memory的参数值