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

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

3天内不再提示

瑞萨RA8D1 MCU如何进行OSPI Flash驱动的适配工作

瑞萨嵌入式小百科 来源:瑞萨嵌入式小百科 2025-09-23 10:43 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

他来了

他真的来了……

继《OSPI Flash适配秘籍之内功心法篇》之后,本文将继续深入探讨如何将Winbond(华邦)W35T51NW OSPI Flash适配到你的系统[JX1] [DX2]中。笔者感谢老铁们对瑞萨嵌入式小百科的持续关注。如果有读者是第一次接触OSPI接口,笔者建议先跳转到内功心法篇,先修炼《内功心法篇》,否则直接上阵,怕是要走火入魔。

之前也说了广大不同厂家的OSPI Flash,虽然说大部分功能相似,大部分功能也可以复用,但是不同厂家的OSPI Flash还是存在或多或少的差别。因此如果客户出于成本的考虑,需要更换OSPI Flash的时候,是需要做驱动层的适配工作。

那如何做OSPI Flash的驱动的适配工作?请让笔者倾囊相授。

首先,不同门派(厂商)的OSPI Flash虽说套路相似,但细节上总有些“暗器”藏着。适配之前,务必翻阅芯片手册,了解其配置流程。尤其是从单线模式切换到八线模式时,稍有不慎,便会“变线”翻车。

一般OSPI Flash除了支持8线模式,默认都支持单线模式。所以一般Flash上电复位后,都默认支持单线的协议。单线模式下,大部分厂商的OSPI Flash,命令码以及命令-地址-数据之间的时延(如下时序图中的Latency field)差别较小,但是在八线模式下这些差别就不能忽视,下面笔者会具体说明。

2306cf06-92b3-11f0-8c8f-92fbcf53809c.png

图1.OSPI Read transaction时序图

OSPI Flash适配的关键在于从单线模式转换成八线模式的时候,如何正确通过单线指令完成转换。图2说明了Winbond W35T51NW OSPI Flash的具体的配置流程。不同厂商的Flash的初始化和配置流程是不一样的,尤其是涉及到输入输出模式的切换时,这也是移形换位大法的关键所在。

大多数厂家的Flash默认设置就是单线模式。所以如果只是适配单线模式的情况下,过程会简单很多。但是多线模式的适配注意事项会更多,也相对麻烦一些。

图2展示了W35T51NW设备的存储器读取操作流程,包括XIP(Execute-in-Place)模式和标准命令模式(Standard Command Mode)。以下是对该图的解析:

1.设备启动流程

设备上电后,会进行设备初始化并刷新易失性/内部配置寄存器(Volatile/Internal Configuration Register Refresh)。

配置寄存器的值,来自非易失性配置寄存器(Non-Volatile Configuration Register),决定设备是进入XIP模式还是标准命令模式

236c8bfc-92b3-11f0-8c8f-92fbcf53809c.png

图2.W35T51NW Serial Flash初始化配置流程图

2.XIP模式

(Execute-in-Place)

如果设备进入XIP模式,它会直接执行地址输入-数据输出序列,用于直接从闪存执行代码,无需额外的读取命令。

退出XIP模式需要将XMb设为1。(XMb是Non-Volatile Configuration Register配置寄存器中的一位,由于XIP模式不是本篇文章的重点,这里不做过多的介绍)

3.标准命令模式

(Standard Command Mode)

在标准命令模式下,需要按照命令-地址-数据输入/输出序列进行数据访问。

该模式可以支持不同的数据传输模式,包括:

SDR 3字节地址模式

SDR 4字节地址模式

Octal DDR 4字节地址模式

4.工作模式切换

在标准命令模式下,默认支持3字节地址模式,但可以通过B7h命令启用4字节地址模式。通过E9h命令可禁用4字节地址模式,切换回3字节地址模式

通过81h命令码写易失性配置寄存器(Volatile Config Reg)可以切换工作模式(从单线转到八线)

23cc44f2-92b3-11f0-8c8f-92fbcf53809c.png

点击查看大图

通过1s-1s-1s的协议向VCR(volatile Config Reg)寄存器用81h命令码写入E7h/C7h,可以把Flash的协议模式从1s-1s-1s切换成8d-8d-8d。不同的地址模式不影响协议模式的切换。Flash的工作模工切换成功后,紧接着要切换XSPI Master(ra8d1)这边的协议模式。

同样的如果要把Flash的协议模式从8d-8d-8d切回1s-1s-1s,此时需要用8d-8d-8d的协议通过81h命令码向VCR写入FFh/DFh。同样Flash的工作模工切换成功后,紧接着要切换XSPI Master(ra8d1)这边的协议模式。两边的协议要一致才能正常工作。

这里对VCR寄存器做一些说明,VCR寄存器共有00h-07h共8个地址。其中对00h地址通过81h命令码写入配置值就可以设置Flash的输入输出的协议模式。其它地址范围的配置功能请参考手册中的内容,默认情况下一般不会对其它地址的内容进行配置。

