SemiDrive E3 MCAL 开发系列(12)– Fls 模块的使用

一、  概述

本文将会介绍 SemiDrive E3 MCAL Fls 模块的简介以及基本配置。此外会结合实际操作的介绍,帮助新手快速了解并掌握这个模块的使用,文中的 MCAL 是基于 PTG3.0 的版本,开发板是官方的 E3640 网关板。

二、  Fls 模块简介

Fls 模块主要提供了对 XSPI 总线上的设备的读写擦服务,硬件上支持以下接口:

  • Standard SPI
  • Dual SPI
  • Quad SPI
  • Octal SPI(Hyperbus)

支持以下几种工作模式:

  • Single mode,该模式下只有一个设备连到了XSPI 控制器。
  • Switch device mode,该模式下有 2 个设备连到了 XSPI 控制器,SCLK/DQS/DQ 引脚都是相同的,但是有不同的片选引脚,同一时间只有其中一个片选引脚有效,具体接线如下图所示。

                图 2.1 Switch device mode 连接图

图 2.1 Switch device mode 连接图

(3)Dual core mode,该模式下2 个设备分别连接到 XSPI 控制器的 core0 和 core1,两个设备分别独立工作。具体接线图如下。

          图 2.2 Dual core mode

图 2.2 Dual core mode

(4)Parallel mode,该模式下,两个设备工作在并行模式,提供双倍的内存空间。

    图 2.3 Parallel mode

图 2.3 Parallel mode

(5)Lockstep mode,该模式下两个一样的内存设备分别连接到 XSPI 控制器的 PortA 和 PortB,所有对设备 A 的内存访问将和设备 B 完全一样,并且有 2 个周期的延迟。

三、  Fls 模块的主要配置

下面将对 Fls 模块的配置进行介绍,首先是 Fls 模块的通用配置。主要注意以下几个配置项,具体如下图所示。

  图 3.1 Fls 模块通用配置一

图 3.1 Fls 模块通用配置一

 图 3.2 Fls 模块通用配置二

图 3.2 Fls 模块通用配置二

FlsBaseAddress:该配置项用于配置 Fls 模块的基地址,该地址不是实际的物理地址。

FlsDefaultMode:可以配置为 Fast 或 Slow 模式。

FlsJobEndNotification:Job 完成回调函数,根据实际需求配置。

FlsJobErrorNotification:Job 错误回调函数,根据实际需求配置。

FlsMaxReadFastMode:Fast 模式每次调用 MainFunction 最大读取长度。

FlsMaxReadNormalMode:Slow 模式每次调用 MainFunction 最大读取长度。

FlsMaxWriteFastMode:Fast 模式每次调用 MainFunction 最大写长度。

FlsMaxWriteNormalMode:Slow 模式每次调用 MainFunction 最大写长度。

接着对 Fls 的Sector 进行配置,具体配置项目如下图所示。主要根据实际的 Flash 型号查看手册进行配置。

图 3.3 Fls 模块 Sector 配置

图 3.3 Fls 模块 Sector 配置

最后配置 Fls 模块的 OSPIController,具体如下图所示。

   图 3.4 Fls 模块 Sector 配置二

图 3.4 Fls 模块 Sector 配置二

主要的配置项目如下:

  • OSPIController:根据实际的硬件连接选择 XSPI1 或 XSPI2。
  • OSPIControllerPort:根据实际连接选择 PORTA 或 PORTB。
  • OSPIControllerInterface:选择接口类型:SPI NOR 或 HYPERBUS。
  • OSPIDeviceMode:选择 XSPI 的工作模式,总共有 5 种,具体参照第二章节的介绍。
  • OSPIBusClockFrequency:配置 XSPI 初始化时钟频率。
  • ExternalFlashSelect:特殊 Flash 类型选择,默认选择 Auto。

四、  实际操作

完成 Fls 模块的配置后我们需要进行实际验证,具体的验证代码如下图所示。该代码对 0x80000 的 Sector 进行写和回读比较的操作。

   图 4.1 Fls 模块测试代码

图 4.1 Fls 模块测试代码

将代码烧录到板子后重新上电运行,接上串口,输入命令 “runcase 2104” 对 flash 进行初始化,然后再输入 “runcase 2105”运行测试代码,具体的测试结果会打印出来,运行结果如下图所示。

图 4.2 串口打印信息

图 4.2 串口打印信息

五、  参考资料

1.《SemiDrive_E3_MCAL_User_Guide_Rev03.00.pdf》,2023.08

更多系列技术内容可点击此处进行阅读!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值