09-sd卡的电压切换

这篇具有很好参考价值的文章主要介绍了09-sd卡的电压切换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、协议切换流程

sd卡cmd11,sdhc,驱动开发

sd卡cmd11,sdhc,驱动开发

2、CMD11

(1)ACMD41确认是否支持1.8V切换

sd卡cmd11,sdhc,驱动开发

sd卡cmd11,sdhc,驱动开发

如果参数中S18R为1,且响应中S18A为1,此时为3.3V状态,主机便可以发送CMD11进行电压切换,其他情况下不能执行CMD11

3、软件切换流程

int mmc_set_uhs_voltage(struct mmc_host *host, u32 ocr)

(1)发送CMD11(SD_SWITCH_VOLTAGE)

(2)sd卡在接收到CMD11命令后,会把data[0:3]拉低,等待1ms确保拉低

mmc_delay(1);

if (host->ops->card_busy && !host->ops->card_busy(host)) {

err = -EAGAIN;

}

(2)mmc_host_set_uhs_voltage

1)关闭clk

host->ios.clock = 0;

mmc_set_ios(host);

host->ops->set_ios(host, ios); 

.set_ios = sdhci_set_ios,(实现详见第4节)

2)切换到1.8V

mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180)

host->ios.signal_voltage = signal_voltage;

host->ops->start_signal_voltage_switch(host, &host->ios)

sdhci_start_signal_voltage_switch

switch (ios->signal_voltage) {

case MMC_SIGNAL_VOLTAGE_330:

/* Set 1.8V Signal Enable in the Host Control2 register to 0 */ 

ctrl &= ~SDHCI_CTRL_VDD_180;

sdhci_writew(host, ctrl, SDHCI_HOST_CONTROL2);

mmc_regulator_set_vqmmc(mmc, ios);

mmc_regulator_set_voltage_if_supported(mmc->supply.vqmmc,min_uV, volt, max_uV);

/* Wait for 5ms */

usleep_range(5000, 5500);

case MMC_SIGNAL_VOLTAGE_180:

ret = mmc_regulator_set_vqmmc(mmc, ios);

mmc_regulator_set_voltage_if_supported(mmc->supply.vqmmc,1700000, 1800000, 1950000);

/*Enable 1.8V Signal Enable in the Host Control*/

ctrl |= SDHCI_CTRL_VDD_180;

sdhci_writew(host, ctrl, SDHCI_HOST_CONTROL2);

3)等待10ms,协议规定是5ms

mmc_delay(10);

4)恢复clk

host->ios.clock = clock;

mmc_set_ios(host);

(3)延时1ms

mmc_delay(1);

(4)判断看card是否busy

host->ops->card_busy(host)

sdhci_card_busy

resent_state = sdhci_readl(host, SDHCI_PRESENT_STATE);

return !(present_state & SDHCI_DATA_0_LVL_MASK);【#define   SDHCI_DATA_0_LVL_MASK>0x00100000】

总结:

(1)软件切换的流程基本和协议的流程一致

(2)

sd卡cmd11,sdhc,驱动开发

vmmc代表卡的电压,一般是3.3V,可以进行gpio开关控制

vqmmc代表的是信号线bus上的上拉电压,以及控制器的sd卡bank电压,可以切换为1.8和3.3V

4、硬件电路

sd卡cmd11,sdhc,驱动开发

控制器和总线的上拉电阻受1.8/3.3V的切换控制,sd卡为3.3V不变,可以开关

5、

mmc_set_ios(host);

host->ops->set_ios(host, ios); 

.set_ios = sdhci_set_ios

(1)

void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)

{

....

sd卡cmd11,sdhc,驱动开发

....

}

1)set_power分支

一般的控制器并没有实现该接口

sd卡cmd11,sdhc,驱动开发

sd卡cmd11,sdhc,驱动开发

sd卡cmd11,sdhc,驱动开发

各个ip可以通过注册.set_power来实现电压切换

2)非set_power分支

sd卡cmd11,sdhc,驱动开发

sd卡cmd11,sdhc,驱动开发

