采用GPIO接口模拟SPI协议的通信方法.pdf

上传人:b*** 文档编号:4059584 上传时间:2018-08-13 格式:PDF 页数:9 大小:387.67KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110052714.3

申请日:

2011.03.04

公开号:

CN102654857A

公开日:

2012.09.05

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 13/42申请公布日:20120905|||公开

IPC分类号:

G06F13/42

主分类号:

G06F13/42

申请人:

希姆通信息技术(上海)有限公司

发明人:

徐红芳

地址:

200335 上海市长宁区金钟路633号

优先权:

专利代理机构:

上海智信专利代理有限公司 31002

代理人:

薛琦

PDF下载: PDF下载
内容摘要

本发明公开了一种采用GPIO接口模拟SPI协议的通信方法包括:S1、SD卡上电并软件复位;S2、判断SD卡为SD?1.0还是SD?2.0,若为SD?1.0,进入步骤S3;若为SD?2.0,进入步骤S4;S3、获得SD?1.0的信息完成初始化并进入步骤;S4、判断SD卡为SD?2.0标准版还是SD?2.0大容量版本,若为SD?2.0标准版,进入步骤S5;若为SD?2.0大容量版,进入步骤S6;S5、获得SD?2.0标准版的信息完成初始化并进入步骤S7;S6、获得SD?2.0大容量版本的信息完成初始化,并进入步骤S8;S7、以sector序号为地址读写操作;S8、以blocksize*sector序号为地址进行读写操作。本发明提供通过GPIO口去模拟SPI的方式,实现调整SD?SPI协议,有效的节约了成本,提高了产品的竞争力,有助于占有市场。

权利要求书

1: 一种采用 GPIO 接口模拟 SPI 协议的通信方法, 其特征在于, SD 卡的输出端、 输入端、 片选端和时钟信号端分别连接至 BB 的 GPIO 接口, 该通信方法包括以下步骤 : S1、 SD 卡上电并软件复位 ; S2、 BB 以预设时钟极性和时钟相位的 SPI 时序发送 SD
2: 0 版本所支持的指令判断命令 至该 SD 卡以判断 SD 卡为 SD 1.0 版本还是 SD 2.0 版本, 若为 SD 1.0 版本, 进入步骤 S3 ; 若 为 SD 2.0 版本, 进入步骤 S4 ; S3、 BB 以预设时钟极性和时钟相位的 SPI 时序发送支持 SD 1.0 版本的指令获得 SD 卡 的信息以完成 SD 卡的初始化, 并进入步骤 S7 的读写操作 ; S4、 BB 以预设时钟极性和时钟相位的 SPI 时序发送 SD2.0 版本所支持的指令判断命令 至该 SD 卡以判断 SD 卡为 SD 2.0 的标准版本还是 SD 2.0 的大容量版本, 若为 SD 2.0 的标 准版本, 进入步骤 S5 ; 若为 SD 2.0 的大容量版本, 进入步骤 S6 ; S5、 BB 以预设时钟极性和时钟相位的 SPI 时序发送支持 SD 2.0 的标准版本的指令获得 SD 卡的信息以完成 SD 卡的初始化, 并进入步骤 S7 的读写操作 ; S6、 BB 以预设时钟极性和时钟相位的 SPI 时序发送支持 SD 2.0 的大容量版本的指令获 得 SD 卡的信息以完成 SD 卡的初始化, 并进入步骤 S8 的读写操作 ; S7、 以 SD 卡的 sector 序号为地址进行读写操作 ; S8、 以 SD 卡的 blocksize*sector 序号为地址进行读写操作。 2. 如权利要求 1 所述的采用 GPIO 接口模拟 SPI 协议的通信方法, 其特征在于, 步骤 S1 中 BB 通过发送 SD 标准命令至 SD 卡以完成软件复位, 对应的命令里面都带 CRC。
3: 如权利要求 1 所述的采用 GPIO 接口模拟 SPI 协议的通信方法, 其特征在于, 步骤 S2 中的 SD 2.0 版本所支持的指令判断命令包括 SD 卡的支持电压, 对应的命令里面都带 CRC。
4: 如权利要求 3 所述的采用 GPIO 接口模拟 SPI 协议的通信方法, 其特征在于, 步骤 S2 还包括以下步骤 : S21、 BB 以预设时钟极性和时钟相位的 SPI 时序发送包括 SD 卡的支持电压附带 CRC 的 SD 2.0 版本所支持的指令至该 SD 卡 ; S22、 BB 根据 SD 卡的返回状态判断 SD 卡的版本, 倘若 BB 在一定时间内未收到期待返回 数据, 则 SD 卡为 SD 1.0 版本 ; 若 BB 收到的返回值与 SD2.0 版本所支持的指令返回值不匹 配, 则 SD 卡初始化失败 ; 若 BB 收到的返回值与 SD2.0 版本所支持的指令返回值相匹配, 则 SD 卡为 SD 2.0 版本。
5: 如权利要求 1 所述的采用 GPIO 接口模拟 SPI 协议的通信方法, 其特征在于, 步骤 S3 还包括以下步骤 : S31、 BB 以预设时钟极性和时钟相位的 SPI 时序发送支持电压查询命令至 SD 卡以查询 支持电压 ; S32、 BB 以预设时钟极性和时钟相位的 SPI 时序, 发送块长度设置命令至 SD 卡以设置块 长度, 每个指令里面后缀都带 CRC ; S33、 BB 获得 SD 卡的信息并完成 SD 卡的初始化。
6: 如权利要求 1 所述的采用 GPIO 接口模拟 SPI 协议的通信方法, 其特征在于, 步骤 S4 中的 SD2.0 版本所支持的指令支持电压查询命令和 SD 卡状态查询命令。
7: 如权利要求 6 所述的采用 GPIO 接口模拟 SPI 协议的通信方法, 其特征在于, 步骤 S4 2 还包括以下步骤 : S41、 BB 以预设时钟极性和时钟相位的 SPI 时序发送支持电压查询命令至该 SD 卡以查 询 SD 卡的支持电压, 返回的支持电压是否在 SD 卡的支持电压阈值范围内, 若是, 则进入步 骤 S42 ; 若否, 则 SD 卡初始化失败 ; S42、 BB 以预设时钟极性和时钟相位的 SPI 时序发送 SD 卡状态查询命令至该 SD 卡以查 询 SD 卡的状态, 返回的状态是否为空闲, 若是, 则进入步骤 S43 ; 若否, 则 SD 卡初始化失败 ; S43、 BB 以预设时钟极性和时钟相位的 SPI 时序再次发送支持电压查询命令至该 SD 卡 以查询 SD 卡的支持电压, 并根据获得的 OCR 寄存器的返回值判断 SD 卡为 SD 2.0 的标准版 本还是 SD 2.0 的大容量版本。
8: 如权利要求 1 所述的采用 GPIO 接口模拟 SPI 协议的通信方法, 其特征在于, 步骤 S5 还包括以下步骤 : S51、 BB 以预设时钟极性和时钟相位的 SPI 时序, 发送块长度设置命令至 SD 卡以设置块 长度, 指令带 CRC 信息 ; S52、 BB 获得 SD 卡的信息并完成 SD 卡的初始化, 其中 SD 卡的信息包括 SD 卡的容量、 擦 除单位大小、 块长度和总块数。
9: 如权利要求 1 所述的采用 GPIO 接口模拟 SPI 协议的通信方法, 其特征在于, 步骤 S6 还包括以下步骤 : S61、 BB 以预设时钟极性和时钟相位的 SPI 时序, 发送块长度设置命令至 SD 卡以设置块 长度, 指令带 CRC 信息 ; S62、 BB 获得 SD 卡的信息并完成 SD 卡的初始化, 其中 SD 卡的信息包括 SD 卡的容量、 擦 除单位大小、 块长度和总块数。