这里笔者还想说明一下,手册中除了VCR还有NVCR,这两者有什么区别呢?

NVCR的全称是Non-volatile Configuration Register为非易失性的寄存器,而VCR是易失性的寄存器,即下电之后VCR的内容将会重置为0。所以Flash在启动的时候会默认读取NVCR里面的配置作为默认启动配置,而VCR可以在启动之后再去配置,但是VCR的配置只存在当前的上电周期中生效。如果对Flash下电再上电VCR中的内容将失效。

总结一句话,如果开发者想对Flash的启动配置项永久生效就写NVCR,如果是临时调整配置就可以写VCR。

2423330c-92b3-11f0-8c8f-92fbcf53809c.png

图3.Flash输入输出协议模式切换命令调用说明

下图让读者感性的认识一下,同样是通过85h命令码读取VCR的内容,示波器的波形会是什么样的?

左边是1s-1s-1s可以很清晰的看出85h这个命令码。右边由于示波器通道数有限,加上示波器信号质量也比较差,读者不能清晰的感知到85h这个命令码。但是通过黄色时钟信号通道,读者可以感受到八线的模式下,完成同样的读取VCR的操作所需要的时钟数量会少很多。

249a7156-92b3-11f0-8c8f-92fbcf53809c.png

图4.读取VCR配置值的单线和八线输入输出波形对比图

5.复位

硬件复位(Hardware Reset)会使设备重新进入上电初始化状态

软件复位(Software Reset)通过66h+99h指令实现,会让设备回到上电后的初始状态。

其次开发者要注意8线输入输出模式,常用的读写擦写使能等指令,不同厂商的命令码可能稍有不同,并且“Latency field”也可能不同。

如下图5所示,在4字节地址模式下的快读取的指令,指令码是0Ch,其它的厂商就不一定也是0Ch。所以开发者要查看Flash手册里的指令列表,换Flash芯片需要适配新的指令。

此外对于Dummy cycle数值也可能不一样的,也就是前面提到的“Latency Field“。图5中的8(16)表示如果是SDR模式的话,Dummy cycle是8,如果是DDR模式的话,Dummy cycle值是16。

24f93a42-92b3-11f0-8c8f-92fbcf53809c.png

图5.Winbond W35T51NW OSPI Flash命令表说明

对于Dummy Cycle,在具体的波形图里以如下方式呈现:

25566f64-92b3-11f0-8c8f-92fbcf53809c.png

图6.Fast Read with 4-Byte Address指令SDR时序图

笔者想强调一点的是在ODDR模式下,指令的长度变成两个字节。如下图所示,数据可以正常输出。

对于这个ODDR工作模式的指令长度要变成2字节的说明在Winbond的Flash使用手册上并没有明确说明。但是在ra8d1的手册上,37.2.2.7章节中有相关的寄存器配置说明。比如在ODDR模式下读取VCR的值的命令码是8585h,而不是85h,对应的command_length 也需要调整为2。

25bc20d4-92b3-11f0-8c8f-92fbcf53809c.png

图7.RA8D1 OSPI command Type

26249a60-92b3-11f0-8c8f-92fbcf53809c.png

图8.ODDR模式下读取VCR的值的代码示例

最后要注意不同厂家的OSPI Flash所对应的“Device ID”是不一样的。一般驱动代码里都会有读取&校验“Device ID”的操作,所以在驱动代码适配的时候“Device ID”值要从手册中找到对应的读取“Device ID“的指令和ID值。

总结来说做OSPI Flash适配要关注以下方面:

初始化的配置流程的差异;

模式切换时候的差异;

关注指令码和Dummy Cycle的差异;

以及Flash Device ID的差异。

好的,笔者感谢读者们的耐心阅读,也请感兴趣的小伙伴持续关注我们的“瑞萨嵌入式小百科“公众号,我们将为开发者提供更多实用的内容作参考。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FlaSh
    +关注

    关注

    10

    文章

    1761

    浏览量

    156052
  • 存储器
    +关注

    关注

    39

    文章

    7768

    浏览量

    172386
  • 瑞萨
    +关注

    关注

    38

    文章

    22535

    浏览量

    91629

原文标题:OSPI Flash适配秘籍之移形换位大法

