基于C8051F020的SD卡主控制器设计
李长有 1,2,武学东 2,孙步胜 1,3,马齐爽 1
1. 北京航空航天大学自动化科学与电气工程学院,北京 100083;2.焦作大学机电系,焦
作 454003;3.山东科技大学机械电子工程学院
摘要:给出一种应用于飞机飞行数据采集仪的 SD 卡设计方案,该方案选用与 8051 完全兼
容的高性能单片机 C8051F020 作为主控制器,采用 SPI 总线与 SD 卡通信。文章详细介绍了
SD 卡以及 C8051F020 芯片中 SPI 接口的结构和工作原理,讨论了相关的设置、硬件连接和
软件设计。
关键词:飞行数据采集仪;C8051F020;SD 卡;主控制器
中图法分类号:TP368.1 文献标识码:A 文章编号
1.引言
飞机飞行状况监测及数据采集仪,用于采集飞机试飞时的各种飞行数据,要求大量的存
储容量。在飞机回到地面后,需要方便地将采集数据传输到通用计算机上,以便作进一步的
数据处理和分析。为了把采集的数据从采集系统传输到通用计算机内,在过去,是将数据存
储部分设计为可分离的一个存储板,数据存储板上设计有 CPU 和串口。将数据存储板从数
据采集系统上取下来,通过串口与通用计算机通信,将数据传输到通用计算机内。可以看出,
这种方法有几个缺点:第一,操作麻烦,每次都要将存储板从采集系统取下来,然后再装上;
第二,经常插拔存储板降低整个采集系统的可靠性;第三,读取数据的通用计算机需要安装
专用程序,此程序是专门开发用于通用计算机与数据存储板之间的串口通信程序,增加了使
用复杂性。
SD/MMC 卡是一种容量大(最大可达 4GB)、性价比高、体积小、访问接口简单的存储卡,
而且通过 USB 读卡器,可以很方便地将卡中文件拷贝到通用计算机中。目前,SD 卡已大量
用于数码相机、MP3、手机与大容量存储设备中。在本次飞行状况监测及数据采集仪的设计
中,采集数据的存储采用了 SD 卡。
2.硬件功能原理与设计
SD 卡的外形和接口如图 1 所示[1]。根据 SD 卡与主控制器的通信协议不同,SD 卡对外
提供两种访问模式:SD 模式和 SPI 模式。所用通信模式不同,SD 卡引脚的功能也不同,具
体引脚功能如表 1 所示。在具体通信过程中,主机只能选择其中一种通信模式。通信模式的
选择对于主控制器来说是透明的,卡会自动检测复位命令的通信协议模式,而且通信模式一
旦选定,系统在通电情况下不能改变。SD 模式下,主控制器使用 SD 总线访问 SD 卡,可通
常的单片机没有硬件 SD 总线,尽管可以借助通用口线用软件仿真,但访问速度较低,还要
大量占用 CPU 时间,而单片机多具有 SPI 总线,本文就利用 SPI 总线实现对 SD 卡的访问。
下面主要介绍 SPI 总线方式。
在 SPI 总线模式下,CS 为主控制器向卡发送的片选信号,SCLK 为主控制器向卡发送
的时钟信号,DI(DataIn)为主控制器向卡发送的单向数据信号,DO(DataOut)为卡向主
控制器发送的单向数据信号。SD 卡的内部结构如图 2 所示,SD 卡内部除了具有大量存储单
元外,还具有卡接口控制器、寄存器以及 SD 和 SPI 两种模式的对外接口等。外部主控制器
访问卡的外部信号线并不与存储器单元直接相连,而是通过卡的接口控制器与存储器单元接
口相连。这样主控制器并不直接访问存储器,而是通过卡的接口控制器来访问存储器。卡内
存储单元的读/擦/写由卡接口控制器根据主控制器的命令自动处理完成,而主控制器无须知
道卡内是如何操作、管理存储单元的,这将大大减轻主控制器对存储器操作的负担。SD 卡
内部有 6 个信息寄存器,用来设置和保存操作卡的关键信息,有两个状态寄存器,用来记录
操作卡的当前状态。
―――――――――――――――――――
中国民航总局航空安全技术分析和鉴定实验室开放研究基金资助课题(200603)
http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛
引
脚
2 3
9 1
4 5
6 7 8
wp
SD 卡
图 1. SD 卡的形状与接口
表 1. SD 卡的引脚定义
SD 模式
名称
1 CD/DATA3
2
3
4
5
6
7
8
9
CMD
VSS1
VDD
CLK
VSS2
DATA0
DATA1
DATA2
类型
描述
I/O/PP 卡的检测/
数据线位 3
命令/响应
PP
电源地
S
S
电源
时钟
I
S
电源地
I/O/PP 数据线位 0
I/O/PP 数据线位 1
I/O/PP 数据线位 2
9
1
2
3
4
5
6
7 8
DAT2
CMD
CD/DAT3
OCR[31:0]
CID[127:0]
RCA[15:0]
DSR[15:0]
CSD[127:0
SCR[63:0]
VDD
CLK
接口驱动器
卡 接 口 控
制器
Reset
DAT0
DAT1
wp
电
源
检
测
存储器内核接口
存储器内核
图 2. SD 卡的内部结构
SPI 模式
名称 类型
描述
CS
I
S
S
I
S
I 片选(低电
平有效)
数据输入
DI
电源地
VSS1
电源
VDD
时钟
SCLK
VSS2
电源地
DO O/PP 数据输出
RSV -
RSV -
-
-
注:S――电源;I――输入;O――推挽输出;PP――推挽 I/O。
采集仪的主控制器采用了 C8051F020 单片机[2]。C8051F 系列单片机与 8051 在指令上
完全兼容,性能远远高于标准的 8051 单片机,片内除了具有 8052 的全部外设外,又扩展了
丰富的外设,是一种名副其实的 SOC(System On Chip)单片机。C8051F020 能够满足数据
采集功能外,还能很容易地实现 SD 卡的访问。与 SD 卡系统相关的特性如下[3]:
单片机内部采用流水线结构,指令运行速度高,指令运行速度比一般的 80C51 系列单
片机提高了大约 10 倍,可达 25MIPS 指令运行速度,满足高速操作 SD 卡的功能要求。
具有 SPI 硬件接口,可与 SD 卡的 SPI 总线很好接口。
具有 8 个 8 位 I/O 端口。除满足数据采集需要外,有足够的口线用于单片机与 SD 卡的
连接。而且,这些口线可通过软件进行配置,获得不同的功能,其中 SPI 接口,就是
通过配置相关寄存器而获得的。
具有可扩展的中断系统,支持 22 个中断源,2 个优先级,其中就包括 SPI 接口产生的
中断。
http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛
片内存储器包括 64KB 的 Flash、和 4KB 的 XRAM。不需要扩展存储器,就可以满足
文件系统的建立和访问 SD 卡的需要。
3.3V 的工作电压,与 SD 卡工作电压兼容。
时钟系统更加完善,可以使用内部时钟,也可以使用外部时钟,通过编程可以切换。
可实现通过 JTAG 接口的在系统调试,方便系统的开发。
C8051F 系列单片机的 SPI 串行接口的主要特点如下:全双工,三线同步传输,即在发
送的同时也能接受;可以工作在主机方式或从机方式;主机最大数据传输速率(位/秒)是
系统时钟频率的 1/2,因而最高可达 10Mb/s;SPI 位传输速率可通过编程选择;发送结束设
置中断标志,发送期间不占用 CPU 时间;串行时钟极性与相位可编程改变;具有写冲突保
护和总线竞争保护。
对于 C8051F020 的 SPI 系统,首先通过设置 I/O 端口功能选择开关控制寄存器 XBR0、
XBR1、XBR2,将 I/O 端口 P0.0、P0.1、P0.2、P0.3 配置成 SPI 功能引脚 SCK、MISO、MOSI
和 NSS,此时 I/O 端口 P0.0、P0.1、P0.2、P0.3 就组合成 SPI 接口了。而设置和控制 SPI 接
口性能的特殊功能寄存器有 SPI0CFG、SPI0CKR、SPI0CN、SPI0DAT。SPI0CFG 是 SPI 的
配置寄存器,用于配置 SPI 的工作方式,并反映通信过程中的数据发送状态。SPI0CN 是 SPI
控制寄存器,用于控制 SPI 的工作,并反映通信过程中的一些错误标志。SPI0CKR 是 SPI
的时钟速率寄存器,用于选择 SCK 输出的频率。SPI0DAT 是 SPI 的数据寄存器,用于发送
和接受 SPI 数据。
主控制器 C8051F020 与 SD 卡座的电路连接图如图 3 所示。除了 SPI 接口的连接外,还
有三根控制线,P0.4_SD_INSERT 就是 I/O 端口 P0.4,用于检测 SD 卡在卡座上是否插好,
完全插入时该引脚为低电平,否则为高电平。P0.5_SD_WP 就是 I/O 端口 P0.5,用于检测 SD
卡当前是否设置写保护,写保护时该引脚为高电平,否则为低电平。P0.6_SD_POWER 就是
I/O 端口 P0.6,用于 SD 卡的供电控制,该引脚输出低电平时,给卡供电,否则断电。这是
为了在 SD 卡进入不确定状态时,可以通过对卡重新上电复位而无需拔出卡。
3.软件设计
图 3. C8051F020 与 SD 卡座的电路连接图
软件设计思想是,为了程序的可移植性和易用性,将程序分为三个层次。第一个层次是
硬件抽象层,第二层是实现访问 SD 卡的命令层,第三层是应用层,提供给用户或文件系统
的接口函数[4]。
硬件抽象层包括访问 SD 卡的硬件环境配置、SPI 接口实现通讯的基本函数以及 SPI 中
断的处理。硬件环境配置包括硬件初始化、以及内存变量初始化等。如将 C8051F020 的 I/O
http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛
端口配置为 SPI 接口的相关设置、C8051F020 的 SPI 接口性能的设置、SD 卡的上电与断开、
SD 卡插入是否到位检测、SD 卡内部寄存器特定参数设置等等。又如 C8051F020 的 SPI 接
口性能的设置,包括主/从工作方式设置、SPI 通讯频率设置等等,这些内容都与硬件有关。
SPI 接口实现通讯的基本函数,包括主控制器向 SD 卡发送一字节和从 SD 卡读取一字节的
基本函数,这是所有 SPI 通讯的基础。SPI 中断处理是 SPI 接口产生中断时,中断服务程序
被自动调用,在中断服务程序中,读取 SPI 控制寄存器,这里存放着产生中断的各种状态标
志,根据不同的状态标志,调用不同的函数处理。
命令层,就是调用硬件抽象层的基本发送接收字节函数,实现 SD 卡所有 SPI 协议规定
的命令,完成对 SD 卡的访问。根据 SD 卡协议,访问 SD 卡的不同功能,由不同的命令实
现。这些命令分成 0~9 个不同的类别,每种类别包括几个具体的命令,对于 SPI 协议,每
个命令都由主机主动发送,高位在前低位在后,SD 卡收到命令后,根据不同的命令做出不
同的响应。主机发送的命令长度总是 6 个字节,命令的格式如表 2 所示。Command 表示命
令号,占用 6 位,Parameter 表示命令参数,长度为 4 字节,不同的命令对应不同的命令参
数值。SD 卡的响应有 4 种格式,分别为 R1、R1B、R2 和 R3 格式。主机发送命令并读取响
应形成一个完整的命令实现过程。
表 2. SPI 模式命令格式
字节 6
字节 1
0 1 Command Parameter(高位在前) CRC 1
字节 2~5
应用层函数提供客户程序访问 SD 卡的高级接口函数,使客户不需要知道 SD 卡的内部
结构和命令内容、不需要知道 SPI 的接口协议等基本内容,客户程序只需要简单地调用接
口函数了解 SD 卡的当前状态、读取自己需要的内容或写入自己的内容。应用层程序是在命
令层基础上的更高抽象,调用命令层函数实现。这些函数包括读数据、写数据、擦除数据、
返回卡状态、返回卡内存储空间使用状况等函数。
4.结论
2001.4.15
息. 2005, 3-2: 70-71
社,2005.8
本文作者的创新点是,将 SD 卡存储方式运用到飞机飞行数据采集系统,简化了采集系
统的设计,减小了系统尺寸,提高了系统的可靠性,使采集数据的读出变得简单易行。由于
原有数据采集系统,采用 8051 单片机作主控制器,本次设计选用与 8051 完全兼容的高性
能单片机 C8051F020,既继承了原有采集系统的设计,又满足了访问 SD 卡的功能要求,
加快了整个系统的设计进程。
参考资料
1. SD-memry Card Specifications / Part 1. Physical Layer Specification; Version 1.01.
2. 赵念强,鲍可进,申屠浩. 基于Soc单片机C8051F的码头供给监控系统[J]. 微计算机信
3. 张迎新,雷文,姚静波. C8051F系列SOC单片机原理及应用[M]. 北京:国防工业出版
4. 周立功等. ARM嵌入式系统软件开发实例[M]. 北京:北京航空航天大学出版社. 2006.6
Design of SD Card Host Controller Based on C8051F020
Li Changyou1, 2, Wu Xuedong2, Sun Busheng1, Ma Qishuang1
(1. School of Automation Science and Electrical Engineering, BeiHang University, Beijing
100083; 2. Department of mechatronic engineering, Jiaozuo University, Jiaozuo 454003)
Abstract:A scheme that SD card is applied to the flying data recorder of plane is designed. In this
design, the SOC C8051F020 is used as host controller and host controller communicates with SD
card on SPI Bus. The structure and principle of the SD Card and SPI Interface of the C8051F020
are introduced in detail. And the hardware and software design are discussed
Key words:flying data recorder; C8051F020;SD Card; host controller;
http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛
内容属于嵌入式与 SOC
作者简介:
李长有,男,焦作大学副教授,北京航空航天大学博士生,研究方向:检测技术与自动化装
置。
武学东,男,焦作大学副教授,研究方向:软件工程、网络应用。
孙步胜,男,北京航空航天大学博士生,研究方向:检测技术与自动化装置。
马齐爽,男,北京航空航天大学教授,博士生导师,博士,研究方向:检测技术与自动化装
置。
Author introduction:
Li Changyou, Male, Associate professor, Doctor Student, Research Interests: Detection
Technology and Automatic Equipment.
Wu Xuedong, Male, Associate professor, Research Interests: Software Engineering and Network
Application.
Sun Busheng male, Doctor Student, Research Interests: Detection Technology and Automatic
Equipment.
Ma Qishuang, Professor and Supervisor, doctor, Research Interests: Detection Technology and
Automatic Equipment.
通讯地址: 北京航空航天大学 11#宿舍楼 242
邮 编: 100083
联系 人: 李长有
Email: lcy8639@sohu.com
http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