PS 端 SD 卡读写
SD 卡原理
1. SD 卡分类
| 分类方式 | 类型 |
|---|---|
| 尺寸 | 标准 SD 卡、Micro SD(TF 卡) |
| 速度等级 | Class 2/4/6/10,UHS-1 U1/U3 |
| 容量 | SD (≤2GB)、SDHC (≤32GB)、SDXC (≤2TB) |
2. Micro SD 卡引脚说明

3. SD 卡命令与应答格式
Command 命令格式
| 启动位 | 主机 | 命令码 | 命令参数 | CRC | 停止位 |
|---|---|---|---|---|---|
| 0 | 1 | 5:0 | 31:0 | 6:0 | 1 |
Respond 应答格式
| 启动位 | SD卡 | 应答内容 | 停止位 |
|---|---|---|---|
| 0 | 0 | 44:0 / 132:0 | 1 |
4. SD 读写时序与数据格式


SD 卡读写采用同步时钟,数据在 CLK 上升沿采样。数据存储以块(Block)为单位,默认每块 512 字节。
FATFS 文件系统
- 简介:FatFs 是通用 FAT 文件系统模块,专为小型嵌入式系统设计。
- 标准:遵循 ANSI C,与平台无关。
- 支持平台:8051、PIC、AVR、ARM、Zynq 等。
- 官方网址 :http://elm-chan.org/fsw/ff/00index_e.html

BMP 图片格式
-
位图像素组成:每个小方格就是一个携带颜色信息的像素。
-
每个像素记录 RGB 颜色信息(24 位色:24 位二进制数)
- 红(R):8 位二进制 = 00000000 ~ 11111111(数值 0~255)
- 绿(G):8 位二进制 = 00000000 ~ 11111111(数值 0~255)
- 蓝(B):8 位二进制 = 00000000 ~ 11111111(数值 0~255)
每个像素颜色由红(R)、绿(G)、蓝(B)混合而成,使用 8 位 × 3 共 24 位二进制数存储颜色数据。
- 位图 = 所有像素数据的集合
将所有像素的颜色信息汇总集合,这些数据就是位图(Bitmap)。
| 名称 | 字节数 | 说明 |
|---|---|---|
| 图像文件头 | 2 | 字节1为0x42='B', 字节2为0x4d='M', 表示是Windows支持的BMP格式。 |
| 文件大小 | 4 | 整个文件大小。BMP头加上图像数据。 |
| 保留 | 4 | 保留,设置为0。 |
| 位图数据偏移 | 4 | 从文件开始到位图数据之间的偏移量,一般为54字节。 |
| 位图信息头长度 | 4 | 从此处到BMP头结束,一般为40字节。 |
| 位图宽度 | 4 | 以像素为单位,比如1920。 |
| 位图高度 | 4 | 以像素为单位,比如1080。 |
| 位图的总数 | 2 | 该值总是1。 |
| 每个像素的位数 | 2 | 1(单色),4(16色),8(256色),16(64K色,高彩色),24(16M色,真彩色),32(4096M色,增强型真彩色)。 |
| 压缩说明 | 4 | 0(不压缩),1(RLE 8,8位RLE压缩),2(RLE 4,4位RLE压缩),3(Bitfields,位域存放)。 |
| 位图字节数 | 4 | 用字节数表示的颜色数据的大小。假设位图是24位,宽为640,高为480,则数值为640×480×(24/8)=921600。 |
| 水平分辨率(像素/米) | 4 | 用像素/米表示的水平分辨率。 |
| 垂直分辨率(像素/米) | 4 | 用像素/米表示的垂直分辨率。 |
| 颜色索引 | 4 | 位图使用的颜色索引数。设为0的话,则说明使用所有颜色。 |
| 重要颜色索引数目 | 4 | 对颜色显示有重要影响的颜色索引数目。如果是0,表示都不重要。 |
💡 完整视频讲解可前往 ALINX 视频号进行直播回看
更多细节欢迎关注我们黑金云课堂全年免费直播课,
黑金云课堂六月直播日历 我们将在每周二、三、四,同步推进 Verilog开发、Vitis开发、Linux开发三大系列,带你从零开始,稳扎稳打掌握 FPGA 开发全流程!
| 系列 | 内容定位 |
|---|---|
| Verilog开发 | 硬件描述语言基础、逻辑设计、仿真调试 |
| Vitis开发 | Zynq软硬件协同、外设驱动、网络协议栈 |
| Linux开发 | 嵌入式Linux系统移植、驱动编写、应用开发 |