导言
跟着铁路货运速度的进步,时速160km/h的快速卡车运 行安全智能监测体系已成为研讨的重要课题。因为卡车具有 运转周期长的特色,监测体系收集到的各种实时的数据, 包含防滑操控、轴温预警、列车定位、转向架失稳等信息, 需求很多的存储空间。主操控器收集到这些数据后,需求通 过存储卡将数据保存下来,然后经过GPRS无线模块读取卡 数据信息发送到通用计算机上,以作进一步的剖析和处理。 现在常用的存储器有 U 盘、FLASH 芯片、SD 卡等。SD卡是 一种容量大(最大可达32GB)、性价比高、体积小、拜访 接口简略、易于集成的存储卡,选用SD卡可解决上述收集 数据的存储和传输问题;选用ARM Cortex ™-M3内核的32位 微操控器STM32F103作为主操控器,STM32F103 自带规范 的SD卡接口,运用其自带的SDIO接口驱动,在4位SD形式 下,最高通讯速度可达 24MHz,最高每秒可传输12M字节数 据,可快速地完结对SD卡的拜访。
1 硬件功用原理与规划
1.1 SD卡简介
S D 卡 ( S e c u r e D i g i t a l Memor y Card) 是一种依据半 导体闪存工艺的存储卡,它的 外形和接口如图1 所示。 S D 卡 有 9 个 引 脚 与 外 部 通 信 , 支 持 SPI和SDIO两种形式, 不同模 式下,SD卡引脚功用描绘如表1所示。在详细的通讯过程中,主机只能挑选一种通讯形式。
图1 SD卡的外形和接口
主操控器STM32F103可支撑SDIO形式,在该形式下,CS为主操控器向SD卡发送的片选信号,CMD为主操控器向SD卡 发送的指令/呼应信号,CLK为主操控器向SD卡发送的时钟 信号,DAT0、DAT1和DAT2分别为SD卡的3个数据线。
SD卡的内部结构如图2所示,SD卡内部不只有很多的 存储单元,还具有卡接口操控器、寄存器以及SDIO和SPI两 种形式的对外接口等。外部主操控器并不直接拜访卡内存储 单元,而是经过卡的接口操控器与存储器单元接口相连来访 问卡的外部信号线。卡内存储单元的读、写、擦除等操作由 卡接口操控器依据主控器宣布的指令主动处理完结,而主控 制器无需知道卡内怎么操作、办理存储单元,这将大大下降 主操控器对存储器操作的担负。SD卡内部有6个寄存器,其 中四个信息寄存器用来设置和保存卡的要害信息,别的两个 状 态 寄 存 器 用 来配 置 和 操 作 卡 当 前的状况。
1.2 SDIO接口
原理
S D I O( S e c u r e D i g i t a l I n p u t a n d O u t p u t ) , 即 安全 数 字 输 入 输 出接口。 它由SD存 储 卡 的 规 范 发 展 而 来 , 在 机 械 、 电 路 、 功 耗 、 信 号 与 软 件 上 与 多
图2 SD卡的内部结构
表1 SD卡在不同形式下的引脚界说
种存储卡彻底兼容,可支撑多媒体卡(MMC卡)、SD存储卡、SDIO卡;而且可扩展性较强,能够衔接多种SDIO接口 设备,如蓝牙、WIFI、GPRS、照相机等。SDIO与SD卡规范 的一个重要区别是增加了低速规范,以最小的硬件开支支撑 低速I/O数据传输才能。
STM32F1的 SDIO操控器包含2个部分:SDIO 适配器模 块和 AHB 总线接口,其功用框图如图3所示。SDIO_D[7:0] 为SDIO数据总线,假如一个 SD卡接到了总线上,能够经过 主机装备数据传输方法运用SDIO_D0或SDIO_D[3:0],一切 的数据线都作业在推挽形式。复位后默许情况下,SDIO_ D 0 用 于 数 据 传 输 , 初 始 化 后 主 机 可 以 改 变 数 据 总 线 的 宽 度,选用4位总线SDIO_D[3:0]传输数据。
SDIO_CMD为指令/呼应接口。SDIO的指令分为使用 相关指令(ACMD)和通用指令(CMD)两部分,发送应 用相关指令之前必须先发送通用 指令。每发送一个指令, SD卡都会给出一个应对,以奉告主机该指令的执行情况或 回来主机所需的数据,这个应对咱们称之为呼应,呼应也在 SDIO_CMD线上串行传输。STM32F1的 SDIO 操控器支撑 2 种呼应类型,即:短呼应(48位)和长呼应(136位),这 两种呼应类型都带 CRC 过错检测。
SDIO_CK为卡时钟输出接口。依据卡类型的不同,可 能有好几个区间,这就涉及到时钟频率的设置,SDIO_CK 与 SDIO适配器时钟(SDIOCLK)的关系为:
SDIO_CK=SDIOCLK/(2+CLKDIV)
上式中,SDIOCLK 为SDIO挂接在AHB总线上的接口时 钟(关于STM32F1系列是72MHz);CLKDIV 则是时钟分频 系数,能够经过SDIO的 SDIO_CLKCR 寄存器进行设置(要 保证SDIO_CK不超越卡的最大操作频率)。
1.3 硬件衔接
主 控 制 器 选 用 大 容 量 、 增 强 型 的 芯 片 STM32F103ZET6,其与SD卡座的电路衔接图如图4所示。 SDIO_D0(PC8)、SDIO_D1(PC9)、SDIO_D2(PC10) 和SDIO_D3(PC11)这4个引脚接上拉电阻,经过3.3V的电
源给SD卡端供给灌电流,然后进步STM32F103ZET6芯片的
图3 STM32F1的SDIO操控器功用框图
图4 STM32F103ZET6与SD卡座的电路衔接图 驱动才能;
SDIO_CK(PC12)直接与卡的CLK端相连,用 于向SD卡发送时钟信号。除了SDIO接口的衔接外,还有两根操控线:SD_CD(PD5)用于检测SD卡接口与卡座是否接好,若彻底接好则该引脚为低电平,否则为高电平;SD_ WP(PD6)用于检测SD卡当期是否设置写保护,写保护时 该引脚为高电平,否则为低电平。
2 软件规划
软件规划首要包含硬件层装备以及驱动层装备。硬件 层装备首要包含装备SD I O 相关寄存器、 辨认卡类型、 获 取卡信息,完结对SD卡的初始化;驱动层装备首要是使用 SDIO接口驱动SD卡进行读、写操作。使用ST官方供给的固 件库函数可大大进步软件规划的功率,STM32F1 的 SDIO 相 关操作的函数散布在源文件 stm32f10x_sdio.c 以及对应的头 文件 stm32f10x_sdio.h 中。(未完待续)