基于ARM7的SD卡读写控制在数据采集系统中的应用.pdf_第1页
基于ARM7的SD卡读写控制在数据采集系统中的应用.pdf_第2页
基于ARM7的SD卡读写控制在数据采集系统中的应用.pdf_第3页
基于ARM7的SD卡读写控制在数据采集系统中的应用.pdf_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电子技术应用2009年第7期欢迎网上投稿 SD存 储 卡 (Secure Digital Memory Card)是 为 音 视 频 消费电子设备的安全 性 、容量 、性能 和环 境等要 求而 设 计的一种存储卡,其 安全 系统 使用双 方认 证和 “新 的密 码算法”技术,防止卡中内容被非法使用。SD卡的通信 基于一个9引脚接口(时钟、命令、4条数据线和3条电 源线),可以在最高25 MHz频率和低电压范围内工作。 在 便携式监控系统中,SD卡可用来存储监控采集数据。 1硬件系统设计 应 用 于 数 据 采 集 的SD卡 读 写 控 制 结 构 如 图1所 示。 使用ARM7芯片LPC21321控制接口芯片D12处理 SD卡存储器。 ARM处理器:LPC2132是基于一个 支持 实时 仿真和 跟踪的16/32位ARM7TDMI-S CPU,并 带有64 KB嵌入 的高速Flash存储器2。LPC2132的实时仿真和跟踪功能 方便了代码调试,节省了开发成本。 PDIUSBD12是 一 款 性 价 比 高 的USB器 件 , 用 于 控 制 系 统 中 与 微 控 制 器 进 行 通 信 的 高 速 通 用 接 口 ,支 持 本 地DMA传 输 。PDIUSBD12所 具 有 的 低 挂 起 功 耗 连 同LazyClock输 出 可 以 满 足 使 用ACPI、OnNOW和USB 电 源 管 理 的 要 求 , 低 操 作 功 耗 可 以 应 用 于 使 用USB 总 线 供 电 的 外 设 。LPC2132与D12连 接 电 路 如 图2 所 示 。 2软件设计 软 件 设 计 主 要 包 括D12驱 动 、SD卡 、SPI总 线 协 议 和SD卡接口程序设计。 基于 ARM7 的 SD 卡读写控制 在数据采集系统中的应用 张华 1,吴 欣 1,王大星2 (1.广东技术师范学院,广东 广州510635; 2.广州致远电子有限公司,广东 广州510660) 摘要: 一个基于ARM7的应用于便携式数据采集系统中的SD卡读写控制设计 。 描述了基于 LPC2132、USB接口芯片D12和SD卡的硬件系统设计, 软件设计主要包括D12驱动、SPI总线协议实 现和SD卡接口程序设计等。 关键词:ARM;USB;SD卡协议 中图分类号:TP274+.2文献标识码:A SD card access based on ARM7 and its application in data acquisition system ZHANG Hua1,WU Xin1,WANG Da Xing2 (1.Guangdong Polytechnic Normal University, Guangzhou 510635,China; 2.Guangzhou Zhiyuan Electronic Co., Ltd., Guangzhou 510660,China) Abstract:This paper elaborated a design of the SD card data access on ARM7, applied in portable data acquisition system.It also describes the hardware system design based on the LPC2132,USB D12 and SD card in detail. The software design mainly in- cludes the D12 drive, SPI protocol and SD interface program and so on. Key words:ARM;USB;SD card protocol 图1数据采集系统结构简图 USB协议 USB接口芯片LPC2132 数据采集 SD卡读写 SD卡 嵌入式技术 Embedded Technology 38 电子技术应用2009年第7期 文件名 D12HAL.c D12CI.c Chap_9.c Descriptor.c D12Driver.c 表1USB驱动程序分层结构表 简要说明 PDIUSBD12与MCU之间的硬件接口 PDIUSBD12命令接口 USB协议层 USB协议层 USB应用层 相关性 与硬件相关 与硬件无关 与硬件无关 与硬件无关 与硬件无关 2.1 D12驱动的实现 USB协 议 规 定 了 一 些 基 本 准 则 , 每 个 设 备 的 端 点 0都 是 可 用 的 ,属 于 控 制 端 点 。 有 了 这 个 基 本 的 沟 通 途 径 ,主 机 就 开 始 通 过 端 点0向 设 备 发 出 一 些 获 得 相 关 设 备 基 本 状 态 的 命 令 。 这 些 基 本 状 态 可 以 反 映USB 设 备 所 属 的 类 别 及 子 类 , 反 映 配 置 状 态 、 接 口 状 态 和 端 点 状 态 , 主 机 按 照USB协 议 建 立 设 备 间 数 据 通 道 。 主 机 向 设 备 提 出 的 这 些 命 令 实 际 上 是USB协 议 中 规 定 的 各 种 标 准 请 求 , 设 备 向 主 机 传 送 相 应 的 描 述 符 , 包 括 设 备 描 述 符 、 配 置 描 述 符 、 接 口 描 述 符 、 端 点 描 述 符 等 。 为了使 软件 可 移 植 性 强 、易 维 护 ,采 用 了 分 层 的 方 法编写PDIUSBD12驱动程序。USB驱动程序分层结构表 如表1所示。 硬件接口(D12HAL.c)包含最底层的函数。D12命令 接口(D12CI.c)实现PDIUSBD12的命令接口以简化器件 的编程。 该层的函数及其功能如下: (1)读取芯片ID号:uint16 D12_ReadChipID(void) (2)设置地 址/使 能:void D12_SetAddressEnable(UINT8 bAddress,UINT8 bEnable) (3)设置端点使能:void D12_SetEndpointEnable(UINT8 bEnable) (4)设 置 模 式 :void D12_SetMode (uint8 bConfig,uint8 嵌入式技术 Embedded Technology 39 电子技术应用2009年第7期欢迎网上投稿 bClkDiv) 协议层(Chap_9.c)和Descriptor.c用来处理标准的USB 设备请求及特殊的厂商请求,如DMA等。USB主机通过 标准USB设备请求, 可设定和获取USB设备的有关信 息,完成USB设备的枚举。 所有 请 求 都 是 通 过 端 点0接 收 和 发 送SETUP包 完 成 的 。 接 收 主 机SETUP包 的 函 数 为ep0_rxdone(),所 有 SETUP包 都 由 函 数control_handler()来 处 理 ,发 送SETUP 包的函数为ep0_txdone()。SETUP包的接收和发送通过控 制 传 输 结 构 全 局 变 量CONTROL_XFER ControlData来 控 制,它实现了以上3个函数之间的通信。CONTROL_XFER 结构体的定义如下: typedef struct _control_xfer DEVICE_REQUEST DeviceRequest;/USB设备请求 /结构体,8 B unsigned short wLength;/传输数据的总字节数 unsigned short wCount;/传输字节数统计 unsigned char*pData;/传输数据的指针 unsigned char dataBufferMAX_CONTROLDATA_SIZE; /请求的数据 CONTROL_XFER; 应 用 层 (D12Driver.c)实 现PDIUSBD12的 所 有 功 能 。 USB设备控制驱动、USB接口控制驱动和协议层都在应 用层的控制之中。 应用层要实现的任务包括: (1)初始化PDIUSBD12,包括初始化PDIUSBD12的硬 件 连 接 、复 位PDIUSBD12、配 置PDIUSBD12的 中 断 服 务 程序地址、初始化应用层相关的全局变量。 (2)编写PDIUSBD12中断服务程序,PDIUSBD12几乎 所有功能都通过PDIUSBD12中断服务程序完成。因此中 断服务程序是应用层的核心部分,也是本驱动程序的核 心部分。 它要完成以下任务: 控制端点数据接收与发送中断服务程序,负责处 理控制传输的有关工作; 端点1和端点2数据接收与发送中断服务程序; USB总线挂起、复位、DMA结束中断服务程序; 用户读写端点1和端点2的API函数; 传输 控制 处理 任 务 ,该 任 务 用 于 处 理 枚 举 、标 准 任务请求、厂商请求等传输控制。 2.2 SD卡总线协议的实现 SD存储卡 系统 定义了SD和SPI两 种通 信协议 ,应 用时可以选择其中一种模式。SD卡能使用两种总线协 议,因此涉及到协议选择问题。SD卡总是在SD模式下 被唤醒, 如果系统想要使用SPI模式来对SD卡进行操 作 ,则 系 统 应 该 在 向SD卡 发 送 复 位 命 令(CMD0)期 间 , 保持CS信号 有效(低 电平), 这样SD卡将 进 入SPI模 式。 如果想从SPI模式切换回SD模式,只能对卡掉电再 上电。 图3为SD卡读写操作图。 2.2.1 SD总线 SD总线上的数 据通信 是基 于以 起始位 开始 、 以停 止位结束的数据位流。 命令:命令是启动一项操作的令牌。 命令可以从主 机发送到一张卡(寻址命令)或发送到连接的所有卡(广 播命令)。 命令在CMD线上串行传输。 响应:响应是从被寻址的卡或(同时)从所有连接的 卡发送到主机,作为对接收到的命令的回答的令牌。 响 应在CMD线上串行传输。 数据:数据可以从卡发送到主机或者相反。 SD存储卡的数 据传输 通过 块的 形式进 行 。 数 据块 后面通常有CRC位,它定义了单块和多块操作。 在快速 写操作中使用多块操作模式最理想 。 当CMD线出现停 止命令时,多块传输结束。 主机可以配置数据传输是使 用一条还是多条数据线。SD模式读操作如图3(a)所示。 2.2.2 SPI总线 SPI信道是 面向 字节的 。 每个 命令 或数据 块都 由8 位的字节组成,而且字节与CS信号对齐(即长度是8个 时钟周期的倍数)。 与SD协议相似,SPI报文由命令、响 应和数据块令牌组成。 主机和卡之间的所有通信都由主 机控制。 主机通过将CS信号置低电平启动总线处理。 SPI模 式 中 的 响 应 行 为 在 以 下 三 个 方 面 与SD模 式 不同: (1)被选中的卡总会响应命令。 (2)使用两种新的响应结构(8 bit和16 bit)。 (3)当卡遇到数据检索错误时会用错误响应(替代要 求的数据块),而不是用SD模式中的超时响应。 SPI模式支持单块和多块的写命令。 在接收有效的 写命令前,卡 会用响 应令 牌响应 ,并等 待主 机发送 数据 块。CRC后缀、块的长度和起始地址的限制都与读操作 相同。SPI模式写操作如图3(b)所示。 在接收到数据块后 ,卡会用数据响应令牌响应。 如 果数据块被无错接收,它将被烧写(/编程)到卡中。 在卡 烧写(/编程)期间,卡会向主机发送连续的忙令牌流(有效 地保持DataOut线为低电平)。SPI模式写操作函数如下: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *函数名称:SD_Write_BlockData() * *功能描述:写块数据 * *入口参数:wrbuf写缓冲区m=0写单块m=1写多块 * *出口参数:操作是否成功 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / uint8 SD_Write_BlockData(uint8*wrbuf,uint8 m) SPI_CS_Assert(); if(m=0) SPI_Send_Byte(SD_TOK_WRITE_ STARTBLOCK);/发写单块令牌 else 嵌入式技术 Embedded Technology 40 电子技术应用2009年第7期 SPI_Send_Byte(SD_TOK_WRITE_STARTBLOCK_M); for(i=0;i8) & 0 xFF);/发校验和 SPI_CS_Deassert(); if (SD_WaitBusy() ! = SD_NO_ERROR) return TIMEOUT_ERROR;/*写 入 超 时write time out*/ else return SD_NO_ERROR; 该 函 数 在 发 送 写 命 令 后 被 调 用 。 首 先 根 据 用户请 求,向SD卡发 送写单 块 还 是 写 多 块 的 令 牌 , 随 后 将 数 据 跟 在 令 牌 后 面 发 到SD 卡。 在 发送 完毕后 调用SD_WaitBusy()函数 ,用 以等待SD卡写 完成。 如 果超 时就 返回一 个错 误代码 。 2.3 SD卡接口及初始化程序设计 SD卡通过卡座与MCU连接, 卡座连线如 图4所 示 。J12为 卡 座 ;CMD/DI和DAT0/DO 两 条 数 据 线 分 别 接 上 拉 电 阻 ,确 保 数 据 稳 定 ; CARD_INSERT为卡 完全 插入 卡座检 测线 , 为高 电 平 时 表 明 无 卡 ;CARD_WP为 写 保 护 检 测 脚 , 高 电 平 时 表 示 卡被 写保护 ;DAT3/CS为SD卡 使 能 引 脚 , 低 电 平 时 卡 被 选 中 , 使 用SPI总 线 方 式 ;DAT1/IRQ和DAT2通 过 电 阻 接 地 ,SD卡 的 电 源 不 直 接 与3.3 V相 连 ,MUC可 以 通 过IO口 来 控 制 是 否 为SD卡

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论