一、为什么需要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

sd和emmc如何进行tuning相关推荐

  1. SD/SDIO/EMMC

    前言 本文对SD/SDIO/EMMC做简单介绍,目标是对其有初步的了解和认识. SD/SDIO传输模式 SD传输模式有以下3种: SPI mode(required) 1-bit mode 4-bit ...

  2. 传统emmc所用的sdio接口_SolidGear SD/SDIO/eMMC协议分析仪

    SolidGear是全球排名第一的SD/SDIO/eMMC协议分析仪测试解决方案的厂商,目前业界主流的从事SD/SDIO/eMMC接口界面开发及测试验证的厂商均有在广泛的使用SolidGear的产品, ...

  3. emmc linux.格式化参数,SD卡, EMMC固化 ,关于bootloader linux

    一. 将bootloader烧入SD卡 1.格式化SD卡(不挂载):  fdisk  /dev/sdx      -d 删除  -n  新建分区  -w 保存退出   6-default  sdx1 ...

  4. Linux驱动——mmc数据结构(二)

    Linux驱动--mmc数据结构(二) 备注:   1. Kernel版本:5.4   2. 使用工具:Source Insight 4.0   3. 参考博客: 2. [mmc subsystem] ...

  5. 怎么听外国 播客_设计您想听的播客

    怎么听外国 播客 Hey folks, as an avid designer and podcast listener, I've bookmarked lots of design podcast ...

  6. Linux驱动——mmc host controller(九)

    Linux驱动--mmc host controller(九) 备注:   1. Kernel版本:5.4   2. 使用工具:Source Insight 4.0 文章目录 Linux驱动--mmc ...

  7. SD/eMMC调试和性能优化

    Contents eMMC架构分析 SD与eMMC eMMC内部寄存器 eMMC数据通信 eMMC命令编码 eMMC总线测试 eMMC命令 eMMC调试 eMMC驱动 eMMC性能优化与功耗管理 eM ...

  8. 全志 Tina Linux 存储介质切换:eMMC,SPI NAND,SPI NOR,SD Card,SD NAND

    存储切换方法 SDK切换存储介质需要修改board.dts.sys_config.fex.内核配置.TINA系统配置.另外,在spinor 存储介质下,通过 u-boot-sun8iw21p1.bin ...

  9. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(7)- 从SD/eMMC启动

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MXRTxxx系列MCU的SD/eMMC卡启动. 关于 i.MXRT 启动设备,痞子衡之前写过很多篇文章,都是关于串并行 NO ...

最新文章

  1. 极限编程 (Extreme Programming) - 迭代计划 (Iterative Planning)
  2. VC 下 64bit 整数的显示和读取格式化字串
  3. Java学习个人备忘录之线程间的通信
  4. easyui表格编辑事件_Unity手游开发札记——从Odin插件聊基于元数据的编辑器实现
  5. OpenCASCADE:OCCT应用框架OCAF之TObj模型对象
  6. Spring发送带附件邮件
  7. 常用的数据结构_动态图展示 6 个常用的数据结构,一目了然
  8. 利用XPath读取Xml文件
  9. java内存溢出无法创建线程_kafka生产者发送消息失败导致内存溢出java.lang.OutOfMemoryError:Java heap space,请教如何解决?...
  10. AVOD:点云数据与BEV图的处理及可视化
  11. 【Protobuf】pb跨语言传输文件签名验证
  12. JPEG文件编/解码详解
  13. 伺服控制的三环控制原理及整定仿真和Simulink模型
  14. 敏捷测试的思考和新发展
  15. 前台应用保活-适配华为
  16. OneNET麒麟座应用开发之六:与气体质量流量控制器通讯
  17. untiy Socket通信一篇通
  18. 0204隐函数及由参数方程所确定的函数的导数相关变化率-导数与微分
  19. Python 编程辅助工具--ipython
  20. 根据网络图片地址获取资源的字节流

热门文章

  1. Taro关闭页面时停止计时器
  2. 一战中科大软件学院399复试被刷失败经验贴......春招中
  3. 【Fluent Meshing】04:计算域提取
  4. 概要设计说明书应包括的内容
  5. 【vcpkg】POCO库编译链接总结
  6. poco mysql 安装,CentOS 上安装 POCO - 文章教程
  7. vue js 多个对象拼接(变量名key拼接 + 值value拼接)
  8. MT6572,JB3,EMMC换nandflash问题!
  9. 团队交流合作简单解决方案:TeamViewer远程控制会议演示 + HyperCam屏幕录制(免费)...
  10. 苹果魔术鼠标不工作的修复办法