文章出处:【微信号:瑞萨嵌入式小百科,微信公众号:瑞萨嵌入式小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RA8D1 CEU介绍与使用说明

    RA8D1 MCU集成了高性能CM85内核和大内存,以及丰富的外设集,包括带并行RGB和MIPI-DSI接口的高分辨率TFT-LCD控制器、2D绘图引擎、16位摄像头接口和多个外部内存接口,经过优化可满足各种图形和视觉AI应用的
    的头像 发表于 02-20 12:15 4942次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8D1</b> CEU介绍与使用说明

    基于电子RA8D1 MCU的USB和I2S数字音频应用解决方案

    今天给大家介绍一下上海觉鑫智能科技有限公司基于电子RA8D1 MCU的USB&I2S数字音频应用解决方案。
    的头像 发表于 04-30 14:47 3079次阅读
    基于<b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子<b class='flag-5'>RA8D1</b> <b class='flag-5'>MCU</b>的USB和I2S数字音频应用解决方案

    RA8D1 MCUOSPI Flash适配指南

    OSPI Flash(Octal SPI Flash)是一种基于SPI(串行外设接口)扩展的高速串行Flash存储器,采用8-bit数据总线
    的头像 发表于 07-17 11:24 3434次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8D1</b> <b class='flag-5'>MCU</b>的<b class='flag-5'>OSPI</b> <b class='flag-5'>Flash</b><b class='flag-5'>适配</b>指南

    使用RA8D1开发板实现人脸识别的应用演示

    随着科技的进步,人脸识别技术已逐渐成为一种主流的安全验证手段。它不依赖传统的密码,而是通过面部特征识别来验证身份,从而提升了安全性并带来了更大的便利性。本文将介绍如何通过RA8D1微控制器与Aizip人脸识别技术结合,实现高
    的头像 发表于 10-14 10:58 6090次阅读
    使用<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8D1</b>开发板实现人脸识别的应用演示

    RA8D1单片机IO中断配置实现方法

    本文为结合e2 studio工具,以及CPKCOR_RA8D1B评估板,给大家讲述RA8D1
    的头像 发表于 04-09 15:05 2200次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8D1</b>单片机IO中断配置实现方法

    【Vision Board创客营连载体验】RA8D1 Vision Board初体验

    1 RA8D1 Vision Board简介 Vision-Board 开发板是 RT-Thread 推出基于 Cortex-M85 架构 RA
    发表于 04-23 21:53

    RA8D1 CPK开发板试用】开箱与点灯

    一、前言 RA8D1 CPK开发板是业界首款基于Arm Cortex-M85内核的32位图形微控制器,板载资源丰富,性能优越。运行在480MHz的主频下可实现超过3000 CoreMark分数
    发表于 10-08 01:04

    RA8D1 CPK开发板】RA8D1移植ThreadX操作系统

    首先感谢[RA生态工作室]( RA MCU 生态社区)提供的
    发表于 10-20 20:22

    【CPKCOR-RA8D1】+ 1.RA8D1开箱点灯

    很荣幸收到了电子发放的CPKCOR-RA8D1B开发板,之前的直播间讲过这款板子,但是没中,还好
    发表于 09-24 18:55

    【CPKCOR-RA8D1RA8D1开箱测试报告

    前言 首先,衷心感谢 RA 生态工作室 提供的 RA8D1B开发套件,让我有机会接触到的高端M85内核芯片。同时也因为是第一次使用
    发表于 10-02 17:25

    新品发布 | 推出面向图形显示应用和语音/视觉多模态AI应用的全新RA8 MCU产品群

    新闻快讯 全球半导体解决方案供应商电子(TSE:6723)宣布推出RA8D1微控制器(MCU)产品群。RA8D1产品群作为
    的头像 发表于 12-15 16:00 1711次阅读
    新品发布 | <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>推出面向图形显示应用和语音/视觉多模态AI应用的全新<b class='flag-5'>RA8</b> <b class='flag-5'>MCU</b>产品群

    电子宣布推出RA8D1微控制器(MCU)产品群

    2023年12月12日,电子宣布推出RA8D1微控制器(MCU)产品群。RA8D1产品群作为
    的头像 发表于 12-15 15:58 2380次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子宣布推出<b class='flag-5'>RA8D1</b>微控制器(<b class='flag-5'>MCU</b>)产品群

    基于电子RA系列的野火耀阳RA8D1开发板产品简介

    野火耀阳RA8D1开发板是一款功能强大的开发板,适用于各种嵌入式应用开发。它采用电子的RA系列R7FA8D1BHECBD微控制器作为主控
    的头像 发表于 05-29 14:19 2630次阅读
    基于<b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子<b class='flag-5'>RA</b>系列的野火耀阳<b class='flag-5'>RA8D1</b>开发板产品简介

    RA8D1试用活动】RA8D1B-CPKCOR开发板移植linux

    RA8D1试用活动】RA8D1B-CPKCOR开发板移植linux
    的头像 发表于 11-16 01:02 1976次阅读
    【<b class='flag-5'>RA8D1</b>试用活动】<b class='flag-5'>RA8D1</b>B-CPKCOR开发板移植linux

    Renesas RA8D1微控制器:高性能与安全的完美结合

    Renesas RA8D1微控制器:高性能与安全的完美结合 在电子设计领域,微控制器(MCU)是众多项目的核心组件。今天,我们来深入了解一下(Renesas)的
    的头像 发表于 04-01 10:10 443次阅读