从(1)和(2)的对比发现实际上2个分支走的内容是一样的文章来源地址https://www.toymoban.com/news/detail-517414.html

到了这里,关于09-sd卡的电压切换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【其他】sd卡的照片在相机上能看到在电脑上却看不到

    在相机里可以看到照片和视频,但是SD卡通过读卡器插入电脑看不到,这种情况发生在 我将其他视频文件复制到这张卡里之后,就不能使用了。 参考 https://zhuanlan.zhihu.com/p/97482744 查看下面 二 2。 1.电脑文件夹设置为《显示隐藏的文件》,此办法无效 2.使用数据恢复应用 (可

    2024年04月29日
    浏览(31)
  • linux驱动开发 - 09_中断

    链接: C/C++Linux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂 在裸机中使用中断需要做一大堆的工作,比如配置寄存器,使能 IRQ 等等。 Linux 内核提供了完善的中断框架,只需要申请中断,然后注册中断处理函数即可,使用非常方便,不需要一系列复杂的寄存器

    2024年02月03日
    浏览(24)
  • 【RV1103】RTL8723bs (SD卡形状模块)驱动开发

    整理好的SDK,下载下来,改一下WiFi名和密码再编译就能用: https://gitee.com/liefyuan2/luckfox-pico/tree/main-wifi-sdio/ 克隆源码: git clone -b main-wifi-sdio https://gitee.com/liefyuan2/luckfox-pico.git 系统账号:root 系统密码:luckfox WiFi模块使用,插入板载的SD卡座上就可以使用WiFi 在硬件连接OK的情

    2024年02月08日
    浏览(32)
  • 【IMX6ULL驱动开发学习】09.Linux驱动之GPIO中断(附SR501人体红外感应驱动代码)

    Linux驱动的GPIO中断编程主要有以下几个步骤: 1、 通过GPIO号获取 软件中断号 (中断编程不需要设置GPIO输入输出,当然申请GPIO,设置输入也没问题) 参数 含义 gpio GPIO引脚编号 2、 注册 中断处理函数 ,设置中断 触发方式 (上升沿、下降沿等) 参数 含义 irq 软件中断号(通过

    2024年02月11日
    浏览(34)
  • STM32CubeMX系列09——SDIO(SD卡读写、SD卡移植FATFS文件系统)

    ==== 文章汇总(有代码汇总) ==== 准备看看这方面的知识,一时间还没不清有什么区别,先补补课,不需要的跳过。 参考文章(内容来源):http://www.360doc.com/content/21/1125/22/59057945_1005908465.shtml 主要写这两个:SD卡、TF卡 共同点:SD、TF、MMC都是在MMC基础上演化发展不同的规范,

    2024年02月09日
    浏览(30)
  • 迅为rk3568开发板RS485收发切换 linux485驱动修改

    Linux RS485串口驱动修改方法–基于Rockchip及Amlogic验证 linux驱动 内核层适配485驱动控制引脚 迅为rk3568开发板用的SP3485E芯片,需要在应用程序中控制管脚的高低电平实现收发切换。 发送前先拉高电平,然后发送数据,数据发送完成后再拉低电平,使其处于接收状态。 在程序中,

    2024年04月25日
    浏览(31)
  • x-cmd pkg | sd - sed 命令的现代化替代品

    sd 是一个基于正则表达式的搜索和替换文本的命令行工具,类似于 sed,但 sd 使用更简单,对用户更为友好。 使用 x sd 即可自动下载并使用 在终端运行 eval \\\"$(curl https://get.x-cmd.com)\\\" 即可完成 x 命令安装, 详情参考 x-cmd 官网 x-cmd 提供1分钟教程,其中包含了 sd 命令常用功能的

    2024年01月16日
    浏览(41)
  • linux驱动开发 - 11_Linux 下的驱动分离与分层

    链接: C/C++Linux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂 linux是一个成熟、复杂、庞大的操作系统,代码的重用性很重要,不然会在linux内核存在大量的无意义重复的代码。尤其的驱动程序,占了linux内核代码的大头,所以需要对驱动程序加以管理。 传统的

    2024年02月07日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包