CN103631740B - Sd卡在spi模式下传输自适应字节对齐的电路 - Google Patents
Sd卡在spi模式下传输自适应字节对齐的电路 Download PDFInfo
- Publication number
- CN103631740B CN103631740B CN201210305987.9A CN201210305987A CN103631740B CN 103631740 B CN103631740 B CN 103631740B CN 201210305987 A CN201210305987 A CN 201210305987A CN 103631740 B CN103631740 B CN 103631740B
- Authority
- CN
- China
- Prior art keywords
- selection signal
- chip selection
- packet
- card
- output end
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明公开了一种SD卡在SPI模式下传输自适应字节对齐的电路,包括:一命令包接收检测电路,一数据包接收检测电路,一或门,一片选信号计数器,一响应包发送控制电路,一数据包发送控制电路,一安全数码卡SD总线控制电路。本发明使SD卡能够自适应地与片选信号字节对齐,提高SD卡的兼容性。
Description
技术领域
本发明涉及SD(安全数码卡Secure Digital Memory Card)卡领域,特别是涉及一种SD卡在SPI(Serial Peripheral Interface:串行外围设备接口)模式下传输自适应字节对齐的方法。本发明还涉及一种用于实现所述方法的硬件电路。
背景技术
SD卡被广泛应用于便携式设备的数据存储。SD卡通讯系统包括SD卡(从属设备,用于接收命令、数据,并返回响应)和SD主机(主设备,用于发起传输,发送命令、数据到SD总线)。根据SD协议规定,SD卡能够按照SPI模式进行通讯。在SPI模式下,信息传输需要四根信号线,分别是:
CS,SD主机发送给SD卡的片选信号;
CLK,SD主机发送给SD卡的时钟信号;
DataIn,SD主机发送给SD卡的比特流信号,包括命令、写数据等;
DataOut,SD卡返还给SD主机的比特流信号,包括响应、状态字、读数据等。
SD卡的SPI传输模式如图1所示,对于SD卡来说,DataIn信号为单向输入信号,用来接收来自SD主机的命令、数据。其中,命令包为SD主机发送给SD卡的命令,数据包为SD主机发送给SD卡的数据。DataOut信号为单向输出信号,用来返回响应、读数据、循环冗余校验状态字给SD主机。其中,响应包为SD卡返回给SD主机的响应,校验状态字和忙状态为SD卡返回给SD主机的数据循环冗余校验状态字和忙状态。
具体传输过程为:SD主机发送命令给SD卡,SD卡接收到命令后返回响应,并且根据该命令进行相应的操作。如果是写数据命令,SD主机在发送命令并收到SD卡的响应之后,开始发送写数据,SD卡在接收完一个完整的数据包(512个字节)之后返回一个循环冗余码校验状态字,以此来告诉SD主机该数据包是否正确接收。如果是读数据命令,SD卡在接收到命令之后先返回响应,然后发送读数据给SD主机。在读数据的最后部分为一个循环冗余码,SD主机以此判断是否正确接收到了读数据。
SPI模式的一个重要特征是字节(8个时钟周期)对齐传输,就是说所有在SD主机与SD卡之间传输的命令、响应、数据、循环冗余码校验状态字等信息包都必须与片选信号按字节对齐(起始位对应的计数器值为0,结束位对应的计数器值为7)。如图2所示,当片选信号拉低时,片选信号计数器按时钟信号上升沿开始计数,只有在每8个时钟周期的起始位置,SD卡才能够采样总线上的命令、数据,发送响应。DataIn信号线上收到命令包的起始位(“1”比特低电平,“a”位置箭头所指位置)时,片选信号计数器的值为0,并开始计数;当收到命令包结束位(“1”比特高电平,“b”位置箭头所指位置)时,片选信号计数器的值为7,结束计数。可见,该命令包(长度为48比特)是与片选信号以字节(8个时钟周期)的整数倍对齐的。同样地,SD卡返回的响应、数据等传输包也是与片选信号以字节的整数倍对齐的方式传输的。
但是,目前市场上存在的很多SD主机并没有严格按照协议所规定的那样,以与片选信号字节对齐的方式发送命令或者数据。如图3所示,当DataIn信号线上收到命令包的起始位(“1”比特低电平,“c”位置箭头所指位置)时,片选信号计数器的计数值为3;当收到命令的结束位(“1”比特高电平,“d”位置箭头所指位置)时,片选信号计数器的计数值为2;可见,该命令包(长度为48比特)并没有与片选信号以字节(8个时钟周期)对齐的方式传输。
这就导致了严格按照协议设计的SD卡无法正确接收此类SD主机发送的信息包,从而无法正确地通讯。因而,该SD卡产品在兼容性上就会存在较大的缺陷。
发明内容
本发明要解决的技术问题是提供一种SD卡在SPI模式下传输自适应字节对齐的电路,使SD卡能够自适应地与片选信号字节对齐,提高SD卡的兼容性。
为解决上述技术问题,本发明的SD卡在SPI模式下传输自适应字节对齐的电路,包括:
一命令包接收检测电路,其输入端与SD总线控制电路的输出端相连接,用于接收SD主机发送的命令包,当检测到命令包结束位时,产生一个复位信号,该复位信号的宽度为一个SD时钟周期;
一数据包接收检测电路,其输入端与SD总线控制电路的输出端相连接,用于接收SD主机发送的数据包,当检测到数据包结束位时,产生一个复位信号,该复位信号的宽度为一个SD时钟周期;
一或门,其一输入端与所述命令包接收检测电路的输出端相连接,另一输入端与所述数据包接收检测电路的输出端相连接;
一片选信号计数器,为3比特,其计数输入端输入片选信号,时钟端输入安全数码卡SD时钟信号,复位端与所述或门的输出端相连接;当所述片选信号拉低时开始计数;当接收到命令和数据的结束位时,该片选信号计数器被复位并且从0开始重新计数;当片选信号拉高时,该片选信号计数器被复位并且停止计数;所述命令包接收检测电路和数据包接收检测电路分别产生的两个复位信号经过或门控制,复位该片选信号计数器;
一响应包发送控制电路,其输入端与所述片选信号计数器的输出端相连接;当需要返回响应时,检测该片选信号计数器的计数值,只有当计数值为0时才开始发送响应包的起始位;
一数据包发送控制电路,其输入端与所述片选信号计数器的输出端相连接;当需要返回数据时,先检测片选信号计数器的计数值,只有当计数值为0时才开始发送数据包的起始位;
SD总线控制电路,其一输入端与所述响应包发送控制电路的输出端相连接,另一输入端与所述数据包发送控制电路的输出端相连接,用来控制SD四根传输总线的数据接收与发送。
本发明能使SD卡在SPI传输模式下,自适应地调整命令、响应以及数据与片选信号按字节(8个SD时钟周期)对齐。当SD主机不遵循协议的规定,按非字节对齐的方式发送命令、数据时,SD卡能够自适应地调整其对齐方式,正确地接受非对齐的命令、数据,并且以对齐的方式正确地返回响应、循环冗余校验状态字等信息包。降低了对SD主机的要求,适用于更多不同类型的SD主机,提高了SD卡的兼容性,使产品更具市场竞争力。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
图1是SPI模式下的信息包传输方式示意图;
图2是命令包与片选信号对齐传输示意图;
图3是命令包与片选信号非对齐传输示意图;
图4是实现本发明方法的硬件实现电路一实施例原理框图;
图5是接收完命令包结束位时对计数器清零的波形图;
图6是字节对齐方式发送数据循环冗余校验状态字的波形图。
具体实施方式
所述SD卡在SPI模式下传输自适应字节对齐的方法采用一个“3”比特的片选信号计数器,当片选信号拉低(即片选信号有效)时,该片选信号计数器开始计数;当片选信号拉高(即片选信号无效)时,该片选信号计数器被复位并且停止计数。SD卡在接收命令、数据时并不要求它们与计数器值以字节严格对齐,只是根据命令、数据的起始位、特征值以及比特长度来判断是否开始接收。
在接收到命令、数据的结束位时,对所述片选信号计数器进行清零,使其从零开始继续重新计数。SD卡在返回响应、数据、校验状态字时,在片选信号计数器值为0时,才发送返回信息包的起始位。在所述片选计数器值为7时,正好发送完信息包的结束位。也就是说无论SD主机发送的信息包是否与片选信号按字节对齐,SD卡都把它们正确接收下来;当SD卡返回信息包时,严格遵守信息包与片选信号按字节对齐的规定。
参见图4所示,实现所述SD卡在SPI模式下传输自适应字节对齐的方法的硬件电路,包括:
一命令包接收检测电路,其输入端与SD总线控制电路的输出端相连接,用于接收SD主机发送的命令包,当检测到命令包结束位时,产生一个复位信号复位所述片选信号计数器,该复位信号的宽度为一个SD时钟周期。
一数据包接收检测电路,其输入端与SD总线控制电路的输出端相连接,用于接收SD主机发送的数据包,当检测到数据包结束位时,产生一个复位信号复位所述片选信号计数器,该复位信号的宽度为一个安全数码卡SD时钟周期。
一或门,其一输入端与所述命令包接收检测电路的输出端相连接,另一输入端与所述数据包接收检测电路的输出端相连接。
一片选信号计数器,为3比特,其计数输入端EN输入片选信号CS,时钟端CK输入SD时钟信号,复位端R与所述或门的输出端相连接;当所述片选信号拉低时开始计数;当接收到命令和数据的结束位时,该片选信号计数器被复位并且从0开始重新计数;当片选信号拉高时,该片选信号计数器被复位并且停止计数;所述命令包接收检测电路和数据包接收检测电路分别产生的两个复位信号经过或门控制,复位该片选信号计数器。
一响应包发送控制电路,其输入端与所述片选信号计数器的输出端相连接;当需要返回响应时,检测该片选信号计数器的计数值,只有当计数值为0时才开始发送响应包的起始位;也就是说响应包与片选信号严格按照字节对齐。
一数据包发送控制电路,其输入端与所述片选信号计数器的输出端相连接;当需要返回数据时,先检测片选信号计数器的计数值,只有当计数值为0时才开始发送数据包的起始位;也就是说数据包与片选信号严格按照字节对齐。
SD总线控制电路,其一输入端与所述响应包发送控制电路的输出端相连接,另一输入端与所述数据包发送控制电路的输出端相连接,用来控制SD四根传输总线的数据接收与发送。
本发明在原SD卡产品基本架构不变的前提下,以较小的硬件改动,使得SD卡能够自适应地处理字节对齐传输,解决了非对齐情况下传输包的正确传输。
SD主机拉低片选信号后开始发送命令、数据包后,SD卡片信号选计数器在片选信号拉低时开始计数;命令、数据接收检测电路分别判断出何时为命令、数据的起始位,开始接收命令数据;何时为命令、数据的结束位;当收到结束位时,所述命令包接收检测电路和数据包接收检测电路分别发出复位信号,该复位信号清零片选信号计数器(参见图5中“e”位置箭头所指位置),使其从0开始重新计数。
当SD卡需要返回响应、数据、循环冗余码校验状态字时,在片选计数器值为0的时候发送上述信息包的起始位(参见图6,其中“f”位置箭头所指位置为循环冗余码校验状态字起始位),在片选计数器值为7的时候发送上述信息包的结束位(参见图6,其中“g”位置箭头所指位置为循环冗余码校验状态字结束位),使其与片选信号符合字节(8个SD时钟周期)对齐的要求。图6中“h”位置箭头所指位置为SD卡处于忙状态,DataOut信号被拉低。
综上所述,片选信号计数器在接收到命令、数据的结束位时被复位并开始重新计数。当返回响应、读数据、循环冗余码校验状态字时,严格按照与片选信号字节对齐的规定发送。这样,从SD主机所发送的命令、数据的结束位开始,一直到SD卡返回的信息包的结束位为止,这期间所有的信息包都是以与片选信号字节对齐的方式传输的。这样,SD卡就具有自适应的能力,能够调节SD总线上传输的信息包的对齐方式,达到了设计目的。
以上通过具体实施方式和实施例对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。
Claims (1)
1.一种安全数码卡SD在串行外围设备接口SPI传输模式下传输自适应字节对齐的电路,其特征在于,包括:
一命令包接收检测电路,其输入端与安全数码卡SD总线控制电路的输出端相连接,用于接收安全数码卡SD主机发送的命令包,当检测到命令包结束位时,产生一个复位信号,该复位信号的宽度为一个安全数码卡SD时钟周期;
一数据包接收检测电路,其输入端与安全数码卡SD总线控制电路的输出端相连接,用于接收安全数码卡SD主机发送的数据包,当检测到数据包结束位时,产生一个复位信号,该复位信号的宽度为一个安全数码卡SD时钟周期;
一或门,其一输入端与所述命令包接收检测电路的输出端相连接,另一输入端与所述数据包接收检测电路的输出端相连接;
一片选信号计数器,为3比特,其计数输入端输入片选信号,时钟端输入安全数码卡SD时钟信号,复位端与所述或门的输出端相连接;当所述片选信号拉低时开始计数;当接收到命令和数据的结束位时,该片选信号计数器被复位并且从0开始重新计数;当片选信号拉高时,该片选信号计数器被复位并且停止计数;所述命令包接收检测电路和数据包接收检测电路分别产生的两个复位信号经过或门控制,复位该片选信号计数器;
一响应包发送控制电路,其输入端与所述片选信号计数器的输出端相连接;当需要返回响应时,检测该片选信号计数器的计数值,只有当计数值为0时才开始发送响应包的起始位;
一数据包发送控制电路,其输入端与所述片选信号计数器的输出端相连接;当需要返回数据时,先检测片选信号计数器的计数值,只有当计数值为0时才开始发送数据包的起始位;
安全数码卡SD总线控制电路,其一输入端与所述响应包发送控制电路的输出端相连接,另一输入端与所述数据包发送控制电路的输出端相连接,用来控制安全数码卡SD四根传输总线的数据接收与发送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210305987.9A CN103631740B (zh) | 2012-08-24 | 2012-08-24 | Sd卡在spi模式下传输自适应字节对齐的电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210305987.9A CN103631740B (zh) | 2012-08-24 | 2012-08-24 | Sd卡在spi模式下传输自适应字节对齐的电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103631740A CN103631740A (zh) | 2014-03-12 |
CN103631740B true CN103631740B (zh) | 2018-02-13 |
Family
ID=50212821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210305987.9A Active CN103631740B (zh) | 2012-08-24 | 2012-08-24 | Sd卡在spi模式下传输自适应字节对齐的电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103631740B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104778146B (zh) * | 2015-04-17 | 2017-12-22 | 中国科学院半导体研究所 | 基于spi模式的可热插拔sd卡数据记录仪及相应的方法 |
CN109408447A (zh) * | 2018-12-11 | 2019-03-01 | 北京地平线机器人技术研发有限公司 | 一种基于spi的数据传输方法、装置及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101089831A (zh) * | 2006-06-14 | 2007-12-19 | 普天信息技术研究院 | 一种提高存储卡数据写入速度的方法 |
CN102142093A (zh) * | 2011-03-24 | 2011-08-03 | 青岛海信移动通信技术股份有限公司 | 一种存储卡操作方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006333239A (ja) * | 2005-05-27 | 2006-12-07 | Nec Electronics Corp | インタフェース装置と通信制御方法 |
-
2012
- 2012-08-24 CN CN201210305987.9A patent/CN103631740B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101089831A (zh) * | 2006-06-14 | 2007-12-19 | 普天信息技术研究院 | 一种提高存储卡数据写入速度的方法 |
CN102142093A (zh) * | 2011-03-24 | 2011-08-03 | 青岛海信移动通信技术股份有限公司 | 一种存储卡操作方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103631740A (zh) | 2014-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100366029C (zh) | 通信控制器、主机端控制器、通信设备、通信系统和方法 | |
CN104811273B (zh) | 一种高速单总线通信的实现方法 | |
US20120290761A1 (en) | USB Converter and Related Method | |
CN102262572B (zh) | 一种带crc校验功能的iic总线接口控制器 | |
CN102780705B (zh) | Ethernet-CAN协议转换器 | |
CN101076788A (zh) | 通信控制用的双向串行接口 | |
CN104750588A (zh) | 一种基于串口通信的压力测试方法 | |
CN103678211B (zh) | Usb接口的信号传输方法及其装置 | |
CN102073611B (zh) | 一种i2c总线控制系统及方法 | |
CN108011692A (zh) | 一种用于单片机的数据通信方法 | |
Mahat | Design of a 9-bit UART module based on Verilog HDL | |
CN108390752A (zh) | 信号接收方法 | |
CN104317762A (zh) | 一种fpga自适应控制rs485芯片收发方向的方法 | |
CN103631740B (zh) | Sd卡在spi模式下传输自适应字节对齐的电路 | |
US8001292B2 (en) | Data transfer controlling device and IC card | |
US20160373238A1 (en) | Independent UART BRK Detection | |
CN103107862B (zh) | 逻辑器件及其mdio数据发送方法 | |
CN105553628B (zh) | 一种串行通讯波特率检测方法及装置 | |
CN113792003A (zh) | 单总线通信单元、系统及方法 | |
CN103268301B (zh) | 一种自动流的半双工uart接口电路 | |
CN104735551B (zh) | Advb接收容错及处理方法 | |
CN102521197A (zh) | 一种利用低成本mcu的uart实现iso7816协议的方法 | |
CN106796568A (zh) | 具有内建流控制的无时钟双数据率链路 | |
CN109144937B (zh) | 一种多路串口高可靠性传输方法 | |
US20110087812A1 (en) | Multi-master bi-directional i2c bus buffer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |