《采用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。