补偿安全数码卡的延长线引起的延迟的方法及装置的制造方法

文档序号:10725798阅读:316来源:国知局
补偿安全数码卡的延长线引起的延迟的方法及装置的制造方法
【专利摘要】本发明公开了一种补偿安全数码卡的延长线引起的延迟的方法及装置。方法包括:经由延长线对安全数码卡执行预设次数的通信操作,若接收到安全数据卡返回的正确响应,则记录通信操作对应的状态值为第一数值,若未接收到安全数据卡返回的正确响应,则记录通信操作对应的状态值为第二数值;查找状态值连续为第一数值的最长数据段;将位于最长数据段的中间位置的状态值所对应的通信操作的延迟值作为最佳延迟值;将最佳延迟值设置为安全数码卡的源时钟和采样时钟的相位差,以补偿由安全数码卡的延长线所引起的延迟。通过以上方式,本发明能够弥补安全数码卡的信号传输延时,保证传输速率。
【专利说明】
补偿安全数码卡的延长线引起的延迟的方法及装置
技术领域
[0001]本发明涉及通信领域,特别是涉及一种补偿安全数码卡的延长线引起的延迟的方法及装置。【背景技术】
[0002]在车机系统中,安全数码(Secure Digital,SD)卡的卡槽不放置在主印刷电路板 (Printed Circuit Board,PCB)板上,而是通过延长线引出放置在操作面板上。
[0003]电流在不同导体中传输速度会不同,一般情况下传输速度在2xl08m/S与3xl08m/S 之间,这样lm长度的导线引起的delay在4?5ns,信号往返时间x2,这样比正常情况下会增加8?10ns的延迟时间。而增加这些时间就可能会导致SD卡采样出现偏差。由于增加延长线后,会增加信号传输延迟,还会增加信号被干扰概率,导致SD卡经常会出现兼容性问题。有些SD卡能正常工作,而另一些SD卡则传输异常。现有的方案都是采取降频方案,将SD卡的时钟频率从50Mhz降到12Mhz左右。这样则会导致SD卡的传输速度大大降低,进而影响存储以及系统的性能。
【发明内容】

