sd和emmc如何进行tuning

一、为什么需要tuning

1、主机有一个时钟发生器,它提供 SDCLK到卡

2、在写操作时,时钟和数据方向是一致的,因此写数据可以由 SDCLK 同步进行传输而不用关心传输线延时

3、在读操作时,时钟方向和数据方向是相反的,主机接收的读数据被往返延时(round-trip delay) ,输出延时以及卡和主机的延时所延迟。

所以主机关键之处在于数据的接收,主机需要具有一个采样时钟发生器,用来接收响应, CRC 状态以及读数据块

二、sd卡tuning原理

通过前面的描述知道,在接收数据的时候,clk和数据之间有延时,所以需要调整这个延时,获取到最佳的采样点

方法1:

1、主机使用一个可变采样时钟发生器来决定采样点。主机可以通过 CMD19 tuning 命令读取预先定义并保存在卡中的 tuning block,用来辅助找到采样点。

2、该方法可以用于所有频率范围。当频率为低于 25MHz 的低频时,主机不需要 tuning 就可访问卡。

方法2:

1、需要额外2个pin实现clk的loopback

一般应该都是使用的方法1,而且方法1紫色的延时是自动调整的,不需要软件干预

三、sd卡的turning过程

流程框图

软件流程:

1、SDR104需要进行tuning

2、SDR50可以选择是否进行tuning,通过SRS17.UTSM50(use tuning for SDR50)进行确认是否需要tuning(1需要,0不需要)\

3、cdns的ip没有SRS12_RETUNING_EVENT这个功能,通过看rtl该功能被屏蔽,12bit没有使用,文档上确实也没有

 4、正式流程:

(1)SRS15.SCS(Sampling clock select)清0

该bit为1代表tuning流程成功完成,否则流程失败,并且tunling逻辑的clk会关闭

写0会复位并且关掉tuning模块

(2)SRS15.EXTNG(Execute Tuning) 置1

SCS = 0, EXTNG = 0 - Reset and disable clock tuning logic

SCS = 0, EXTNG = 1 - Reset and restart tuning process

SCS = 1, EXTNG = 0 - Stop tuning procedure

SCS = 1, EXTNG = 1 - Start retuning (without clock tuning logic reset)

配置为0,1即Reset and restart tuning process

(3)

判断SRS15.EXTNG的值是否为1,如果为1,循环执行40次,每次发送CMD19命令,判断CMD19是否执行成功

如果40次完成或者CMD19失败,或者SRS15.EXTNG为0,均会退出40次的循环

如果40次成功执行,并且SRS15.SCS为1,则sd卡的tuning成功,否则失败

注意:

CMD19需要在1.8V的transfer状态下且卡处于unlock状态下发送,其他情况下是非法的。

卡应该在150ms内完成40次CMD19命令

(4)CMD19

疑问:

通过上面的流程,phy是怎么调整采样点的?自动调整的吗?上面的流程看软件并没有修改phy寄存器

四、emmc tuning

流程框图

软件流程:

(1)HS200,HS400需要进行tuning,HS400ES不需要tuning

(2)HS400当需要tuning是需要调用mmc_hs400_to_hs200切换到hs200进行tuning

执行完成后再调用mmc_hs200_to_hs400进行恢复

(3)从cdns的寄存器看,tuning主要是配置dqs的延时,但是HS200和HS400并没有strobe信号,是怎么生效的呢?

从phy手册看,DQS有3种来源,1是外部strobe,2是phony dqs, 3是lpbk_dqs(推荐),如果没有strobe信号,可以使用另外两个内部的信号,所以HS200和HS400应该调整的是内部的延时,个人理解在tuning只在read的时候才需要,因为read的时候数据和cmd是dvice发送过来的,clk也是参考的device,所以对host来说data和cmd跨时钟域了,所以需要调整内部的lpbk_dqs去适配clk

但是调整之后,host和device的clk可能有偏移,所以需要定时的tuning才行

(4)如何判断最佳采样点

发送40次后,会参数40个结果,1代表成功,0代表失败,找到1最多的地方,并且取中间值,对应的pos就是最佳参数,把该参数进行赋值到对应的寄存器中

(5)CMD21

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SD/eMMC PHY(物理层)是指SD卡和eMMC存储器的物理接口层。它负责将数字数据转换成电信号以在SD卡和主机之间进行传输。SD卡和eMMC存储器可以通过不同的PHY接口进行通信,包括MIPI C-PHY和D-PHY等。MIPI C-PHY是一种高速串行接口协议,用于连接高速移动设备和存储器。MIPI D-PHY是一种低功耗串行接口协议,用于连接低功耗移动设备和存储器。这些PHY接口提供了可靠和高效的数据传输通道,使SD卡和eMMC存储器能够与主机进行数据交换。 SD/eMMC数据传输流程中的传输模式是指数据在SD卡和主机之间传输的方式。传输模式包括SD卡的读取和写入操作。在初始化SD卡后,可以通过CMD7命令选中要操作的SD卡,然后开始对SD卡进行读写操作。具体的数据传输流程和传输模式有多种,可以根据需要选择适合的方式进行数据传输。 /dev/mmcblk1p1是Linux系统中SD卡或eMMC设备的设备节点。权限为brw-rw----表示只有root用户和组成员有读写权限,其他用户没有权限访问。该设备节点代表了SD卡或eMMC存储器的第一个分区(p1)。可以通过这个设备节点来进行对SD卡或eMMC存储器的读写操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MIPI C-PHY/D-PHY/ UFS/ SDIO/eMMC/DP/eDP/DDR5/LPDDR5/I3C/PCIE/Automotive Ethernet/Serdes.........](https://blog.csdn.net/reeest/article/details/119677975)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [SD/eMMC初始化流程、读写流程(dwc mshc)](https://blog.csdn.net/yangguoyu8023/article/details/122820765)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值