第 7 页 共 36 页
每一根DAT线都要传输开始位、结束位和CRC位。CRC位被每根DAT线单独计算并核对。CRC状态响应和忙指示只会在DAT0上由卡向主机传输(DAT1-DAT3在此期间与此无关)。 (2)SPI总线
SD通道以指令和以起始位开始以停止位结束的数据位流为基础,SPI通道是被定向的位组。每个命令或数据块都被组装为8位的字节并且是被排齐到CS信号的字节(即长度是8个时钟周期的循环)。类似SD协议,SPI信息也是由命令、响应和数据块所组成。所有的通信在主机和卡之间被主机控制。主机处理总线上CS信号为低电平的那个。
响应的行为在SPI模式里有三个方面不同于SD模式: ① 被选择的卡总是回应命令。
② 响应使用为两种新的(8&16位)结构。
③ 当卡遇到一个数据检索问题的时候,它会用一个错误响应(替换预期的数据块)回应,而不像在SD模式中回应超时。
本设计采用SPI总线模式。
2.2 SD卡的引脚定义及SD卡的命令 2.2.1 SD卡的引脚定义 (1)SD卡引脚功能详述:
表2.1 SD卡引脚功能详述
引脚 编号 1 2 3 4 5 6 7 8 9 名称 SD模式 类型 描述 卡检测/数据线3 命令/回应 电源地 电源 时钟 电源地 数据线0 数据线1 数据线2 名称 #CS DI VSS VDD SCLK VSS2 DO RSV RSV SPI模式 类型 I I S S I S O或PP 描述 片选 数据输入 电源地 电源 时钟 电源地 数据输出
CD/DAT3 IO或PP CMD VSS1 VDD CLK VSS2 DAT0 DAT1 DAT2 PP S S I S IO或PP IO或PP IO或PP 注:S:电源供给;I:输入;O:采用推拉驱动的输出;PP:采用推拉驱动的输入输出。
第 8 页 共 36 页
(2) SD卡支持的两种总线方式:
SD方式与SPI方式。其中SD方式采用6线制,使用CLK、CMD、DAT0~DAT3进行数据通信。而SPI方式采用4线制,使用CS、CLK、DataIn、DataOut进行数据通信。SD方式时的数据传输速度与SPI方式要快,采用单片机对SD卡进行读写时一般都采用SPI模式。采用不同的初始化方式可以使SD卡工作于SD方式或SPI方式。这里只对其SPI方式进行介绍。 2.2.2 SD卡的命令 (1) 命令类型
控制SD卡有4种类型的命令: ① 广播命令,无响应。
广播命令的特点是如果所有的CMD线与主机连接到一起。如果把它们分开,那么每张卡将在轮到它的时候单独接收。
② 有响应的广播命令。
从所有卡来的响应是同时的。但是在SD卡里没有开漏模式,这个类型命令只可以使用在所有的CMD线是分开的情况下。这个命令将被所有的卡单独接受并响应。
③ 在DAT上没有数据传输的定址(点对点)命令。 ④ 在DAT上有数据传输的定址命令。
所有的命令和响应都在CMD线上进行。命令传送总是从左边的位开始。 (2) 命令格式
所有的命令都有48位的固定码,在20MHz的情况下需要传输2.4ms。命令格式如下:表2.2。
表2.2 命令格式
位 位数 值 描述
47 1 ‘0’ 起始位 46 1 ‘1’ 传输位 [45:40] 6 x 命令索引 [39:8] 32 x 变量 [7:1] 7 x CRC7 0 1 x 结束位 一个命令总是以一个启动位开始(总是‘0’),后面跟了指示传输方向的位(主机=‘1’)。下6位指示命令的索引,这个值解释了二进制代码数(在0和63之间)。一些命令需要一个变量(例如:一个地址32位)。在表中被‘x’指代的值,指示这个变量依赖的命令。所有的命令都被CRC保护。每一条命令由一个结束位结束。 (3) SD卡命令集:
第 9 页 共 36 页
SD卡命令共分为12类,分别为class0到classⅡ,不同的SD卡,主控根据其功能,支持不同的命令集如下:
C1ass0:(卡的识别、初始化等基本命令集): CMD0:复位SD卡。 CMD1:读OCR寄存器。 CMD9:读CSD寄存器。 CMD10:读CTD寄存器。
CMD12:停止读多块时的数据传输。 CMD13:读Cardes Status寄存器。 Class2(读卡命令集): CMD16:设置块的长度。 CMD17:读单块。
CMD18:读多块,直至主机发送CMD12为止。 Class4(写卡命令集): CMD24:写单块。 CMD25:写多块。 CMD27:写CSD寄存器。 Class5(擦除卡命令集): CMD32:设置擦除块的起始地址. CMD33:设置擦除块的终止地址。 CMD38:擦除所选择的块。 Class6(写保护命令集): CMD28:设置写保护块的地址。 CMD29:擦除写保护块的地址。
CMD30:Ask the card for the status of the mite protection bits。 Class7:卡的锁定,解锁功能命令集。 class8:申请特定命令集。 classl0和class11:保留。
其中class 1, class3,class9的SPI模式不支持。
第 10 页 共 36 页
3 硬件设计
系统整体硬件方案分为三个部分:电源部分、单片机STC12C5A60S2主控芯片的DY_mini80E开发板的选择部分(包括信号采集、A/D转换等)、带SD卡的TFT彩屏的选择部分(包括SD卡工作电路部分等)。
设计在Keil编程环境下,建立工程,编写程序,然后将程序下载到单片机中,同时复位单片机,然后调节DY_mini80E开发板上的四路电位器采集不同的电压信号(四路电压范围均0V-5V),按动采集键后,信号开始采集,每秒钟各通道进行一次A/D转换,并对数据进行处理后由单片机控制分别存入带SD卡的TFT彩屏的SD卡的相应文档中。并用TFT彩屏显示经过A/D转换后的四路实时电压,用以观察采集数据的变化。
3.1 电源模块
SD卡的工作电平为3.3V,而控制芯片STC12C5A60S2的逻辑电平为5V CMOS电平标准。因此,它们之间不能直接相连,否则可能会烧坏SD卡;出于对安全工作的考虑,有必要解决电平匹配问题。
要解决这一问题,最根本的就是解决逻辑器件接口的要有两条:一为输出电平器件输出高电平的最小电压值,应该大于接收电平器件识别为高电平的最低电压值;另一条为输出电平器件输出低电平的最大电压值,应该小于接收电平器件识别为低电平的最高电压值。
一般来说,通用的电平转换方案是采用类似SN74ALVC4245的专用电平转换芯片,这类芯片不仅可以用作升压和降压,而且允许两边电源不同。但是,这个方案代价相对昂贵,而且一般的专用电平转换芯片都是同时转换8路、16路或者更多路数的电平,相对本系统仅仅需要转换4路来说是一种资源的浪费。
带SD卡的TFT彩屏模块中包含REG1117-3.3 电压转换模块。在SD卡向单片机传输数据时可以直接连接,因为它们之间的电平刚好满足上述的电平兼容原则,所以只做一个直流5V的稳压电源给系统供电即可,既经济又实用。电源电路原理图如图3.1。
图3.1 电源电路原理图
第 11 页 共 36 页
该电路的基本工作过程是:市电220V经变压器降压变成8V交流,再经整流桥VD整流成约11.5V直流,再经过滤波电容C1、C2后经LM7805稳压管稳压成稳定的5V电压供整个系统供电。
3.2 单片机最小系统
3.2.1 STC12C5A60S2原理图以及它的特性
单片机控制模块是整个系统的核心。本系统采用STC12C5A60S2单片机为核心元件。下面图3.2就是一个STC12C5A60S2单片机的原理图。
图3.2 STC89C52原理图
STC12C5A60S2单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S,即25万次/秒),针对电机控制,强干扰场合。
(1) 增强型 8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051。 (2) 工作电压:
? STC12C5A60S2 系列工作电压: 5.5V - 3.3V(5V单片机); ? STC12LE5A60S2 系列工作电压: 3.6V - 2.2V(3V单片机)。 (3) 工作频率范围:0~35MHz,相当于普通8051的 0~420MHz。
(4) 用户应用程序空间 8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K 字