[0004]本发明实施例提供了一种补偿安全数码卡的延长线引起的延迟的方法及装置,能够补偿安全数码卡上的延迟,保证安全数码卡的传输速率,提高系统的性能。
[0005]本发明提供一种补偿安全数码卡的延长线引起的延迟的方法,包括:经由延长线与安全数码卡进行预设次数的通信操作,若接收到安全数据卡返回的正确响应,则记录通信操作对应的状态值为第一数值,若未接收到安全数据卡返回的正确响应,则记录通信操作对应的状态值为第二数值;查找状态值连续为第一数值的最长数据段;将位于最长数据段的中间位置的状态值所对应的通信操作的延迟值作为最佳延迟值;将最佳延迟值设置为安全数码卡的源时钟和采样时钟的相位差,以补偿由安全数码卡的延长线所引起的延迟。
[0006]其中,通信操作包括命令通信操作和数据通信操作,最佳延迟值包括最佳命令延迟值和最佳数据延迟值,经由延长线与安全数码卡进行通信操作的步骤包括:经由延长线的命令总线与安全数码卡进行预设次数的命令通信操作,分别获取多个命令通信操作分别对应的多个状态值;或经由延长线的数据总线与安全数码卡进行预设次数的数据通信操作,分别获取多个数据通信操作分别对应的多个状态值。
[0007]其中,经由延长线的命令总线与安全数码卡进行预设次数的命令通信操作,分别获取多个命令通信操作分别对应的多个状态值的步骤包括:设置命令通信操作的初始延迟值为〇;经由延长线的命令总线向安全数码卡发送预存的命令;如果接收到安全数码卡经由所述延长线的命令总线返回的未显示循环冗余校验错误的响应,则记录当前的命令通信操作对应的状态值为第一数值,否则记录当前的命令通信操作对应的状态值为第二数值;将延迟值加1,并判断延迟值是否达到预设值,若否,则返回执行向安全数码卡发送预存的下一条命令的操作,若是,则结束本步骤。
[0008]其中,经由延长线的数据总线与安全数码卡进行预设次数的数据通信操作,分别获取多个数据通信操作分别对应的多个状态值的步骤包括:设置读数据通信操作的初始延迟值为〇;经由延长线的命令总线向安全数码卡发送预存的读数据的命令;如果正确接收到安全数码卡经由所述延长线的数据总线返回的未显示循环冗余校验错误的数据,则记录当前的读数据通信操作对应的状态值为第一数值,否则记录当前的读数据通信操作对应的状态值为第二数值;将延迟值加1,并判断延迟值是否达到预设值,若否,则返回执行向安全数码卡发送预存的下一条读数据的命令操作,若是则结束本步骤。
[0009]其中,经由延长线的数据总线与安全数码卡进行预设次数的数据通信操作,分别获取多个数据通信操作分别对应的多个状态值的步骤包括:设置写数据通信操作的初始延迟值为〇;经由延长线的命令总线向安全数码卡发送预存的写数据的命令,并经由延长线的数据总线向安全数码卡发送待写数据;如果正确接收到安全数码卡返回的写数据成功的响应,则记录当前的写数据通信操作对应的状态值为第一数值,否则记录当前的写数据通信操作对应的状态值为第二数值;将延迟值加1,并判断延迟值是否达到预设值,若否则返回执行向安全数码卡发送预存的下一条写数据的命令的操作,若是则结束本步骤。
[0010]其中,数据通信操作包括读数据通信操作和写数据通信操作,查找状态值连续为第一数值的最长数据段的步骤包括:查找对应于读数据通信操作的第一最长数据段以及对应于写数据通信操作的第二最长数据段;将位于最长数据段的中间位置的状态值所对应的通信操作的延迟值作为最佳延迟值的步骤包括:将第一最长数据段和第二最长数据段相重叠部分的数据段的中间位置的状态值所对应的延迟值作为最佳数据延迟值。
[0011]本发明还提供一种补偿安全数码卡的延长线引起的延迟的装置,包括:操作模块, 用于经由延长线与安全数码卡进行预设次数的通信操作,若接收到安全数据卡返回的正确响应,则记录通信操作对应的状态值为第一数值,若未接收到安全数据卡返回的正确响应, 则记录通信操作对应的状态值为第二数值;查找模块,与操作模块连接,用于查找状态值连续为第一数值的最长数据段;处理模块,与查找模块连接,用于将位于最长数据段的中间位置的状态值所对应的通信操作的延迟值作为最佳延迟值;设置模块,与处理模块连接,将最佳延迟值设置为安全数码卡的源时钟和采样时钟的相位差,以补偿由安全数码卡的延长线所引起的延迟。
[0012]其中,通信操作包括命令通信操作和数据通信操作,最佳延迟值包括最佳命令延迟值和最佳数据延迟值,操作模块用于:经由延长线的命令总线与安全数码卡进行预设次数的命令通信操作,分别获取多个命令通信操作分别对应的多个状态值;或经由延长线的数据总线与安全数码卡进行预设次数的数据通信操作,分别获取多个数据通信操作分别对应的多个状态值。
[0013]其中,操作模块还用于:设置命令通信操作的初始延迟值为0;经由延长线的命令总线向安全数码卡发送预存的命令;如果接收到安全数码卡返回的未显示循环冗余校验错误的响应,则记录当前的命令通信操作对应的状态值为第一数值,否则记录当前的命令通信操作对应的状态值为第二数值;将延迟值加1,并判断延迟值是否达到预设值,若否,则返回执行向安全数码卡发送预存的下一条命令的操作,若是,则结束本步骤。
[0014]其中,操作模块还用于:设置读数据通信操作的初始延迟值为0;经由延长线的命令总线向安全数码卡发送预存的读数据的命令;如果正确接收到安全数码卡经由延长线的数据总线返回的未显示循环冗余校验错误的数据,则记录当前的读数据通信操作对应的状态值为第一数值,否则记录当前的读数据通信操作对应的状态值为第二数值;将延迟值加 1,并判断延迟值是否达到预设值,若否,则返回执行向安全数码卡发送预存的下一条读数据的命令操作,若是则结束本步骤。
[0015]其中,操作模块还用于:设置写数据通信操作的初始延迟值为0;经由延长线的命令总线向安全数码卡发送预存的写数据的命令,并经由延长线的数据总线向安全数码卡发送待写数据;
[0016]如果正确接收到安全数码卡返回的写数据成功的响应,则记录当前的写数据通信操作对应的状态值为第一数值,否则记录当前的写数据通信操作对应的状态值为第二数值;将延迟值加1,并判断延迟值是否达到预设值,若否则返回执行向安全数码卡发送预存的下一条写数据的命令的操作,若是则结束本步骤。
[0017]其中,数据操作包括读数据通信操作和写数据通信操作,查找模块用于:查找对应于读数据通信操作的第一最长数据段以及对应于所述写数据通信操作的第二最长数据段; 处理模块用于:将第一最长数据段和第二最长数据段相重叠部分的数据段的中间位置的状态值所对应的延迟值作为最佳数据延迟值。
[0018]上述补偿安全数码卡的延长线引起的延迟的方法及装置,通过经由延长线与安全数码卡进行预设次数的通信操作,若接收到安全数据卡返回的正确响应,则记录通信操作对应的状态值为第一数值,若未接收到安全数据卡返回的正确响应,则记录通信操作对应的状态值为第二数值;查找状态值连续为第一数值的最长数据段;将位于最长数据段的中间位置的状态值所对应的通信操作的延迟值作为最佳延迟值;将最佳延迟值设置为安全数码卡的源时钟和采样时钟的相位差,以补偿由安全数码卡的延长线所引起的延迟,能够补偿安全数码卡的延长线引起的延迟,保证安全数码卡的传输速度,提高系统的性能。【附图说明】
[0019]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
[0020]图1是本发明实施例的安全数码卡的源时钟和采样时钟的相位差示意图;
[0021]图2是本发明实施例的补偿安全数码卡的延长线引起的延迟的方法的流程示意图;
[0022]图3是本发明经由延长线与SD卡进行命令通信操作的方法的流程示意图;
[0023]图4是本发明经由延长线与SD卡进行读数据通信操作的方法的流程示意图;
[0024]图5是本发明经由延长线与SD卡进行写数据通信操作的方法的流程示意图;
[0025]图6是本发明第二实施例的补偿安全数码卡的延长线引起的延迟装置的结构示意图。【具体实施方式】
[0026]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性的劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0027]图1是本发明实施例的安全数码卡的源时钟和采样时钟的相位差示意图。如图1所示,源时钟的下降沿以及与源时钟的下降沿相邻的采样时钟的下降沿之间的相位差定义为源时钟和采样时钟的相位差。当然也可以是源时钟的上升沿以及与源时钟的下降沿相邻的采样时钟的上升沿之间的相位差定义为源时钟和采样时钟的相位差。
[0028]在本发明实施例中,经由延长线对安全数码卡执行通信操作时,使用源时钟做为基准时钟来发送命令或数据到安全数码卡。命令或数据会经过芯片管脚、印刷电路板 (Printed Circuit Board,PCB)走线、安全数码卡延长线到安全数码卡上,然后安全数码卡会回复相应的响应或数据。安全数码卡会使用采样时钟做为基准时钟来采样来接收响应或数据。通过调整源时钟和采样时钟的相位差,可以弥补延长线引起的时序延时。
[0029]图2是本发明实施例的补偿安全数码卡的延长线引起的延迟的方法的流程示意图。如图2所示,补偿安全数码卡的延长线引起的延迟的方法包括:
[0030]步骤S10:经由延长线与安全数码卡进行预设次数的通信操作,若接收到安全数据卡返回的正确响应,则记录通信操作对应的状态值为第一数值,若未接收到安全数据卡返回的正确响应,则记录通信操作对应的状态值为第二数值。
[0031]为了补偿因SD卡的延长线而引起的延迟,本发明实施例中,首先设置测试工具对 SD卡的延长线引起的延迟进行测试。具体地,外部测试工具经由延长线与SD卡进行预设次数的通信操作,该通信操作可以为命令通信操作或数据通信操作,外部测试工具可以设置为由SD卡的驱动器执行一段测试程序,用以逐个扫描预先储存的命令通信操作或数据通信操作,以将其经由延长线传输至SD卡。因此,在步骤S10之前,通常将配置SD卡的驱动器为扫描模式。若此后接收到SD卡返回的正确响应,则记录该通信操作所对应的状态值为第一数值,若未接收到SD卡返回的正确响应,则记录该通信操作对应的状态值为第二数值。该第一数值和第二数值例如为〇或1,而在经过预设次数的通信操作及状态值记录后,可得到一段连续的由〇和1组成的数据串。
[0032]步骤S11:查找状态值连续为第一数值的最长数据段。
[0033]步骤S12:将位于最长数据段的中间位置的状态值所对应的通信操作的延迟值作为最佳延迟值。
[0034]步骤S13:将最佳延迟值设置为安全数码卡的源时钟和采样时钟的相位差,以补偿由安全数码卡的延长线所引起的延迟。
[0035]得到一段连续的数据串后,可在此数据串中查找状态值连续为第一数值的最长数据段,也就是说,查找通信操作状态持续为“正确传送-接收-响应”的命令通信操作或数据通信操作所对应的状态值的最长数据段。例如,如果扫描到一组状态值如下:
[0036][1,〇,〇,1,1,1,1,1,1,1,〇,〇,〇,〇,1,1,1,〇,〇,〇,1,〇,〇,1,1,〇,〇,1,〇,〇,〇]
[0037]则最长数据段为序号为4-10的连续7个状态值为1的数据段。
[0038]查找到这段数据段后,直接将查找到的最长数据段的中间值所对应的通信操作的延迟值作为最佳延迟值,并将最佳延迟值设置为安全数码卡的源时钟和采样时钟的相位差,以补偿由安全数码卡的延长线所引起的延迟。例如,对于以上查找到的最长数据段,其中间值为最长数据段中的第4个状态值,在整组数据段中为第7个状态值,该状态值所对应的延迟值则为最佳延迟值。
[0039]在本发明实施例中,选择状态值连续为第一数值的最长数据段的中间数值所对应的延迟值为最佳延迟值可以保证所选择的最佳延迟值有一个较大的误差浮动范围。换句话说,即便所选择的延迟值存在一定的偏差,也能保证在一定偏差范围内所选择的延迟值对应的通信操作仍然为可以正确“发送-接收-响应”的状态,从而可以使得在实际的通信操作过程中,即使环境发生变化导致时序存在波动时,也可以确保通信操作不会因外部环境变化而导致异常。
[0040]本发明实施例中,上述步骤S10中经由延长线与SD卡进行的通信操作可以为命令通信操作或数据通信操作,最佳延迟值可以为最佳命令延迟值或最佳数据延迟值。图3是本发明经由延长线与SD卡进行命令通信操作的方法的流程示意图,如图3所示,经由延长线与 SD卡进行命令通信操作的方法包括:[0041 ]步骤S21:设置命令通信操作的初始延迟值为0;
[0042]步骤S22:经由延长线的命令总线向安全数码卡发送预存的命令;[〇〇43]具体地,在执行本实施例之前,预先配置SD卡的驱动器为扫描模式,从而在上述步骤S22中,驱动器可依序扫描预先储存设置的多个命令通信操作。需要说明的是,这些命令通信操作均为带有响应的命令通信操作,即若接收方能成功接收到该命令通信操作,则会返回正确接收的响应。
[0044]步骤S23:判断是否接收到安全数码卡返回的未显示循环冗余校验(CCR)错误的响应,若是则跳至步骤S24,若否则跳至步骤S25;
[0045]步骤S24:记录当前的命令通信操作对应的状态值为第一数值,跳至步骤S26;
[0046]步骤S25:记录当前的命令通信操作对应的状态值为第二数值,跳至步骤S26;[〇〇47]向SD卡发送命令通信操作后,判断是否能接收到SD卡返回的未显示CCR错误的响应,即判断SD卡是否能经由延长线成功接收到命令。若接收到SD卡返回的正确接收的响应, 则记录当前的命令通信操作对应的状态值为第一数值,反之,则记录当前的命令通信操作对应的状态值为第二数值。举例来说,该第一数值和第二数值例如为0或1。[〇〇48] 步骤26:将延迟值加1,并判断延迟值是否达到预设值,若否,则返回步骤S22,若是,则结束本流程。
[0049]记录下当前命令通信操作对应的状态值后,将延迟值加1,并判断延迟值是否达到预设值,即判断与SD卡进行的命令通信操作是否已经达到预设次数。若是,则结束本流程, 若否则返回步骤S22,继续通过延长线的命令总线向SD卡发送预存的下一条命令操作,以及继续记录下一条命令操作所对应的状态值,直至测试完预设次数的命令通信操作,以及记录下所有命令通信操作对应的状态值,得到完整的由一组状态值组成的数据串为止。
[0050]需要说明的是,在本发明实施例中,各命令通信操作对应的延迟值即为各命令通信操作所对应的序号减1。例如假定第一数值为1,第二数值为〇,则在上述状态值数据串[1, 0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,1,0,0,1,1,0,0,1,0,0,0]中,连续状态值为第一数值的最长数据段为序号4-10的数据段,而该最长数据段的中间位置的状态值所对应的延迟值的序号为7,其对应的延迟值为6,因而在此实施例中,6为最佳延迟值。此外还需要说明的是,实际操作中,可配置进行发送预存的命令时的时钟频率为50MHz,为安全数码卡的最大时钟频率。此外,上述延迟值的预设值通常是根据经验确定的,一般在0.5个时钟周期左右。
[0051]此外需要说明的是,在步骤S10中经由延长线的命令总线向SD卡发送带有响应的命令时,还经由延长线的命令总线向安全数码卡发送不带有响应的命令。并且在向SD卡发送不带有响应的命令时,可将发送不带有响应的命令的时钟频率控制在6-15MHZ之间,具体值可根据经验确定,同时配置默认的延迟值以保证能正确发送命令。[〇〇52]对于数据通信操作而言,在本发明实施例中,数据通信操作包括读数据通信操作和写数据通信操作。在本发明实施例中,对于读数据通信操作和写数据通信操作的处理方式有所不同,下面将分别进行说明。图4是本发明经由延长线与SD卡进行读数据通信操作的方法的流程示意图,如图4所示,经由延长线与SD卡进行读数据通信操作的方法包括:[〇〇53]步骤S31:设置读数据通信操作的初始延迟值为0;
[0054]步骤S32:经由延长线的命令总线向安全数码卡发送预存的读数据的命令;[〇〇55]与上述命令通信操作的实施例类似,在执行本实施例之前,预先配置SD卡的驱动器为扫描模式,从而在上述步骤S32中,驱动器可依序扫描预先储存设置的多个读数据的命令通信操作。[〇〇56]步骤S33:判断是否接收到安全数码卡返回的未显示CCR错误的数据,若是则跳至步骤S34,若否则跳至步骤S35;[〇〇57]S34:记录当前的读数据通信操作对应的状态值为第一数值,跳至步骤S36;[〇〇58]S35:记录当前的读数据通信操作对应的状态值为第二数值,跳至步骤S36;[〇〇59]向SD卡发送读数据的命令操作后,判断是否能接收到SD卡经由延长线的数据总线返回的未显示CCR错误的数据,即判断SD卡是否能正确响应该读数据的命令。若接收到SD卡经由延长线的数据总线返回的正确的数据,则记录当前的读数据通信操作对应的状态值为第一数值,反之,则记录当前的读数据通信操作对应的状态值为第二数值。
[0060]步骤36:将延迟值加1,并判断延迟值是否达到预设值,若否,则返回步骤S32,若是,则结束本流程。
[0061]图5是本发明经由延长线与SD卡进行写数据通信操作的方法的流程示意图,如图5 所示,经由延长线与SD卡进行写数据通信操作的方法包括:[〇〇62]步骤S41:设置写数据通信操作的初始延迟值为0;[〇〇63]步骤S42:经由延长线的命令总线向安全数码卡发送预存的写数据的命令,并经由延长线的数据总线向安全数据卡发送待写数据;
[0064]与上述读数据通信操作的做法不同的是,在本实施例中,除了向SD卡发送写数据的命令之外,还需要紧接着经由延长线的数据总线向SD卡发送待写数据。[〇〇65]步骤S43:判断是否接收到安全数码卡返回的写数据成功的响应,若是则跳至步骤 S44,若否则跳至步骤S45;[〇〇66]S44:记录当前的写数据通信操作对应的状态值为第一数值,跳至步骤S46;[〇〇67]S45:记录当前的写数据通信操作对应的状态值为第二数值,跳至步骤S46;[〇〇68]若SD卡能够正确接收到待写数据,则会返回写数据成功的响应,从而若接收到SD 卡返回的正确响应,则记录当前的写数据通信操作对应的状态值为第一数值,反之,则记录当前的写数据通信操作对应的状态值为第二数值。
[0069]步骤46:将延迟值加1,并判断延迟值是否达到预设值,若否,则返回步骤S42,若是,则结束本流程。
[0070]在上述读数据通信操作和写数据通信操作的测试流程中,同样可配置进行发送带有读数据命令和写数据命令时的时钟频率为50MHz,即为SD卡在SDR25模式下的最大时钟频率。
[0071]需要说明的是,对于数据通信操作,由于存在读数据通信操作和写数据通信操作两种类型,因而在上述执行完预设次数的读数据通信操作和写数据通信操作后,会得到分别与其对应的由多个状态值组成的两组数据串,从而在上述步骤S11中,会分别查找到两个最长数据段,即对应读数据通信操作的第一最长数据段和对应写数据通信操作的第二最长数据段。在实际应用中,虽然这两组数据串不一定完全一致(通常只有些许不同),但是由于操作环境的一致性,这两组数据串所分别包含的最长数据段必然会大致重叠,从而可以从重叠部分选取最佳数据延迟值。具体地,在上述步骤S12中,将第一最长数据段和第二最长数据段相重叠部分的数据段的中间位置的状态值所对应的延迟值作为最佳数据延迟值。
[0072]例如,如果扫描到一组向安全数码卡发送读数据的命令所记录的状态值如下:
[0073][〇,〇,1,1,〇,〇,〇,1,1,1,1,1,1,1,1,〇,〇,〇,〇,〇,1,1,1,1,1,〇,〇,〇,〇,1]
[0074]则第一最长数据段为序号为8-15的连续8个状态值为1的数据段。
[0075]扫描到一组向安全数码卡发送写数据的命令所记录的状态值如下:
[0076][〇,1,1,〇,〇,〇,〇,〇,1,1,1,1,1,1,1,1,〇,〇,1,〇,〇,1,1,1,1,1,1,〇,〇,1]
[0077]则第二最长数据段为序号为9-16的连续8个状态值为1的数据段。[〇〇78]以上查找到的第一最长数据段和第二最长数据段相重叠部分为序号为9-15中间的7个状态值组成的数据段,对应的中间位置的数值为序号为12的状态值,其对应的通信操作的延迟值为11,即最佳数据延迟值为11。[〇〇79]以上描述了如何经由延长线与SD卡进行通信操作、记录每个通信操作对应的状态值、以及查找最佳延迟值的方法流程。本发明实施例通过上述方法选择最佳延迟值可以保证所选择的最佳延迟值有一个较大的误差浮动范围。换句话说,即便所选择的延迟值存在一定的偏差,也能保证在一定偏差范围内所选择的延迟值对应的通信操作仍然为可以正确 “发送_接收-响应”的状态,从而可以使得在实际的通信操作过程中,即使环境发生变化导致时序存在波动时,也可以在一定范围内确保通信操作不会因外部环境变化而导致异常。
[0080]而在实际应用中,在经由上述参数配置后,SD卡通常能够满足正常的传输过程,但是仍然很难避免SD卡的通信操作出现突发干扰等情况。如此就需要增强通信操作软件的鲁棒性,对通信操作过程中出现的不同错误都需要设置解决方案,让系统能够正常对SD卡进行通信操作。具体地,在SD卡通信操作过程中,主要会出现的错误包括接收到SD卡返回的包含CRC错误的响应,以及通信操作超时。
[0081]当接收到SD卡返回的包含CRC错误的响应时,本发明实施例中可以通过动态调整命令通信操作或数据通信操作对应的最佳延迟值后,再重传当前命令/数据,以使系统恢复正常。或者直接降低时钟频率后重传当前命令/数据,以使系统恢复正常。对于前者,可以针对最佳延迟值设置一定的调整范围,以在预设范围内,对最佳延迟值进行调整。
[0082]而当遇到SD卡的通信操作超时的情况时,本发明实施例则可以通过重传当前命令/数据、关闭SD卡硬件电源重启后再重传、或者直接降低时钟频率后重传当前命令/数据,以使系统恢复正常。
[0083]图6是本发明第一实施例的补偿安全数码卡的延长线引起的延迟装置的结构示意图。如图6所示,补偿安全数码卡的延长线引起的延迟装置10包括:通信操作模块11、查找模块12、处理模块13以及设置模块14。
[0084]通信操作模块11用于经由延长线与安全数码卡进行预设次数的通信操作,若接收到安全数据卡返回的正确响应,则记录通信操作对应的状态值为第一数值,若未接收到安全数据卡返回的正确响应,则记录通信操作对应的状态值为第二数值。
[0085]为了补偿因SD卡的延长线而引起的延迟,本发明实施例中,首先设置测试工具对 SD卡的延长线引起的延迟进行测试。具体地,外部测试工具经由延长线与SD卡进行预设次数的通信操作,该通信操作可以为命令通信操作或数据通信操作,外部测试工具可以设置为由SD卡的驱动器执行一段测试程序,用以逐个扫描预先储存的命令通信操作或数据通信操作,以将其经由延长线传输至SD卡。因此,在步骤S10之前,通常将配置SD卡的驱动器为扫描模式。若此后接收到SD卡返回的正确响应,则记录该通信操作所对应的状态值为第一数值,若未接收到SD卡返回的正确响应,则记录该通信操作对应的状态值为第二数值。该第一数值和第二数值例如为〇或1,而在经过预设次数的通信操作及状态值记录后,可得到一段连续的由〇和1组成的数据串。
[0086]查找模块12与通信操作模块11连接,用于查找状态值连续为第一数值的最长数据段。处理模块13与查找模块12连接,用于将位于最长数据段的中间位置的状态值所对应的通信操作的延迟值作为最佳延迟值。设置模块14与处理模块13连接,将最佳延迟值设置为安全数码卡的源时钟和采样时钟的相位差,以补偿由安全数码卡的延长线所引起的延迟。
[0087]得到一段连续的数据串后,查找模块12可在此数据串中查找状态值连续为第一数值的最长数据段,也就是说,查找模块12查找通信操作状态持续为“正确传送-接收-响应” 的命令通信操作或数据通信操作所对应的状态值的最长数据段。例如,如果扫描到一组状态值如下:
[0088][1,〇,〇,1,1,1,1,1,1,1,〇,〇,〇,〇,1,1,1,〇,〇,〇,1,〇,〇,1,1,〇,〇,1,〇,〇,〇]
[0089]则最长数据段为序号为4-10的连续7个状态值为1的数据段。
[0090]查找模块12查找到这段数据段后,处理模块13直接将查找模块12查找到的最长数据段的中间值所对应的通信操作的延迟值作为最佳延迟值,并将最佳延迟值设置为安全数码卡的源时钟和采样时钟的相位差,以补偿由安全数码卡的延长线所引起的延迟。例如,对于以上查找到的最长数据段,其中间值为最长数据段中的第4个状态值,在整组数据段中为第7个状态值,该状态值所对应的延迟值则为最佳延迟值。
[0091]在本发明实施例中,处理模块13选择状态值连续为第一数值的最长数据段的中间数值所对应的延迟值为最佳延迟值可以保证所选择的最佳延迟值有一个较大的误差浮动范围。换句话说,即便处理模块13所选择的延迟值存在一定的偏差,也能保证在一定偏差范围内所选择的延迟值对应的通信操作仍然为可以正确“发送-接收-响应”的状态,从而可以使得在实际的通信操作过程中,即使环境发生变化导致时序存在波动时,也可以确保通信操作不会因外部环境变化而导致异常。
[0092]在本发明实施例中,通信操作包括命令通信操作和数据通信操作,最佳延迟值包括最佳命令延迟值和最佳数据延迟值。通信操作模块还包括命令通信模块111和数据通信模块112。命令通信模块111用于首先配置安全数码卡的驱动器为扫描模式,然后对安全数码卡执行命令通信操作。需要说明的是,这些命令通信操作均为带有响应的命令通信操作, 即若接收方能成功接收到该命令通信操作,则会返回正确接收的响应。具体地,命令通信模块111用于:经由延长线的命令总线与安全数码卡进行预设次数的命令通信操作,分别获取多个命令通信操作分别对应的多个状态值;或经由延长线的数据总线对安全数码卡执行预设次数的数据通信操作,分别获取多个数据通信操作分别对应的多个状态值。
[0093]在本发明实施例中,对于命令通信操作,命令通信模块111还用于:设置命令通信操作的初始延迟值为〇;经由延长线的命令总线向安全数码卡发送预存的命令;如果接收到安全数码卡返回的未显示循环冗余校验错误的响应,则记录当前的命令通信操作对应的状态值为第一数值,否则记录当前的命令通信操作对应的状态值为第二数值;将延迟值加1, 并判断延迟值是否达到预设值,若否,则返回执行向安全数码卡发送预存的下一个命令的操作,若是,则结束本步骤。如果返回执行向安全数码卡发送预存的下一个命令的操作,则继续记录下一条命令操作所对应的状态值,直至测试完预设次数的命令通信操作,以及记录下所有命令通信操作对应的状态值,得到完整的由一组状态值组成的数据串为止。
[0094]需要说明的是,在本发明实施例中,各命令通信操作对应的延迟值即为各命令通信操作所对应的序号减1。例如假定第一数值为1,第二数值为〇,则在上述状态值数据串[1, 0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,1,0,0,1,1,0,0,1,0,0,0]中,连续状态值为第一数值的最长数据段为序号4-10的数据段,而该最长数据段的中间位置的状态值所对应的延迟值的序号为7,其对应的延迟值为6,因而在此实施例中,6为最佳延迟值。此外还需要说明的是,实际操作中,命令通信模块111发送预存的命令的时钟频率为50MHz,为安全数码卡的最大时钟频率。此外,上述延迟值的预设值通常是根据经验确定的,一般在0.5个时钟周期左右。[〇〇95]此外需要说明的是,命令通信模块111在经由延长线的命令总线向SD卡发送带有响应的命令时,还经由延长线的命令总线向SD卡发送不带有响应的命令。并且在向SD卡发送不带有响应的命令时,将发送不带有响应的命令的时钟频率控制在6-15MHZ之间,具体值可根据经验确定,同时配置默认的延迟值以保证能正确发送命令。
[0096]在本发明实施例中,数据通信操作包括读数据通信操作和写数据通信操作,数据通信模块112还包括读数据通信模块1121和写数据通信模块1122。在本发明实施例中,对于读数据通信操作和写数据通信操作的处理方式有所不同,下面将分别进行说明。对于读数据通信操作,与上述命令通信操作的实施例类似,预先配置SD卡的驱动器为扫描模式,驱动器可依序扫描预先储存设置的多个读数据的命令通信操作。读数据通信模块1121用于:设置读数据通信操作的初始延迟值为〇;经由延长线的命令总线向安全数码卡发送预存的读数据的命令;如果正确接收到安全数码卡经由延长线的数据总线返回的未显示循环冗余校验错误的数据,则记录当前的读数据通信操作对应的状态值为第一数值,否则记录当前的读数据通信操作对应的状态值为第二数值;将延迟值加1,并判断延迟值是否达到预设值, 若否,则返回执行向安全数码卡发送预存的下一条读数据的命令通信操作,若是则结束本步骤。
[0097]对于写数据通信操作,写数据通信模块1122还用于:设置写数据操作的初始延迟值为〇;经由延长线的命令总线向安全数码卡发送预存的写数据的命令,并经由延长线的数据总线向安全数码卡发送待写数据;如果正确接收到安全数码卡返回的写数据成功的响应,则记录当前的写数据通信操作对应的状态值为第一数值,否则记录当前的写数据通信操作对应的状态值为第二数值;将延迟值加1,并判断延迟值是否达到预设值,若否则返回执行向安全数码卡发送预存的下一条写数据的命令的操作,若是则结束本步骤。
[0098]在本发明实施例中,优选地,第一数值为1,第二数值为0。在本发明的其他实施例中,也可以第一数值为0,第二数值为1,在此不作限制。在上述读数据通信操作和写数据通信操作的测试流程中,操作模块11同样可配置进行发送带有读数据命令和写数据命令时的时钟频率为50MHz,即为安全数码卡在SDR25模式下的最大时钟频率。
[0099]在本发明实施例中,查找模块12查找状态值连续为第一数值的最长数据段时,对于命令操作,查找模块12逐一扫描状态值,直接查找向安全数码卡发送带有响应的命令所记录的状态值连续为第一数值的最长数据段。对应地,处理模块13直接将查找到的最长数据段的中间位置的状态值所对应的通信操作的延迟值作为最佳命令延迟值。
[0100]对于数据通信操作,由于数据通信操作包括读数据通信操作和写数据通信操作, 因而在上述执行完预设次数的读数据通信操作和写数据通信操作后,会得到分别与其对应的由多个状态值组成的两组数据串,查找模块12用于:分别查找到两个最长数据段,即对应读数据通信操作的第一最长数据段以及和对应写数据通信操作的第二最长数据段。在实际应用中,虽然这两组数据串不一定完全一致(通常只有些许不同),但是由于操作环境的一致性,这两组数据串所分别包含的最长数据段必然会大致重叠,从而可以从重叠部分选取最佳数据延迟值。对应地,处理模块13将第一最长数据段和第二最长数据段相重叠部分的数据段的中间位置的状态值所对应的延迟值作为最佳数据延迟值。
[0101]以上描述了如何经由延长线与SD卡进行通信操作、记录每个通信操作对应的状态值、以及查找最佳延迟值的过程,通过查找模块12查找状态值连续为第一数值的最长数据段,可以保证选择的最佳延迟值有一个较大的浮动范围,换句话说,即便所选择的延迟值存在一定的偏差,也能保证在一定偏差范围内所选择的延迟值对应的通信操作仍然为可以正确“发送-接收-响应”的状态,使得在实际的通信操作过程中,即使环境发生变化导致时序存在波动时,也可以在一定范围内确保通信操作不会因外部环境变化导致异常。
[0102]本发明实施例的补偿安全数码卡的延长线引起的延迟的装置10通过将最佳延迟值设置为安全数码卡的源时钟和采样时钟的相位差后,安全数码卡能够满足正常通信操作过程,但很难避免出现突发干扰等情况。如此就需要增强通信操作软件的鲁棒性.对通信操作过程中出现的不同错误都需要有解决方案,让系统能够正常对安全数码卡进行通信操作。在安全数码卡通信操作过程中,主要会出现的错误包括接收到安全数码卡返回的CRC错误响应,以及通信操作超时。
[0103]当接收到SD卡返回的包含CRC错误的响应时,本发明实施例中可以通过动态调整命令通信操作或数据通信操作对应的最佳延迟值后,再重传当前命令/数据,以使系统恢复正常。或者直接降低时钟频率后重传当前命令/数据,以使系统恢复正常。对于前者,可以针对最佳延迟值设置一定的调整范围,以在预设范围内,对最佳延迟值进行调整。
[0104]而当遇到SD卡的通信操作超时的情况时,本发明实施例则可以通过重传当前命令/数据、关闭SD卡硬件电源重启后再重传、或者直接降低时钟频率后重传当前命令/数据, 以使系统恢复正常。
[0105]综上所述,本发明通过经由延长线与安全数码卡进行预设次数的通信操作,若接收到安全数据卡返回的正确响应,则记录通信操作对应的状态值为第一数值,若未接收到安全数据卡返回的正确响应,则记录通信操作对应的状态值为第二数值;查找状态值连续为第一数值的最长数据段;将位于最长数据段的中间位置的状态值所对应的通信操作的延迟值作为最佳延迟值;将最佳延迟值设置为安全数码卡的源时钟和采样时钟的相位差,以补偿由安全数码卡的延长线所引起的延迟,能够补偿安全数码卡的延长线引起的延迟,保证安全数码卡的传输速度,提高系统的性能。
[0106]以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均应包括在本发明的专利保护范围内。
【主权项】
1.一种补偿安全数码卡的延长线引起的延迟的方法,其特征在于,所述方法包括:经由所述延长线与所述安全数码卡进行预设次数的通信操作,若接收到所述安全数据卡返回的正确响应,则记录所述通信操作对应的状态值为第一数值,若未接收到所述安全 数据卡返回的正确响应,则记录所述通信操作对应的状态值为第二数值;查找所述状态值连续为所述第一数值的最长数据段;将位于所述最长数据段的中间位置的状态值所对应的所述通信操作的延迟值作为最 佳延迟值;以及将所述最佳延迟值设置为所述安全数码卡的源时钟和采样时钟的相位差,以补偿由所 述安全数码卡的所述延长线所引起的延迟。2.根据权利要求1所述的方法,其特征在于,所述通信操作包括命令通信操作和数据通 信操作,所述最佳延迟值包括最佳命令延迟值和最佳数据延迟值,经由所述延长线与所述 安全数码卡进行所述通信操作的步骤包括:经由所述延长线的命令总线与所述安全数码卡进行预设次数的所述命令通信操作,分 别获取多个所述命令通信操作分别对应的多个状态值;或经由所述延长线的数据总线与所述安全数码卡进行预设次数的所述数据通信操作,分 别获取多个所述数据通信操作分别对应的多个状态值。3.根据权利要求2所述的方法,其特征在于,所述经由所述延长线的命令总线与所述安 全数码卡进行预设次数的所述命令通信操作,分别获取多个所述命令通信操作分别对应的 多个状态值的步骤包括:设置所述命令通信操作的初始延迟值为〇;经由所述延长线的命令总线向所述安全数码卡发送预存的命令;如果接收到所述安全数码卡经由所述延长线的命令总线返回的未显示循环冗余校验 错误的响应,则记录当前的所述命令通信操作对应的状态值为所述第一数值,否则记录当 前的所述命令通信操作对应的状态值为所述第二数值;以及将所述延迟值加1,并判断所述延迟值是否达到预设值,若否,则返回执行向所述安全 数码卡发送预存的下一条命令的操作,若是,则结束本步骤。4.根据权利要求2所述的方法,其特征在于,所述经由所述延长线的数据总线与所述安 全数码卡进行预设次数的所述数据通信操作,分别获取多个所述数据通信操作分别对应的 多个状态值的步骤包括:设置所述读数据通信操作的初始延迟值为〇;经由所述延长线的命令总线向所述安全数码卡发送预存的读数据的命令;如果正确接收到所述安全数码卡经由所述延长线的数据总线返回的未显示循环冗余 校验错误的数据,则记录当前的所述读数据通信操作对应的状态值为第一数值,否则记录 当前的所述读数据通信操作对应的状态值为第二数值;以及将所述延迟值加1,并判断所述延迟值是否达到预设值,若否,则返回执行向所述安全 数码卡发送预存的下一条读数据的命令的操作,若是则结束本步骤。5.根据权利要求2所述的方法,其特征在于,所述经由所述延长线的数据总线与所述安 全数码卡进行预设次数的所述数据通信操作,分别获取多个所述数据通信操作分别对应的 多个状态值的步骤包括:设置所述写数据通信操作的初始延迟值为0;经由所述延长线的命令总线向所述安全数码卡发送预存的写数据的命令,并经由所述 延长线的数据总线向所述安全数码卡发送待写数据;如果正确接收到所述安全数码卡返回的写数据成功的响应,则记录当前的所述写数据 通信操作对应的状态值为第一数值,否则记录当前的所述写数据通信操作对应的状态值为 第二数值;以及将所述延迟值加1,并判断所述延迟值是否达到预设值,若否则返回执行向所述安全数 码卡发送预存的下一条写数据的命令的操作,若是则结束本步骤。6.根据权利要求2所述的方法,其特征在于,所述数据通信操作包括读数据通信操作和 写数据通信操作,所述查找所述状态值连续为所述第一数值的最长数据段的步骤包括:查找对应于所述 读数据通信操作的第一最长数据段以及对应于所述写数据通信操作的第二最长数据段; 所述将位于所述最长数据段的中间位置的状态值所对应的所述通信操作的延迟值作 为最佳延迟值的步骤包括:将所述第一最长数据段和所述第二最长数据段相重叠部分的数 据段的中间位置的状态值所对应的延迟值作为最佳数据延迟值。7.—种补偿安全数码卡的延长线引起的延迟的装置,其特征在于,所述装置包括: 通信操作模块,用于经由所述延长线与所述安全数码卡进行预设次数的通信操作,若接收到所述安全数据卡返回的正确响应,则记录所述通信操作对应的状态值为第一数值, 若未接收到所述安全数据卡返回的正确响应,则记录所述通信操作对应的状态值为第二数 值;查找模块,与所述通信操作模块连接,用于查找所述状态值连续为所述第一数值的最 长数据段;处理模块,与所述查找模块连接,用于将位于所述最长数据段的中间位置的状态值所 对应的所述通信操作的延迟值作为最佳延迟值;以及设置模块,与所述处理模块连接,将所述最佳延迟值设置为所述安全数码卡的源时钟 和采样时钟的相位差,以补偿由所述安全数码卡的所述延长线所引起的延迟。8.根据权利要求7所述的装置,其特征在于,所述通信操作包括命令通信操作和数据通 信操作,所述最佳延迟值包括最佳命令延迟值和最佳数据延迟值,所述通信操作模块包括:命令通信模块,用于经由所述延长线的命令总线与所述安全数码卡进行预设次数的 所述命令通信操作,分别获取多个所述命令通信操作分别对应的多个状态值;以及数据通信模块,用于经由所述延长线的数据总线与所述安全数码卡进行预设次数的所 述数据通信操作,分别获取多个所述数据通信操作分别对应的多个状态值。9.根据权利要求8所述的装置,其特征在于,所述命令通信模块还用于:设置所述命令 通信操作的初始延迟值为〇;经由所述延长线的命令总线向所述安全数码卡发送预存的命令;如果接收到所述安全数码卡经由所述延长线的命令总线返回的未显示循环冗余校验 错误的响应,则记录当前的所述命令通信操作对应的状态值为所述第一数值,否则记录当 前的所述命令通信操作对应的状态值为所述第二数值;以及将所述延迟值加1,并判断所述延迟值是否达到预设值,若否,则返回执行向所述安全数码卡发送预存的下一条命令的操作,若是,则结束本步骤。10.根据权利要求8所述的装置,其特征在于,所述数据通信模块包括读数据通信模块, 所述读数据通信模块用于:设置所述读数据通信操作的初始延迟值为〇;经由所述延长线的命令总线向所述安全数码卡发送预存的读数据的命令;以及如果正确接收到所述安全数码卡经由所述延长线的数据总线返回的未显示循环冗余 校验错误的数据,则记录当前的所述读数据通信操作对应的状态值为第一数值,否则记录 当前的所述读数据通信操作对应的状态值为第二数值;将所述延迟值加1,并判断所述延迟值是否达到预设值,若否,则返回执行向所述安全 数码卡发送预存的下一条读数据的命令操作,若是则结束本步骤。11.根据权利要求8所述的装置,其特征在于,所述数据通信模块还包括写数据通信模 块,所述写数据通信模块用于:设置所述写数据通信操作的初始延迟值为〇;经由所述延长线的命令总线向所述安全数码卡发送预存的写数据的命令,并经由所述 延长线的数据总线向所述安全数码卡发送待写数据;如果正确接收到所述安全数码卡返回的写数据成功的响应,则记录当前的所述写数据 通信操作对应的状态值为第一数值,否则记录当前的所述写数据通信操作对应的状态值为 第二数值;以及将所述延迟值加1,并判断所述延迟值是否达到预设值,若否则返回执行向所述安全数 码卡发送预存的下一条写数据的命令的操作,若是则结束本步骤。12.根据权利要求8所述的装置,其特征在于,所述数据操作包括读数据通信操作和写 数据通信操作,所述查找模块还用于:查找对应于所述读数据通信操作的第一最长数据段 以及对应于所述写数据通信操作的第二最长数据段;所述处理还模块用于:将所述第一最长数据段和所述第二最长数据段相重叠部分的数 据段的中间位置的状态值所对应的延迟值作为最佳数据延迟值。
【文档编号】G06K19/077GK106096702SQ201610339223
【公开日】2016年11月9日
【申请日】2016年5月18日
【发明人】陈松林
【申请人】杰发科技(合肥)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1