说明书


采用 GPIO 接口模拟 SPI 协议的通信方法

    技术领域 本发明涉及一种采用 GPIO 接口模拟 SPI 协议的通信方法, 特别是涉及一种采用 GPIO 接口模拟 SPI 协议与 SD 卡通信的通信方法。
     背景技术 目前市场上面所使用的 SD 卡 (Secure Digital Memory Card, 安全数码卡 ) 主 要包括两种方式, 一种是 SD BUS(SD 总线 ) 和 SPI BUS(SPI 总线 ), 前一种一般会做成 SD CONTROL 集成, 这样的 BB(base band 基带 ) 一般会比较贵。
     SPI 是 一 种 标 准 的 四 线 同 步 双 向 串 行 总 线。SPI 是 英 语 Serial Peripheral interface 的缩写, 顾名思义就是串行外围设备接口。 是 Motorola 首先在其 MC68HCXX 系列 处理器上定义的。SPI 接口主要应用在 EEPROM、 FLASH、 实时时钟、 AD 转换器还有数字信号 处理器和数字信号解码器之间。SPI, 是一种高速的, 全双工, 同步的通信总线, 并且在芯片 的管脚上只占用四根线, 节约了芯片的管脚, 同时为 PCB 的布局上节省空间, 提供方便, 正 是出于这种简单易用的特性, 现在越来越多的芯片集成了这种通信协议, 比如 AT91RM9200。 SPI 总线系统是一种同步串行外设接口, 它可以使 MCU 与各种外围设备以串行方式进行通 信以交换信息。外围设置 FLASHRAM、 网络控制器、 LCD 显示驱动器、 A/D 转换器和 MCU 等。 SPI 总线系统可直接与各个厂家生产的多种标准外围器件直接接口, 该接口一般使用 4 条 线: 串行时钟线 (SCK)、 主机输入 / 从机输出数据线 MISO、 主机输出 / 从机输入数据线 MOSI 和低电平有效的从机选择线 SS( 有的 SPI 接口芯片带有中断信号线 INT、 有的 SPI 接口芯 片没有主机输出 / 从机输入数据线 MOSI)。SPI 的通信原理很简单, 它以主从方式工作, 这 种模式通常有一个主设备和一个或多个从设备, 需要至少 4 根线, 事实上 3 根也可以 ( 用于 单向传输时, 也就是半双工方式 )。也是所有基于 SPI 的设备共有的, 它们是 SDI( 数据输 入 ), SDO( 数据输出 ), SCK( 时钟 ), CS( 片选 )。
     倘若能采用 SPI 协议来实现与 SD 卡的通信则能有效降低 BB 的成本。
     发明内容 本发明要解决的技术问题是为了克服现有技术采用 SD BUS 时基带成本高昂的缺 陷, 提供一种成本低廉、 结构简单的采用 GPIO( 通用输入 / 输出 ) 接口模拟 SPI 协议的通信 方法。
     本发明是通过下述技术方案来解决上述技术问题的 :
     一种采用 GPIO 接口模拟 SPI 协议的通信方法, 其特点在于, SD 卡的输出端、 输入 端、 片选端和时钟信号端分别连接至 BB 的 GPIO 接口, 该通信方法包括以下步骤 :
     S1、 SD 卡上电并软件复位 ;
     S2、 BB 以预设时钟极性和时钟相位的 SPI 时序发送 SD 2.0 版本所支持的指令至该 SD 卡以判断 SD 卡为 SD 1.0 版本还是 SD 2.0 版本, 若为 SD 1.0 版本, 进入步骤 S3 ; 若为 SD 2.0 版本, 进入步骤 S4 ;
     S3、 BB 以预设时钟极性和时钟相位的 SPI 时序发送支持 SD 1.0 版本的指令获得 SD 卡的信息以完成 SD 卡的初始化, 并进入步骤 S7 的读写操作 ;
     S4、 BB 以预设时钟极性和时钟相位的 SPI 时序发送 SD 2.0 版本所支持的指令至该 SD 卡以判断 SD 卡为 SD 2.0 的标准版本还是 SD 2.0 的大容量版本, 若为 SD 2.0 的标准版 本, 进入步骤 S5 ; 若为 SD 2.0 的大容量版本, 进入步骤 S6 ;
     S5、 BB 以预设时钟极性和时钟相位的 SPI 时序发送支持 SD 2.0 的标准版本的指令 获得 SD 卡的信息以完成 SD 卡的初始化, 并进入步骤 S7 的读写操作 ;
     S6、 BB 以预设时钟极性和时钟相位的 SPI 时序发送支持 SD 2.0 的大容量版本的指 令获得 SD 卡的信息以完成 SD 卡的初始化, 并进入步骤 S8 的读写操作 ;
     S7、 以 SD 卡的 sector 序号为地址进行读写操作 ;
     S8、 以 SD 卡的 blocksize*sector 序号为地址进行读写操作。
     优选地, 步骤 S1 中 BB 通过发送 SD 标准命令至 SD 卡以完成软件复位。
     优选地, 步骤 S2 中的 SD version2.0 所支持的指令包括 SD 卡的支持电压和 CRC。
     优选地, 步骤 S2 还包括以下步骤 :
     S21、 BB 以预设时钟极性和时钟相位的 SPI 时序发送包括 SD 卡的支持电压和 CRC, 命令至该 SD 卡 ; S22、 BB 根据 SD 卡的返回状态判断 SD 卡的版本, 倘若 BB 超时未收到期望返回数据, 则 SD 卡为 SD 1.0 版本 ; 若 BB 收到的返回值与 SD 2.0 版本所支持的指令返回值不匹配, 则 SD 卡初始化失败 ; 若 BB 收到的返回值与 SD 2.0 版本所支持的指令返回值相匹配, 则 SD 卡 为 SD 2.0 版本。
     优选地, 步骤 S3 还包括以下步骤 :
     S31、 BB 以预设时钟极性和时钟相位的 SPI 时序发送支持电压查询命令至 SD 卡以 查询支持电压 ;
     S32、 BB 以预设时钟极性和时钟相位的 SPI 时序发送 CRC(Cyclical Redundancy Check, 循 环 冗 余 码 校 验 简 称 CRC, 它 是 利 用 除 法 及 余 数 的 原 理 来 作 错 误 侦 测 (Error Detecting) 的 )。发送块长度设置命令至 SD 卡以设置块长度, 附带 CRC 操作 ;
     S33、 BB 获得 SD 卡的信息并完成 SD 卡的初始化。
     优选地, 步骤 S4 中的 SD 2.0 版本所支持的指令包括支持电压查询命令和 SD 卡状 态查询命令。
     优选地, 步骤 S4 还包括以下步骤 :
     S41、 BB 以预设时钟极性和时钟相位的 SPI 时序发送支持电压查询命令至该 SD 卡 以查询 SD 卡的支持电压, 返回的支持电压是否在 SD 卡的支持电压阈值范围内 (SD 卡的支 持电压阈值范围即指 SD 卡硬件所支持的电压范围 ), 若是, 则进入步骤 S42 ; 若否, 则 SD 卡初 始化失败 ;
     S42、 BB 以预设时钟极性和时钟相位的 SPI 时序发送 SD 卡状态查询命令至该 SD 卡 以查询 SD 卡的状态, 返回的状态是否为空闲, 若是, 则进入步骤 S43 ; 若否, 则 SD 卡初始化失 败;
     S43、 BB 以预设时钟极性和时钟相位的 SPI 时序再次发送支持电压查询命令至该 SD 卡以查询 SD 卡的支持电压, 并根据获得的 OCR 寄存器的返回值判断 SD 卡为 SD 2.0 的标准
     版本还是 SD 2.0 的大容量版本。
     优选地, 步骤 S5 还包括以下步骤 :
     S51、 BB 以预设时钟极性和时钟相位的 SPI 时序, 发送块长度设置命令至 SD 卡以设 置块长度, 对应指令包括 CRC ;
     S52、 BB 获得 SD 卡的信息并完成 SD 卡的初始化, 其中 SD 卡的信息包括 SD 卡的容 量、 擦除单位大小、 块长度和块总数。
     优选地, 步骤 S6 还包括以下步骤 :
     S61、 BB 以预设时钟极性和时钟相位的 SPI 时序, 发送块长度设置命令至 SD 卡以设 置块长度, 对应指令包括 CRC ;
     S62、 BB 获得 SD 卡的信息并完成 SD 卡的初始化, 其中 SD 卡的信息包括 SD 卡的容 量、 擦除单位大小、 块长度和块总数。
     本发明的积极进步效果在于 : 本发明提供一种通过 GPIO 口去模拟 SPI 的方式, 实 现调整 SD SPI 协议。主要完成在开始初始化过程中的, BB 同 SD 通讯交互的问题。本发明 的方案中, 以 T 卡为例, T 卡上电后, 按照标准的协议, BB 主动向 T 卡发出 CMD, 和附带的参 数 ( 实际硬件支持 SD 电压值 )。 这样有效的节约了成本, 提高了产品的竞争力, 有助于占有 市场。 附图说明
     图 1 为本发明的采用 GPIO 接口模拟 SPI 协议的通信方法的流程图。具体实施方式
     下面结合附图给出本发明较佳实施例, 以详细说明本发明的技术方案。
     参考图 1, 介绍本发明所述的采用 GPIO 接口模拟 SPI 协议的通信方法, 主要包括以 下步骤 : 首先 GPIO 口模拟发送接收数据, 然后区分 SD 卡的版本, 是 1.0 的标准版还是 2.0 标准版抑或是 2.0 大容量版本, 接着根据所识别的版本进行不同的流程, 初始化以及读写 操作, 具体来说, 本发明中 SD 卡的输出端、 输入端、 片选端和时钟信号端分别连接至 BB 的 GPIO 接口, GPIO 口模拟 SPI 的操作在目前很多平台上面都有用到, 只要对照 SPI 传输模式 的时序图来模拟就行了, 本发明中以时钟极性 0, 时钟相位为 1 为例。SD 的命令、 数据传输, 全部基于 SPI 传输模式的时序图, 所有的设计到发出和接收数据都依据 SPI 传输模式的时 序图来传输。
     如上所述, 本发明中涉及的硬件接口 4 个, 输出端 DOUT、 输入端 DIN、 片选端 CS 和 时钟信号端 SCLK, 在发送一条命令的时候, 用 GPIO 口的拉低拉高来模拟 SPI 传输模式的时 序, 进行数据的传输, 交互。并且, 对 pin 脚的模拟, 为了提高速度, 直接操作 GPIO 口的物理 地址提高速度, 部分操作可以放入内部 RAM( 访问速度更高 ), 这样提高读写、 时钟速度。
     接下来, 对照图 1, 介绍本发明的通信方法, 该通信方法包括以下步骤 :
     步骤 S1、 SD 卡上电并软件复位, 例如 BB 通过发送 SD 标准命令至 SD 卡以完成软件 复位。
     步骤 S2、 BB 以预设时钟极性和时钟相位的 SPI 时序发送 SD 2.0 版本所支持的指 令至该 SD 卡以判断 SD 卡为 SD 1.0 版本还是 SD 2.0 版本, 若为 SD 1.0 版本, 进入步骤 S3 ;若为 SD 2.0 版本, 进入步骤 S4。其中, SD 2.0 版本所支持的指令包括 SD 卡的支持电压和 CRC。举例来说, 步骤 S2 还包括以下步骤 :
     S21、 BB 以预设时钟极性和时钟相位的 SPI 时序发送包括 SD 卡的支持电压和 CRC 的 SD2.0 版本所支持的指令至该 SD 卡 ;
     S22、 BB 根据 SD 卡的返回状态判断 SD 卡的版本, 倘若 BB 超时未收到期待返回数据, 则 SD 卡为 SD 1.0 版本 ; 若 BB 收到的返回值与 SD 2.0 版本所支持的指令返回值不匹配, 则 SD 卡初始化失败 ; 若 BB 收到的返回值与 SD 2.0 版本所支持的指令返回值相匹配, 则 SD 卡 为 SD 2.0 版本。
     步骤 S3、 BB 以预设时钟极性和时钟相位的 SPI 时序发送支持 SD 1.0 版本的指令 获得 SD 卡的信息以完成 SD 卡的初始化, 并进入步骤 S7 的读写操作。具体来说, 步骤 S3 还 包括以下步骤 :
     S31、 BB 以预设时钟极性和时钟相位的 SPI 时序发送支持电压查询命令至 SD 卡以 查询支持电压 ;
     S32、 BB 以预设时钟极性和时钟相位的 SPI 时序发送块长度设置命令至 SD 卡以设 置块长度, 带 CRC( 循环冗余校验码 ) 值 ; S33、 BB 获得 SD 卡的信息并完成 SD 卡的初始化。根据该 SD 卡的信息来做读写操 作、 地址访问、 容量计算等。
     步骤 S4、 BB 以预设时钟极性和时钟相位的 SPI 时序发送 SD 2.0 版本所支持的指 令至该 SD 卡以判断 SD 卡为 SD 2.0 的标准版本还是 SD 2.0 的大容量版本, 若为 SD 2.0 的 标准版本, 进入步骤 S5 ; 若为 SD 2.0 的大容量版本, 进入步骤 S6。其中的 SD2.0 版本所支持 的指令包括支持电压查询命令和 SD 卡状态查询命令。又例如, 步骤 S4 还包括以下步骤 :
     S41、 BB 以预设时钟极性和时钟相位的 SPI 时序发送支持电压查询命令至该 SD 卡 以查询 SD 卡的支持电压, 返回的支持电压是否在 SD 卡的支持电压阈值范围内, 若是, 则进 入步骤 S42 ; 若否, 则 SD 卡初始化失败 ;
     S42、 BB 以预设时钟极性和时钟相位的 SPI 时序发送 SD 卡状态查询命令至该 SD 卡 以查询 SD 卡的状态, 返回的状态是否为空闲, 若是, 则进入步骤 S43 ; 若否, 则 SD 卡初始化失 败;
     S43、 BB 以预设时钟极性和时钟相位的 SPI 时序再次发送支持电压查询命令至该 SD 卡以查询 SD 卡的支持电压, 并根据获得的 OCR 寄存器的返回值判断 SD 卡为 SD 2.0 的标准 版本还是 SD 2.0 的大容量版本。
     步骤 S5、 BB 以预设时钟极性和时钟相位的 SPI 时序发送支持 SD 2.0 的标准版本 的指令获得 SD 卡的信息以完成 SD 卡的初始化, 并进入步骤 S7 的读写操作。其中, 步骤 S5 还包括以下步骤 :
     S51、 BB 以预设时钟极性和时钟相位的 SPI 时序, 发送块长度设置命令至 SD 卡以设 置块长度, 对应指令最后带 CRC 数据 ;
     S52、 BB 获得 SD 卡的信息并完成 SD 卡的初始化, 其中 SD 卡的信息包括 SD 卡的容 量、 擦除单位大小、 块长度和块总数。
     步骤 S6、 BB 以预设时钟极性和时钟相位的 SPI 时序发送支持 SD 2.0 的大容量版 本的指令获得 SD 卡的信息以完成 SD 卡的初始化, 并进入步骤 S8 的读写操作。其中, 步骤
     S6 还包括以下步骤 :
     S61、 BB 以预设时钟极性和时钟相位的 SPI 时序, 发送块长度设置命令至 SD 卡以设 置块长度, 对应指令最后带 CRC 数据 ;
     S62、 BB 获得 SD 卡的信息并完成 SD 卡的初始化, 其中 SD 卡的信息包括 SD 卡的容 量、 擦除单位大小、 块长度和块总数。
     步骤 S7、 以 SD 卡的 sector 序号为地址进行读写操作。
     步骤 S8、 以 SD 卡的 blocksize*sector 序号为地址进行读写操作。
     本发明突破 MTK(MediaTek 承载设备 ) 现有的局限范围, 在不改动硬件、 只需软件 升级的前提下, 扩展 T 卡 (T-Flash 卡, 别名 : MicroSD 卡, 容量范围 : 32MB) 的识别容量。
     虽然以上描述了本发明的具体实施方式, 但是本领域的技术人员应当理解, 这些 仅是举例说明, 本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背 离本发明的原理和实质的前提下, 可以对这些实施方式做出多种变更或修改, 但这些变更 和修改均落入本发明的保护范围。

