一、SD NAND特征
1.1 SD卡简介
雷龙的SD NAND系列有多种型号,本次测试使用的是CSNP4GCR01-AMW和CSNP32GCR01-AOW。这些芯片基于NAND FLASH和SD控制器设计,支持强大的坏块管理和纠错功能,并能在意外断电的情况下确保数据安全。
其主要特点包括:
- 接口支持SD2.0,支持2线或4线模式;
- 电压支持:2.7V-3.6V;
- 默认模式:可变时钟速率0 - 25MHz,接口速度高达12.5 MB/s(使用4条并行数据线);
- 高速模式:可变时钟速率0 - 50MHz,接口速度高达25 MB/s(使用4条并行数据线);
- 工作温度范围:-40°C ~ +85°C;
- 存储温度范围:-55°C ~ +125°C;
- 待机电流小于250uA;
- 修正内存字段错误;
- 内容保护机制——符合SDMI最高安全标准;
- 支持SD NAND密码保护(CMD42 - LOCK_UNLOCK);
- 内置写保护功能(永久和临时);
- 提供机械开关的写保护功能;
- 提供应用程序特定命令;
- 支持舒适擦除机制。
该SD卡支持SDIO和SPI协议读写,最高读写速度可达25MB/s。实际的读写速度会根据MCU和接口情况进行调整。通常在简单的嵌入式系统中,若对读写速度要求不高,会选择使用SPI协议。但无论使用SDIO还是SPI,都需要符合相关协议规范,才能成功搭建文件系统。
1.2 SD卡Block图

该SD卡采用LGA-8封装,具体的引脚分配与定义见下图:

二、SD卡样片
与样片一同寄来的还有转接板,转接板将LGA-8封装的芯片转接到标准的SD卡接口,这样只需将转接板插入SD卡卡槽即可使用。

三、Zynq测试平台搭建
测试平台使用的是Xilinx的Zynq 7020 FPGA芯片,搭配Digilent Zybo Z7板卡。以下为相关配置:
- Vivado版本:2018.3
- 文件系统:FATFS
- SD卡接口:SD2.0
3.1 测试流程
本次测试针对4GB和32GB两种容量的SD卡,在Zynq FPGA上搭建了SD卡读写回路,旨在测试SD卡的读写速度并验证读写一致性。
测试步骤如下:
- 初始化SD卡并建立FATFS文件系统;
- 进入测试程序,首先写入一定大小的文件,然后测量写入时间;
- 读取文件并测量读取时间;
- 比较读取数据和写入数据,确保数据一致;
- 通过写入时间和读取时间计算写入速度和读取速度。
测试过程将重复进行100次,最终输出测试报告。

3.2 SOC搭建
硬件搭建框图如下,在本系统中我们使用了PS端的SDIO接口来驱动SD NAND芯片,并通过UART与PC进行数据交互。
PL端硬件搭建非常简单,仅使用了一个Timer定时器来测量时间。

使用Zybo板卡文件创建工程,该文件会自动配置板卡中的硬件资源,若使用其他板卡,则需要手动配置DDR等硬件资源。

创建工程的步骤如下:
- 点击Setting -> IP -> Repository -> +,添加Timer IP核的路径;

- 创建Block Design(BD)工程;

- 配置Zynq内核,修改时钟配置为100MHz;


- 添加TimerA IP;

- 自动生成设计并完成SOC搭建。

完成硬件搭建后,生成比特流文件,并将其导入到SDK中。


四、软件搭建
在SDK中创建一个空白工程,并在其中编写测试程序。在每次读写操作开始之前,通过TimerA0_start()函数启动计时器,读写完成后通过TimerA0_stop()停止计时,从而获取操作所消耗的时间。

相关的Timer驱动函数在user/TimerA_user.c文件中定义。
#include "xparameters.h" /* SDK generated parameters */
#include "xsdps.h" /* SD device driver */
#include "xil_printf.h"
#include "ff.h"
#include "xil_cache.h"
#include "xplatform_info.h"
#include "time.h"
#include "../user/headfile.h"
#define PACK_LEN 32764
static FIL fil; /* File object */
static FATFS fatfs;
static char FileName[32] =

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



