问题现象描述
设备在插入TF卡时,TF卡不能识别,使用dmesg查看内核信息如下:
问题排查过程
从内核日志中可以看到,系统已经检测到TF卡插入,在数据通信过程中出错。针对该问题,进行了如下测试:
1.降低主机通信频率
SD卡正常通信频率为50MHz,降低通信频率20MHz、15MHz时TF卡依旧不能识别。最后,将TF卡通信频率降低为6MHz,此时问题现象变为TF卡概率性能够识别;但通信频率为6MHz时完全不能满足数据传输要求,因此不能采用降低通信频率的方式解决该问题。
1.缩短TF卡通信线长
由于结构限制,TF卡小板和主板使用FPC线进行连接,线长距离为16cm,当缩短线长为5cm时,TF在通信频率为20MHz情况下绝大部分能够识别。因此缩短线长的方式有效。但由于结构限制,TF卡小板和主板之间距离过长,因此不存在线长缩短的可能性。
1.增大驱动电流
系统下更改驱动,加大驱动电流,此时通过测试,在通信频率20MHz情况下识别率有所提高。
1.将TF卡改为1线的方式
在测试过程中将TF卡改为1线的方式,即只使用D0进行数据传输,经测试发现在通信频率50MHz情况下TF卡能够正常识别。但数据传输效率大大降低,因此也不能够使用该方式解决问题。
问题结论
通过测试,基本可以确定为信号质量问题,很大可能为硬件问题。因此需从硬件层面来看。
问题分析
硬件工程师通过测量CLK信号发现在通信过程中会产生串扰,导致CLK信号变形。因此CLK信号串扰是导致TF卡不能正常识别的根本原因。
以下是信号串扰的解释
信号串扰是一种失真现象,主要源自与数据码型无关的幅度干扰。这种干扰是由于耦合效应,使得一个原本干净的信号(也被称为“受扰信号”)受到其他“干扰”信号的影响。这种影响会使得受扰信号发生变形,并可能导致受扰信号的眼图闭合。更具体来说,串扰是两条信号线之间的耦合、信号线之间的互感和互容引起的噪声。容性耦合可以产生耦合电流,而感性耦合则会产生耦合电压。在PCB板层参数、信号线间距、驱动端和接收端的电气特性以及线端接方式等方面都对串扰有一定的影响。串扰会对时钟信号、周期和控制信号、数据传输线和I/O产生不良影响。通常来讲,串扰是无法完全消除的,只能尽量减少串扰。
针对CLK信号串扰问题,需从硬件原理上进一步分析。
TF卡原理
SD卡协议是由SD卡协会制定的一种存储器件规范,这种协议涵盖了SD卡的物理规格、容量、总线速度、读写速度等方面。为了满足不同的需求,SD卡允许在SD模式和SPI模式两种模式下工作。在SD模式下,数据是并行传输的,包括2地、1电源、1时钟、1命令和4数据线;而在SPI模式下,数据是串行传输的,包括2地、1电源、1时钟、1片选和2数据线。
SDIO是 host (主机/读卡器) 和 card (SD卡) 之间的通信总线,包括6根信号 (如下表),这些信号的电平标准为 3.3V (0V为逻辑0,3.3V为逻辑1) .
信号名描述方向
sdclk时钟单向:host输出,card输入
sdcmd传输命令和响应当发起命令时 host 输出;当响应时 card 输出。
sddat0, sddat1, sddat2, sddat3传输数据当写数据时 host 输出;当读数据时 card 输出。
图2展示了 SD 卡 (常规尺寸) 和 micro-SD 卡的 SDIO 信号定义。SD卡和 microSD卡除了外形尺寸外,功能上没有差别。
图2: SD (常规尺寸) 和 micro-SD 的接口定义图3是 SD 卡接口电路设计示意图。其中 sdcmd 和 sddat0~3 是双向信号,需要通过电阻上拉到 3.3V 。当 host 和 card 都不驱动时,这些信号为弱上拉的高电平。除了 SDIO 的6根信号外,SD卡还需要 3.3V 的电源供电。
图3:SD 卡接口电路设计示意图对于TF卡的工作原理来说,首先当TF卡插入卡槽时,会通过一个CMD脚读取卡内信息,包括内存大小、格式等。同时,Sd脚是一个插入检测脚,当卡插入卡槽时,该脚会从高电平跳变成低,表示检测到了卡。
然后,在数据传输方面,TF卡有4个数据传输端D0, D1, D2, D3来进行数据的读写。主机通过这些端口与TF卡进行通信。值得注意的是,虽然小卡更加的方便但其传输速度是赶不上大卡的,大卡是多线程的,有2/3的金手指是用来传输写入文件的。
最后,为了保护TF卡中的数据,实现负载均衡,几乎所有TF卡都实现了FTL层。这是因为如果没有负载均衡的FTL层,某些特殊设计的写操作,在几分钟之内就可以写坏TF卡。
详细SD卡原理可参考:https://www.sdcard.org/downloads/pls/
分析结论
通过上图图3可以看到,SD卡在接口电路设计时需要将CLK信号在VCC和GND之间,避免其他信号的干扰。但电气人员在进行设计时,主板和TF卡小板之间的线序如下图所示:
因此可以看出CLK信号紧挨D0。
CLK信号,全称时钟信号,是许多电子系统和计算机系统中的关键组成部分。它的主要作用是同步不同部分的操作,以确保数据能够按照预定的顺序被处理。因此,CLK信号对于系统的正确性至关重要。
在电路设计中,为了确保信号的完整性和稳定性,CLK信号确实需要放置在电源和地之间。这样做的原因主要是为了减少干扰和噪声的影响,因为电源和地之间的电压差可以提供一定的屏蔽效果,从而减少外部噪声对CLK信号的影响。
通过原理分析可以看出,标准的sd走线方式应该是gnd/clk/vcc。CLK信号位于两个保护平面之间。这样可以有效防止串扰。但该设备CLK信号紧挨D0,因此可以解释TF卡在识别过程中流程正常,但是数据通信过程中则产生问题。
问题解决方式
临时方案
1.将通信频率降低为25MHz2.适当增大驱动电流3.使用软FFC线(将第四根和第五根线分割开,避免D0信号对CLK信号的干扰)
FFC,全称Flexible Flat Cable (柔性扁平电缆),是一种用PET绝缘材料和极薄的镀锡扁平铜线制作的新型数据线缆。这种电缆具有柔软、可任意弯曲折叠、厚度薄、体积小等特点,并可以任意选择导线数目及间距,使联线更方便,大大减少电子产品的体积,减少生产成本,提高生产效率。
此外,FFC连接器属于柔性扁平电缆连接器,由PET绝缘材料和极薄的镀锡扁平铜线为主料,再通过高科技自动化设备生产线压合而成。其主要特性包括柔软、随意折叠弯曲、厚度薄、体积小、连接简单、拆卸方便以及易于解决电磁屏蔽(EMI)等问题。
根本解决方法
电路板改版,根据sd卡的标准线序进行原理和PCB设计。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。