采用GPIO接口模拟SPI协议的通信方法.pdf_第1页
第1页 / 共9页
采用GPIO接口模拟SPI协议的通信方法.pdf_第2页
第2页 / 共9页
采用GPIO接口模拟SPI协议的通信方法.pdf_第3页
第3页 / 共9页
点击查看更多>>
资源描述

《采用GPIO接口模拟SPI协议的通信方法.pdf》由会员分享,可在线阅读,更多相关《采用GPIO接口模拟SPI协议的通信方法.pdf(9页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102654857 A(43)申请公布日 2012.09.05CN102654857A*CN102654857A*(21)申请号 201110052714.3(22)申请日 2011.03.04G06F 13/42(2006.01)(71)申请人希姆通信息技术(上海)有限公司地址 200335 上海市长宁区金钟路633号(72)发明人徐红芳(74)专利代理机构上海智信专利代理有限公司 31002代理人薛琦(54) 发明名称采用GPIO接口模拟SPI协议的通信方法(57) 摘要本发明公开了一种采用GPIO接口模拟SPI协议的通信方法包括:S1、SD卡上电并软件复位;S2。

2、、判断SD卡为SD 1.0还是SD 2.0,若为SD 1.0,进入步骤S3;若为SD 2.0,进入步骤S4;S3、获得SD 1.0的信息完成初始化并进入步骤;S4、判断SD卡为SD 2.0标准版还是SD 2.0大容量版本,若为SD 2.0标准版,进入步骤S5;若为SD 2.0大容量版,进入步骤S6;S5、获得SD 2.0标准版的信息完成初始化并进入步骤S7;S6、获得SD 2.0大容量版本的信息完成初始化,并进入步骤S8;S7、以sector序号为地址读写操作;S8、以blocksize*sector序号为地址进行读写操作。本发明提供通过GPIO口去模拟SPI的方式,实现调整SD SPI协议,。

3、有效的节约了成本,提高了产品的竞争力,有助于占有市场。(51)Int.Cl.权利要求书2页 说明书5页 附图1页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书 2 页 说明书 5 页 附图 1 页1/2页21.一种采用GPIO接口模拟SPI协议的通信方法,其特征在于,SD卡的输出端、输入端、片选端和时钟信号端分别连接至BB的GPIO接口,该通信方法包括以下步骤:S1、SD卡上电并软件复位;S2、BB以预设时钟极性和时钟相位的SPI时序发送SD 2.0版本所支持的指令判断命令至该SD卡以判断SD卡为SD 1.0版本还是SD 2.0版本,若为SD 1.0版本,进入步骤S3;若为。

4、SD 2.0版本,进入步骤S4;S3、BB以预设时钟极性和时钟相位的SPI时序发送支持SD 1.0版本的指令获得SD卡的信息以完成SD卡的初始化,并进入步骤S7的读写操作;S4、BB以预设时钟极性和时钟相位的SPI时序发送SD2.0版本所支持的指令判断命令至该SD卡以判断SD卡为SD 2.0的标准版本还是SD 2.0的大容量版本,若为SD 2.0的标准版本,进入步骤S5;若为SD 2.0的大容量版本,进入步骤S6;S5、BB以预设时钟极性和时钟相位的SPI时序发送支持SD 2.0的标准版本的指令获得SD卡的信息以完成SD卡的初始化,并进入步骤S7的读写操作;S6、BB以预设时钟极性和时钟相位的。

5、SPI时序发送支持SD 2.0的大容量版本的指令获得SD卡的信息以完成SD卡的初始化,并进入步骤S8的读写操作;S7、以SD卡的sector序号为地址进行读写操作;S8、以SD卡的blocksize*sector序号为地址进行读写操作。2.如权利要求1所述的采用GPIO接口模拟SPI协议的通信方法,其特征在于,步骤S1中BB通过发送SD标准命令至SD卡以完成软件复位,对应的命令里面都带CRC。3.如权利要求1所述的采用GPIO接口模拟SPI协议的通信方法,其特征在于,步骤S2中的SD 2.0版本所支持的指令判断命令包括SD卡的支持电压,对应的命令里面都带CRC。4.如权利要求3所述的采用GPI。

6、O接口模拟SPI协议的通信方法,其特征在于,步骤S2还包括以下步骤:S21、BB以预设时钟极性和时钟相位的SPI时序发送包括SD卡的支持电压附带CRC的SD 2.0版本所支持的指令至该SD卡;S22、BB根据SD卡的返回状态判断SD卡的版本,倘若BB在一定时间内未收到期待返回数据,则SD卡为SD 1.0版本;若BB收到的返回值与SD2.0版本所支持的指令返回值不匹配,则SD卡初始化失败;若BB收到的返回值与SD2.0版本所支持的指令返回值相匹配,则SD卡为SD 2.0版本。5.如权利要求1所述的采用GPIO接口模拟SPI协议的通信方法,其特征在于,步骤S3还包括以下步骤:S31、BB以预设时钟。

7、极性和时钟相位的SPI时序发送支持电压查询命令至SD卡以查询支持电压;S32、BB以预设时钟极性和时钟相位的SPI时序,发送块长度设置命令至SD卡以设置块长度,每个指令里面后缀都带CRC;S33、BB获得SD卡的信息并完成SD卡的初始化。6.如权利要求1所述的采用GPIO接口模拟SPI协议的通信方法,其特征在于,步骤S4中的SD2.0版本所支持的指令支持电压查询命令和SD卡状态查询命令。7.如权利要求6所述的采用GPIO接口模拟SPI协议的通信方法,其特征在于,步骤S4权 利 要 求 书CN 102654857 A2/2页3还包括以下步骤:S41、BB以预设时钟极性和时钟相位的SPI时序发送支。

8、持电压查询命令至该SD卡以查询SD卡的支持电压,返回的支持电压是否在SD卡的支持电压阈值范围内,若是,则进入步骤S42;若否,则SD卡初始化失败;S42、BB以预设时钟极性和时钟相位的SPI时序发送SD卡状态查询命令至该SD卡以查询SD卡的状态,返回的状态是否为空闲,若是,则进入步骤S43;若否,则SD卡初始化失败;S43、BB以预设时钟极性和时钟相位的SPI时序再次发送支持电压查询命令至该SD卡以查询SD卡的支持电压,并根据获得的OCR寄存器的返回值判断SD卡为SD 2.0的标准版本还是SD 2.0的大容量版本。8.如权利要求1所述的采用GPIO接口模拟SPI协议的通信方法,其特征在于,步骤。

9、S5还包括以下步骤:S51、BB以预设时钟极性和时钟相位的SPI时序,发送块长度设置命令至SD卡以设置块长度,指令带CRC信息;S52、BB获得SD卡的信息并完成SD卡的初始化,其中SD卡的信息包括SD卡的容量、擦除单位大小、块长度和总块数。9.如权利要求1所述的采用GPIO接口模拟SPI协议的通信方法,其特征在于,步骤S6还包括以下步骤:S61、BB以预设时钟极性和时钟相位的SPI时序,发送块长度设置命令至SD卡以设置块长度,指令带CRC信息;S62、BB获得SD卡的信息并完成SD卡的初始化,其中SD卡的信息包括SD卡的容量、擦除单位大小、块长度和总块数。权 利 要 求 书CN 102654。

10、857 A1/5页4采用 GPIO 接口模拟 SPI 协议的通信方法技术领域0001 本发明涉及一种采用GPIO接口模拟SPI协议的通信方法,特别是涉及一种采用GPIO接口模拟SPI协议与SD卡通信的通信方法。背景技术0002 目前市场上面所使用的SD卡(Secure Digital Memory Card,安全数码卡)主要包括两种方式,一种是SD BUS(SD总线)和SPI BUS(SPI总线),前一种一般会做成SD CONTROL集成,这样的BB(base band基带)一般会比较贵。0003 SPI是一种标准的四线同步双向串行总线。SPI是英语Serial Peripheral inte。

11、rface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如AT91RM9200。SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/。

12、D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(用于单向传输时,也就是半双工方式)。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。0004 倘若能。

13、采用SPI协议来实现与SD卡的通信则能有效降低BB的成本。发明内容0005 本发明要解决的技术问题是为了克服现有技术采用SD BUS时基带成本高昂的缺陷,提供一种成本低廉、结构简单的采用GPIO(通用输入/输出)接口模拟SPI协议的通信方法。0006 本发明是通过下述技术方案来解决上述技术问题的:0007 一种采用GPIO接口模拟SPI协议的通信方法,其特点在于,SD卡的输出端、输入端、片选端和时钟信号端分别连接至BB的GPIO接口,该通信方法包括以下步骤:0008 S1、SD卡上电并软件复位;0009 S2、BB以预设时钟极性和时钟相位的SPI时序发送SD 2.0版本所支持的指令至该SD卡以。

14、判断SD卡为SD 1.0版本还是SD 2.0版本,若为SD 1.0版本,进入步骤S3;若为SD 2.0版本,进入步骤S4;说 明 书CN 102654857 A2/5页50010 S3、BB以预设时钟极性和时钟相位的SPI时序发送支持SD 1.0版本的指令获得SD卡的信息以完成SD卡的初始化,并进入步骤S7的读写操作;0011 S4、BB以预设时钟极性和时钟相位的SPI时序发送SD 2.0版本所支持的指令至该SD卡以判断SD卡为SD 2.0的标准版本还是SD 2.0的大容量版本,若为SD 2.0的标准版本,进入步骤S5;若为SD 2.0的大容量版本,进入步骤S6;0012 S5、BB以预设时钟。

15、极性和时钟相位的SPI时序发送支持SD 2.0的标准版本的指令获得SD卡的信息以完成SD卡的初始化,并进入步骤S7的读写操作;0013 S6、BB以预设时钟极性和时钟相位的SPI时序发送支持SD 2.0的大容量版本的指令获得SD卡的信息以完成SD卡的初始化,并进入步骤S8的读写操作;0014 S7、以SD卡的sector序号为地址进行读写操作;0015 S8、以SD卡的blocksize*sector序号为地址进行读写操作。0016 优选地,步骤S1中BB通过发送SD标准命令至SD卡以完成软件复位。0017 优选地,步骤S2中的SD version2.0所支持的指令包括SD卡的支持电压和CRC。

16、。0018 优选地,步骤S2还包括以下步骤:0019 S21、BB以预设时钟极性和时钟相位的SPI时序发送包括SD卡的支持电压和CRC,命令至该SD卡;0020 S22、BB根据SD卡的返回状态判断SD卡的版本,倘若BB超时未收到期望返回数据,则SD卡为SD 1.0版本;若BB收到的返回值与SD 2.0版本所支持的指令返回值不匹配,则SD卡初始化失败;若BB收到的返回值与SD 2.0版本所支持的指令返回值相匹配,则SD卡为SD 2.0版本。0021 优选地,步骤S3还包括以下步骤:0022 S31、BB以预设时钟极性和时钟相位的SPI时序发送支持电压查询命令至SD卡以查询支持电压;0023 S。

17、32、BB以预设时钟极性和时钟相位的SPI时序发送CRC(Cyclical Redundancy Check,循环冗余码校验简称CRC,它是利用除法及余数的原理来作错误侦测(Error Detecting)的)。发送块长度设置命令至SD卡以设置块长度,附带CRC操作;0024 S33、BB获得SD卡的信息并完成SD卡的初始化。0025 优选地,步骤S4中的SD 2.0版本所支持的指令包括支持电压查询命令和SD卡状态查询命令。0026 优选地,步骤S4还包括以下步骤:0027 S41、BB以预设时钟极性和时钟相位的SPI时序发送支持电压查询命令至该SD卡以查询SD卡的支持电压,返回的支持电压是否。

18、在SD卡的支持电压阈值范围内(SD卡的支持电压阈值范围即指SD卡硬件所支持的电压范围),若是,则进入步骤S42;若否,则SD卡初始化失败;0028 S42、BB以预设时钟极性和时钟相位的SPI时序发送SD卡状态查询命令至该SD卡以查询SD卡的状态,返回的状态是否为空闲,若是,则进入步骤S43;若否,则SD卡初始化失败;0029 S43、BB以预设时钟极性和时钟相位的SPI时序再次发送支持电压查询命令至该SD卡以查询SD卡的支持电压,并根据获得的OCR寄存器的返回值判断SD卡为SD 2.0的标准说 明 书CN 102654857 A3/5页6版本还是SD 2.0的大容量版本。0030 优选地,步。

19、骤S5还包括以下步骤:0031 S51、BB以预设时钟极性和时钟相位的SPI时序,发送块长度设置命令至SD卡以设置块长度,对应指令包括CRC;0032 S52、BB获得SD卡的信息并完成SD卡的初始化,其中SD卡的信息包括SD卡的容量、擦除单位大小、块长度和块总数。0033 优选地,步骤S6还包括以下步骤:0034 S61、BB以预设时钟极性和时钟相位的SPI时序,发送块长度设置命令至SD卡以设置块长度,对应指令包括CRC;0035 S62、BB获得SD卡的信息并完成SD卡的初始化,其中SD卡的信息包括SD卡的容量、擦除单位大小、块长度和块总数。0036 本发明的积极进步效果在于:本发明提供一。

20、种通过GPIO口去模拟SPI的方式,实现调整SD SPI协议。主要完成在开始初始化过程中的,BB同SD通讯交互的问题。本发明的方案中,以T卡为例,T卡上电后,按照标准的协议,BB主动向T卡发出CMD,和附带的参数(实际硬件支持SD电压值)。这样有效的节约了成本,提高了产品的竞争力,有助于占有市场。附图说明0037 图1为本发明的采用GPIO接口模拟SPI协议的通信方法的流程图。具体实施方式0038 下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。0039 参考图1,介绍本发明所述的采用GPIO接口模拟SPI协议的通信方法,主要包括以下步骤:首先GPIO口模拟发送接收数据,然后区分。

21、SD卡的版本,是1.0的标准版还是2.0标准版抑或是2.0大容量版本,接着根据所识别的版本进行不同的流程,初始化以及读写操作,具体来说,本发明中SD卡的输出端、输入端、片选端和时钟信号端分别连接至BB的GPIO接口,GPIO口模拟SPI的操作在目前很多平台上面都有用到,只要对照SPI传输模式的时序图来模拟就行了,本发明中以时钟极性0,时钟相位为1为例。SD的命令、数据传输,全部基于SPI传输模式的时序图,所有的设计到发出和接收数据都依据SPI传输模式的时序图来传输。0040 如上所述,本发明中涉及的硬件接口4个,输出端DOUT、输入端DIN、片选端CS和时钟信号端SCLK,在发送一条命令的时候。

22、,用GPIO口的拉低拉高来模拟SPI传输模式的时序,进行数据的传输,交互。并且,对pin脚的模拟,为了提高速度,直接操作GPIO口的物理地址提高速度,部分操作可以放入内部RAM(访问速度更高),这样提高读写、时钟速度。0041 接下来,对照图1,介绍本发明的通信方法,该通信方法包括以下步骤:0042 步骤S1、SD卡上电并软件复位,例如BB通过发送SD标准命令至SD卡以完成软件复位。0043 步骤S2、BB以预设时钟极性和时钟相位的SPI时序发送SD 2.0版本所支持的指令至该SD卡以判断SD卡为SD 1.0版本还是SD 2.0版本,若为SD 1.0版本,进入步骤S3;说 明 书CN 1026。

23、54857 A4/5页7若为SD 2.0版本,进入步骤S4。其中,SD 2.0版本所支持的指令包括SD卡的支持电压和CRC。举例来说,步骤S2还包括以下步骤:0044 S21、BB以预设时钟极性和时钟相位的SPI时序发送包括SD卡的支持电压和CRC的SD2.0版本所支持的指令至该SD卡;0045 S22、BB根据SD卡的返回状态判断SD卡的版本,倘若BB超时未收到期待返回数据,则SD卡为SD 1.0版本;若BB收到的返回值与SD 2.0版本所支持的指令返回值不匹配,则SD卡初始化失败;若BB收到的返回值与SD 2.0版本所支持的指令返回值相匹配,则SD卡为SD 2.0版本。0046 步骤S3、。

24、BB以预设时钟极性和时钟相位的SPI时序发送支持SD 1.0版本的指令获得SD卡的信息以完成SD卡的初始化,并进入步骤S7的读写操作。具体来说,步骤S3还包括以下步骤:0047 S31、BB以预设时钟极性和时钟相位的SPI时序发送支持电压查询命令至SD卡以查询支持电压;0048 S32、BB以预设时钟极性和时钟相位的SPI时序发送块长度设置命令至SD卡以设置块长度,带CRC(循环冗余校验码)值;0049 S33、BB获得SD卡的信息并完成SD卡的初始化。根据该SD卡的信息来做读写操作、地址访问、容量计算等。0050 步骤S4、BB以预设时钟极性和时钟相位的SPI时序发送SD 2.0版本所支持的。

25、指令至该SD卡以判断SD卡为SD 2.0的标准版本还是SD 2.0的大容量版本,若为SD 2.0的标准版本,进入步骤S5;若为SD 2.0的大容量版本,进入步骤S6。其中的SD2.0版本所支持的指令包括支持电压查询命令和SD卡状态查询命令。又例如,步骤S4还包括以下步骤:0051 S41、BB以预设时钟极性和时钟相位的SPI时序发送支持电压查询命令至该SD卡以查询SD卡的支持电压,返回的支持电压是否在SD卡的支持电压阈值范围内,若是,则进入步骤S42;若否,则SD卡初始化失败;0052 S42、BB以预设时钟极性和时钟相位的SPI时序发送SD卡状态查询命令至该SD卡以查询SD卡的状态,返回的状。

26、态是否为空闲,若是,则进入步骤S43;若否,则SD卡初始化失败;0053 S43、BB以预设时钟极性和时钟相位的SPI时序再次发送支持电压查询命令至该SD卡以查询SD卡的支持电压,并根据获得的OCR寄存器的返回值判断SD卡为SD 2.0的标准版本还是SD 2.0的大容量版本。0054 步骤S5、BB以预设时钟极性和时钟相位的SPI时序发送支持SD 2.0的标准版本的指令获得SD卡的信息以完成SD卡的初始化,并进入步骤S7的读写操作。其中,步骤S5还包括以下步骤:0055 S51、BB以预设时钟极性和时钟相位的SPI时序,发送块长度设置命令至SD卡以设置块长度,对应指令最后带CRC数据;0056。

27、 S52、BB获得SD卡的信息并完成SD卡的初始化,其中SD卡的信息包括SD卡的容量、擦除单位大小、块长度和块总数。0057 步骤S6、BB以预设时钟极性和时钟相位的SPI时序发送支持SD 2.0的大容量版本的指令获得SD卡的信息以完成SD卡的初始化,并进入步骤S8的读写操作。其中,步骤说 明 书CN 102654857 A5/5页8S6还包括以下步骤:0058 S61、BB以预设时钟极性和时钟相位的SPI时序,发送块长度设置命令至SD卡以设置块长度,对应指令最后带CRC数据;0059 S62、BB获得SD卡的信息并完成SD卡的初始化,其中SD卡的信息包括SD卡的容量、擦除单位大小、块长度和块。

28、总数。0060 步骤S7、以SD卡的sector序号为地址进行读写操作。0061 步骤S8、以SD卡的blocksize*sector序号为地址进行读写操作。0062 本发明突破MTK(MediaTek承载设备)现有的局限范围,在不改动硬件、只需软件升级的前提下,扩展T卡(T-Flash卡,别名:MicroSD卡,容量范围:32MB)的识别容量。0063 虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。说 明 书CN 102654857 A1/1页9图1说 明 书 附 图CN 102654857 A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1