mmc接口(1)——emmc引脚驱动能力

2023-11-03 20:58

本文主要是介绍mmc接口(1)——emmc引脚驱动能力,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

EMMC IO Operation Mode

The EMMC IO PAD is a multipurpose PAD which can be programmed to operate in different
modes:
1、Output with predetermined source/ sink impedance
2、Open drain
3、Input
4、Tristate
5、Weak pull up or pull down
The PAD mode of operation is determined by ‘phyctrl_dren_xxx’, ‘phyctrl_oden_xxx’, ’phyctrl_ren_xxx’ and ‘phyctrl_pu_xxx’ control signal(xxx equals to dat or cmd).
The ‘phyctrl_dr_ty[2:0]’ are used to program the drive strength of the IO in push/pull mode of operation by programming the source/sink impedance of EMMC51 IO. The PAD source/sink impedance can be programmed to 50, 33, 66, 100 or 40 Ohms. The source/sink impedance variation across PVT exceeds 25 % of its nominal value. Trimming bits are provided to greatly reduce the variation. phyctrl_rtrim[3:0] control are used to trim the selected source/sink impedance value. The dynamic range of the trim is +/- 25%. The power on default setting of phyctrl_rtrim[3:0] equals 4’b1110.

所以我们需要关注:
1、phyctrl_dren_xxx, phyctrl_oden_xxx, phyctrl_ren_xxx and phyctrl_pu_xxx control signal
2、phyctrl_dr_ty[2:0]
3、phyctrl_rtrim[3:0]
在这里插入图片描述
如图所示,不同的IO mode对应了一组寄存器的状态
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

IO的阻抗则由phyctrl_dr_ty[2:0]控制
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文件
u-boot/drivers/mmc/rockchip_sdhci.c
kernel/drivers/phy/rockchip/phy-rockchip-emmc.c

uboot设置

#define RK_CLRSETBITS(clr, set)         ((((clr) | (set)) << 16) | (set))rk3399_emmc_phy_power_onu32 phy_con6;phy_con6 = readl(&phy->emmcphy_con[6]);printf( "## [\e[31m%s\e[0m():%d] phy_con6=%x !!!!!! \n", __func__, __LINE__, phy_con6);//phy_con6=1108		0001000100001000	irom中的阻抗配置bit[6:4]为0writel(RK_CLRSETBITS(7 << 4, 0), &phy->emmcphy_con[6]);//01110000		将emmcphy_con[6]的bit[6:4]置为0,设置pad阻抗/** According to the user manual, calpad calibration* cycle takes more than 2us without the minimal recommended* value, so we may need a little margin here*/writel(RK_CLRSETBITS(1, 1), &phy->emmcphy_con[6]);/* Set the frequency of the DLL operation */writel(RK_CLRSETBITS(1 << 1, 1 << 1), &phy->emmcphy_con[6]);rk3399_emmc_phy_power_offwritel(RK_CLRSETBITS(1, 0), &phy->emmcphy_con[6]);writel(RK_CLRSETBITS(1 << 1, 0), &phy->emmcphy_con[6]);
irom默认配置:
phy_con5=0
phy_con2=3ff
phy_con3=1ff
phy_con6=110b		0001000100001011
phy_status=6c		0000000001101100uboot修改的配置:
phy_con5=0
phy_con2=3ff
phy_con3=1ff
phy_con6=1108		0001000100001000
phy_status=1c		0000000000011100

内核设置

#define HIWORD_UPDATE(val, mask, shift) \((val) << (shift) | (mask) << ((shift) + 16))#define PHYCTRL_DR_MASK                 0x7
#define PHYCTRL_DR_SHIFT                0x4
#define PHYCTRL_DR_50OHM                0x0
#define PHYCTRL_DR_33OHM                0x1
#define PHYCTRL_DR_66OHM                0x2
#define PHYCTRL_DR_100OHM               0x3
#define PHYCTRL_DR_40OHM                0x4regmap_write(rk_phy->reg_base, rk_phy->reg_offset + GRF_EMMCPHY_CON6,HIWORD_UPDATE(PHYCTRL_DR_50OHM, PHYCTRL_DR_MASK, PHYCTRL_DR_SHIFT));
内核读到的配置:
phy_con5=0
phy_con2=3ff
phy_con3=1ff
phy_con6=110b		0001000100001011
phy_status=74		0000000001110100内核设置的配置:
phy_con5=0
phy_con2=3ff
phy_con3=1ff
phy_con6=1108
phy_status=1c

可以看到phy_con6设置的io阻抗没有发生变化,其他的控制寄存器也没有发生变化,con6默认会“Enable retention mode——EMMCIOs will retain its input programming state during VCORE is off in sleep mode”
phyctrl_rtrim根据emmc的不同状态在发生变化。

硬件原理

EMMC_D0
EMMC_D1
EMMC_D2
EMMC_D3
EMMC_D4
EMMC_D5
EMMC_D6
EMMC_D7
EMMC_CMD
EMMC_CLKO
EMMC_STRB

在这里插入图片描述
在这里插入图片描述

这篇关于mmc接口(1)——emmc引脚驱动能力的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/340822

相关文章

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

模拟实现vector中的常见接口

insert void insert(iterator pos, const T& x){if (_finish == _endofstorage){int n = pos - _start;size_t newcapacity = capacity() == 0 ? 2 : capacity() * 2;reserve(newcapacity);pos = _start + n;//防止迭代

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

股票数据接口-陈科肇

陈科肇 新浪财经 sz-深圳sh-上海历史分价表:http://market.finance.sina.com.cn/pricehis.php?symbol=sz000506&startdate=2016-12-27&enddate=2016-12-27历史成交明细(当日成交明细):http://vip.stock.finance.sina.com.cn/quotes_service/v

驱动(RK3588S)第七课时:单节点设备树

目录 需求一、设备树的概念1、设备树的后缀名:2、设备树的语法格式3、设备树的属性(重要)4、设备树格式举例 二、设备树所用函数1、如何在内核层种获取设备树节点:2、从设备树上获取 gpio 口的属性3、获取节点上的属性只针对于字符串属性的4、函数读取 np 结点中的 propname 属性的值,并将读取到的 u32 类型的值保存在 out_value 指向的内存中,函数的返回值表示读取到的

驱动安装注册表指令

HKCR: HKEY_CLASSES_ROOT HKCU: HKEY_CURRENT_USER HKLM: HKEY_LOCAL_MACHINE HKU: HEKY_USER HER: 相对根键

UMDF驱动安装

VS2013 + WDF8.1,UMDF驱动选择User Mode Driver,不要选User Mode Driver 2.0,否则Win7安装有问题,如图 另外,在驱动安装时不要忘记WUDFUpdate_<主版本号><次版本号>.dll文件,具体文件名在INF中查找。此文件可在WDF的安装目录中找到。注意:在WDF的安装目录中会有3个WUDFUpdate_xxx.dll文件,x86,x6