因为英文不好,所以只能中文来描述问题。
本人制作了imx6q的核心板,使用的是emmc5.1的芯片,VCCQ和VCC都是3.3V。在实际的测试中发现,只有当imx6q的emmc时钟是13M,系统才能正常启动、读写。如果大于13M,则读写的时候会提示错误。
首先我们排除内核的问题,我们有一块一模一样的6Q核心板,emmc也是同一型号的,但是是其他公司制作的,我们的内核能够正常运行。
回到我们自己制作的核心板,用高速示波器测试发现,在启动阶段mmc时钟400K的电平是3.3V,但是随着初始化结束,mmc的频率提高到13M或者更高,则3.3v会降低到2.0V,从测试结果来看,频率越快,电压降低的幅度越大。以下是我们的原理图,我们更换过clk和cmd上的电阻,但是无效。
emmc.JPG
所以我们想知道,电压幅值降低是不是导致mmc无法正常工作的原因?是什么导致了mmc引脚的电压幅值从3.3V降低到2,0v?如果需要其他的额外信息来进行判断,我可以提供图片,希望技术支持和论坛大佬,能够提提意见,非常感谢!
那除了layout ,pcb的板材,制程。没有其他原因了。
1.我们是参考其他的板子,emmc型号一模一样的,原理图一模一样,其他板子用同样的代码能够正常运行.
2.有考虑过vccq的问题,我们尝试将3.3V的vccq调整到1.8V,emmc的时钟可以到达40M,读写都是没问题,但是不能到达52M;但是示波器看波形也不太好,测量的时候非常容易受干扰.看手册,vccq关系到emmc的io电压,emmc从3.3V降到2V,这个2v对于1.8V来说,就是有效电压1.2V对于3.3v来说,其实是0电平.
1. 可以去问一下emmc 厂家dual voltage (1.8v/3.3v) 那个VCCQ 在3.3v 时候要不要接。或者仔细看一下emmc的手册。
2. 如果可以rework 板子。 吧VCCQ 改成1.8v
3. 波形量一下 不过意义不大。 因为你说 高速时候3.3v 降到了2.0v。波形应该是不符合要求的。 所以#1 问一下emmc 厂家,3.3v的时候的供电。
好的,非常感谢您的建议!
1.我们试过用4bit的方式来读写emmc,如果emmc时钟大于13M,仍然会提示错误.
2.可以确定,我们pcb布线的时候数据线都是等长的;且制板的时候已经向板厂交代阻抗匹配相关信息.但是具体的阻抗参数,我们没有专用的仪器可以验证.
3.我们调整过原理图上data,cmd,clk上的电阻,不管是调大或者调小,但是都无效.
不应手动更改或硬编码 eMMC 时钟。 可以使用各种设备树绑定来指定设备树中支持的速度模式。
谢谢& Regards,
Ritesh M Patel
1. 如前面的说的。 不管高速低俗1.8v 都是正确的电压。而且不是不要高速用3.3v。当然可以省一个电压。
2. 看log的error 要详细看一下layout的等长± 50 mils。 和50ohm 阻抗匹配。
3. 要降频也不用去代码。只要在device tree 里面写上 max-frequency = <26000000>; 硬改代码会带来不必要的,和连自己都不知道的副作用。
4. 可以试试4bit mode,但是还是要先检查一下等长和阻抗匹配。
5. 可以调整一下 clock 上的串阻, 如果data上有也可以调整。
你好,非常感谢你的回答!
1.我们的核心版参考了其他厂家的硬件设计,vccq使用3.3V,因为我们不需要高速模式.
2.查看设备树配置如下,已经默认添加no-1-8-v,具体参数如下
yacheng_zhang_0-1687759782482.png
3.通过查看 /sys/kernel/debug/mmc3/ios,具体如下,可以看到协商成ddr52,这是我想要的模式;时钟之所以是40M,是我修改内核代码,手动改成40M.
捕获1.JPG
请问我的参数,哪里可能存在不正常的地方?谢谢
硬件设计:
1. 这个不是问题, 但是指出来一下。
VCCQ 没有必要用3.3v, 1.8v 可以支持HS200,HS400 和所有的legacy speed。
也就是说emmc 的IO 用1.8v总是对的。
详见EMMC 的JEDEC spec. bus speed modes 章节
2. 目前的设计最有可能的是,协商成了高速模式。 但是IO 供电是3.3v。 emmc 做了切换,所以会量到一个2.0 的间于3.3v 和1.8v的中间电平。但是你们没有提供有用信息。可以cat /sys/kernel/debug/mmc3/ios
拿到协商后的信息。看工作在什么模式下面。
目前可以在软件上fix 一下模式。 device tree 里面加一下no-1-8-v 。只用legacy speed,i.MX6 也支持到DDR52.
或者 只作为测试 uboot 的bootargs 加 sdhci.debug_quirks2=0x4 的 no 1v8 的 quirks
是的,eMMC 初始化成功,我可以看到 emmc 信息。
yacheng_zhang_0-1687748087516.png
复制文件时,emmc 提示以下错误
emmc-log.JPG
问题的原因可能是什么?这是否与 PCB 有关?我们可以提供 PCB 文件。
谢谢
希望你一切都好。
电压下降发生后,eMMC 初始化是否成功完成?
当 eMMC 故障频率超过 13M 时,能否共享日志?
谢谢& Regards,
Ritesh M Patel