This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM623:eMMC 高速模式时序

Guru**** 2894990 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1641889/am623-emmc-high-speed-mode-timing

器件型号: AM623

在 TRM 上、MMC_CTLCFG_HOST_CONTROL1 寄存器字段说明:高速模式会将数据置于时钟 上升 沿。  

image.png

但在数据表中、MMC0 高速 SDR 模式在 下降 沿发送。  

image.png

说明错误、上升沿应对应于全周期时序、或 UHS 模式。

BTW、如何定义高速模式?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tony、

    Anastas 目前不在办公室。

    请期待 5 月 4 日的答复。

    此致、

    Borislav Lazarkov

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们发现、 如果使用半周期时序而不是全周期时序、则更容易关闭高速 SDR 传输的 MMC0 外设时序。 因此、我们决定使用相同的半周期数据传输时序方法、其中数据在下降沿发生变化并在上升沿捕获、适用于旧 SDR(高达 25MHz)和高速 SDR(高达 50MHz)。

    有一个计划 针对 TRM 中支持的每种数据传输模式包括以下寄存器位的预期配置。 但是、我不确定这是已完成还是仍待处理。  数据到时钟时序是这些主机控制器位以及数据表“所有 时序模式的 MMC0 DLL 延迟映射“表中定义的 PHY 配置的函数。  

    MMCSD0_MMC_CTLCFG_HOST_CONTROL1[2](HIGH_SPEED_ENA)、
    MMCSD0_MMC_CTLCFG_HOST_CONTROL2[3、2:0](V1P8_SIGNAL_ENA、UHS_MODE_SELECT)

    对于 MMC0 外设上的 eMMC、预计具有以下配置:

    旧 SDR     - HIGH_SPEED_ENA = 0b0、 V1P8_SIGNAL_ENA = 0b0、 UHS_MODE_SELECT = 0x0
    高速 SDR - HIGH_SPEED_ENA = 0b0、 V1P8_SIGNAL_ENA = 0b0、 UHS_MODE_SELECT = 0x0
    HS200          - HIGH_SPEED_ENA = 0b1、V1P8_SIGNAL_ENA = 0b0、 UHS_MODE_SELECT = 0x3

    此致、
    Paul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Paul、

    您认为 应如何更新 MMCSD0_MMC_CTLCFG_HOST_CONTROL1[2](HIGH_SPEED_ENA) 的字段说明? 该位仅影响在哪个时钟边沿更改数据/命令、与时钟频率无关。   

    换言之、在 AM62x 上、对于 UHS 模式、只能为全周期时序设置为 1。  

    或将高速模式更改为 UHS-I 模式。

    人们通常将高速模式称为 50MHz。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此 E2E 帖子的标题似乎表明您询问了与 eMMC 器件的通信、我假设该器件连接到 AM62x MMC0 端口、因为它是支持 eMMC 的唯一端口。 如果是这样、则与 MMC0 关联的 UHS 数据传输模式都不 适用。 UHS 模式仅在连接 到嵌入式 SDIO 器件时适用。 对于嵌入式 SDIO 器件 UHS 用例、我们使用全周期时序执行数据传输。

    决定使用半周期时序进行高速 eMMC 通信是为了适应可能具有长保持时间要求的旧版传统 eMMC 器件。

    我们仍然支持  高达 50MHz 的高速数据传输。 但是、我们  使用半周期时序而不是全周期时序来执行数据传输。 我同意这可能与预期不同、但该方法提供了更好的时序裕度。

    此致、
    Paul  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、我指的是 eMMC。 我现在明白了。   

    是的。 eMMC0 仅在 DTS 中支持传统 (25MHz)、hs (50MHz SDR) 和 HS200 SDR、而 MMC1 和 MMC2 支持 ddr50。

    因此、无论在什么频率下工作、eMMC0 都仅支持 SDR 模式。

    	sdhci0: mmc@fa10000 {
    		compatible = "ti,am62-sdhci";
    		reg = <0x00 0x0fa10000 0x00 0x1000>, <0x00 0x0fa18000 0x00 0x400>;
    		interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
    		power-domains = <&k3_pds 57 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 57 5>, <&k3_clks 57 6>;
    		clock-names = "clk_ahb", "clk_xin";
    		bus-width = <8>;
    		mmc-hs200-1_8v;
    		ti,clkbuf-sel = <0x7>;
    		ti,otap-del-sel-legacy = <0x0>;
    		ti,otap-del-sel-mmc-hs = <0x0>;
    		ti,otap-del-sel-hs200 = <0x6>;
    		ti,itap-del-sel-legacy = <0x0>;
    		ti,itap-del-sel-mmc-hs = <0x0>;
    		status = "disabled";
    	};
    	
    	
    	sdhci1: mmc@fa00000 {
    		compatible = "ti,am62-sdhci";
    		reg = <0x00 0x0fa00000 0x00 0x1000>, <0x00 0x0fa08000 0x00 0x400>;
    		interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
    		power-domains = <&k3_pds 58 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 58 5>, <&k3_clks 58 6>;
    		clock-names = "clk_ahb", "clk_xin";
    		bus-width = <4>;
    		ti,clkbuf-sel = <0x7>;
    		ti,otap-del-sel-legacy = <0x0>;
    		ti,otap-del-sel-sd-hs = <0x0>;
    		ti,otap-del-sel-sdr12 = <0xf>;
    		ti,otap-del-sel-sdr25 = <0xf>;
    		ti,otap-del-sel-sdr50 = <0xc>;
    		ti,otap-del-sel-sdr104 = <0x6>;
    		ti,otap-del-sel-ddr50 = <0x9>;
    		ti,itap-del-sel-legacy = <0x0>;
    		ti,itap-del-sel-sd-hs = <0x0>;
    		ti,itap-del-sel-sdr12 = <0x0>;
    		ti,itap-del-sel-sdr25 = <0x0>;
    		status = "disabled";
    	};
    
    	sdhci2: mmc@fa20000 {
    		compatible = "ti,am62-sdhci";
    		reg = <0x00 0x0fa20000 0x00 0x1000>, <0x00 0x0fa28000 0x00 0x400>;
    		interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
    		power-domains = <&k3_pds 184 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 184 5>, <&k3_clks 184 6>;
    		clock-names = "clk_ahb", "clk_xin";
    		bus-width = <4>;
    		ti,clkbuf-sel = <0x7>;
    		ti,otap-del-sel-legacy = <0x0>;
    		ti,otap-del-sel-sd-hs = <0x0>;
    		ti,otap-del-sel-sdr12 = <0xf>;
    		ti,otap-del-sel-sdr25 = <0xf>;
    		ti,otap-del-sel-sdr50 = <0xc>;
    		ti,otap-del-sel-sdr104 = <0x6>;
    		ti,otap-del-sel-ddr50 = <0x9>;
    		ti,itap-del-sel-legacy = <0x0>;
    		ti,itap-del-sel-sd-hs = <0x0>;
    		ti,itap-del-sel-sdr12 = <0x0>;
    		ti,itap-del-sel-sdr25 = <0x0>;
    		status = "disabled";
    	};

    因此、MMCSD0_MMC_CTLCFG_HOST_CONTROL1[2](HIGH_SPEED_ENA) 字段说明最好为:  

    0:半周期时序

    1:全周期时序。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tony、  

    感谢您的意见。

    我将在内部进行检查并根据需要添加 JIRA。

    此致、

    Sreenivasa.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、应更新寄存器位描述以避免产生任何混淆。 我将提交更新说明的请求。

    此致、
    Paul