博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sdio (一) 硬件
阅读量:4283 次
发布时间:2019-05-27

本文共 3022 字,大约阅读时间需要 10 分钟。

  • sdio 交互有哪些硬件
http://www.wowotech.net/basic_tech/mmc_sd_sdio_intro.htmlsdio 控制器sd 卡 或者 mmc 卡 或者 tf卡 sdio卡	sd卡是 sd 存储卡	mmc卡 也是存储卡	sdio卡 功能就多了,可能是 wifi卡,gps卡等SD插槽不仅能插入内存卡。SDIO卡是一种接口(应该是是一种物理标准和电气标准和协议标准),(联通了sdio卡槽,和卡片(必须能插入卡槽))即由使用标准SD卡插槽来扩展设备,让设备拥有新的功能。新功能举例:	GPS 相机 Wi-Fi 调频广播 以太网 条形码读卡器 蓝牙;	目前常见的 SDIO 外围(SDIO 卡)有	· Wi-Fi card(无线网络卡) 	· CMOS sensor card(照相模块) 	· GPS card 	· GSM/GPRS modem card 	· Bluetooth card sdio 的 物理接口	将与SD memory card同样的终端·形状的卡槽利用于扩张卡的规格。	把对应SDIO卡槽(插口)称为SDIO卡槽,扩张卡称为SDIO卡。sdio卡与sd卡的区别	https://wenku.baidu.com/view/8ee1076ef111f18583d05ab4.html	https://www.cnblogs.com/foolish-fish/p/4064316.htmlsd存储卡	0-2Gbyte sdsc/sd	2-32Gbyte sdhc // cmd 16 (设置块大小指令)对 sdhc 无效,对 sdxc 也无效	32G-2Tbyte sdxc // 因为cmd17 规定读取数据块的首地址(32位),一块固定位512字节,所以,最多可以读到 2^32*512字节,也就是 2TB
  • 有哪些标准协议及文档
SD Specifications Part 1 Physical Layer Simplified SpecificationSecure Digital I/O and Memory Card Interface (SDIO and SDIO_AKE) – User Guide

具体接口

  • 内部接口
总线时钟:	驱动总线接口sdio 控制器(适配器时钟)	驱动适配器中断和dma请求	中断请求并不是从总线上来,而是从dma来
  • 外部接口(线序)
clkcmddata0(1bit) 或 data[0-3](4bit) 或 data[0-7](8bit)
  • sdio控制器与sd卡交互方式
命令与回应命令与回应信息都走在 cmd线上数据 走在 data 线上, 穿插在 命令与回应中
  • sd卡的初始化
参考 https://www.bilibili.com/video/av56936776/?p=72参考 SD Specifications Part 1 Physical Layer Simplified Specification 4.2 节可以 从 sd 的初始化区分出mmc卡sd卡 v1.xsdsc v2.x // 标准容量的 2.x 版本的sd卡sdhc v2.x // 高容量的 2.x 版本的sd卡

操作命令序列

  • 初始化
// 开始最大为 400hzcmd0 // 复位所有的卡到idle状态。cmd8 // 发送SD卡接口条件,包含主机支持的电压信息,并询问卡是否支持。cmd55 // 用来区分 sd 卡(有响应) 和 mmc卡(无响应)acmd41(cmd55 + cmd41) // 一直发直到sd卡上电为止(31位为1)cmd2 // 取得cid , 长响应cmd3 // sd卡,取得相对地址rca // mmc卡,设置相对地址rca---cmd9	 // 通知卡发送csd信息cmd7	// 参数为rca,唯一标识一张卡,用来进入 tansfer模式cmd16	// 设置 读写块sizeacmd51 // 用来判断是否支持宽总线acmd6 // 设置位宽---- // 频率改变为高频率 25Mhz
  • 单块读写硬件时序
// 如果当前为 standby mode,需要cmd7 进入 tansfer mode一条命令与回应 与  另一条 有 32个时钟周期间隔,命令与响应之间有11个时钟周期一个命令 48个时钟周期,一个回应(48字节回应)48个时钟周期------------------------------写从16 a13(等待READY_FOR_DATA == 1) 24 结束(单块写序列) 到 d0线 拉低 有 有42 个时钟周期间隔,然后从d0线拉低的第二个上升沿开始发送第一个数据。发送完成之后,需要用cmd13查询 crad status ,等待 到 READY_FOR_DATA.才算完成。当然不等也行,但是会影响下一次写单块。------------------------------读从16 17 结束(单块读序列),大概 212363.875个周期后开始d0拉低,然后从d0线拉低的第二个上升沿开始采样第一个数据。512 个数据 实际接收用了 4283.625 个 时钟周期,是对的,计算上应该是 4,096‬(512*8)个周期(一个bit一个时钟周期)
  • 多块读写硬件时序
// 如果当前为 standby mode,需要cmd7 进入 tansfer mode512byte/block * 3 block  写用了15012.875 个时钟周期(中间有988个空闲周期),实际上应该用 12,288‬ 个时钟周期	读 用了 12,895.75‬ 个周期,很符合。// 正常,因为 波特率不稳定,有时候 会跳到22mhz/45nm, 而 频率是按照 25mhz/40nm 算的------------------------------写16 a23(预擦除数据块) 25 (多块写序列开始),多快写以命令12结束,然后发送cmd13,等待写入过程完成.(status[11] 为1,表示写入完成)------------------------------读从16 18 结束(多块读序列),大概 39,796.375个周期(和单块读差异很大)后开始d0拉低,然后从d0线拉低的第二个上升沿开始采样第一个数据。 多快读以命令12结束.命令13 是怎么回事? 为什么会在写之后会有大量的 cmd13??	读取卡状态,因为数据传输在线上完结之后,并不是 实际写入了.cmd13 的参数是 rca,用来选中sd卡a23 的参数 是 擦除的数据块的个数,可以提高写入性能55 命令的参数是rcacard status //  正在写入111000000000//  data线不再繁忙,被sd卡释放111100000000//  READY_FOR_DATA100100000000

-1bit与4bit

4bit需要设置 SDIO 控制器的 CLK 寄存器 为 4bit	需要发送acmd6 命令,参数为24bit 线传输 1个字节.	采样第一个上升沿,d3:bit7,d2:bit6,d1:bit5,d0:bit4	采样第二个上升沿,d3:bit3,d2:bit2,d1:bit1,d0:bit0
你可能感兴趣的文章
《图像处理实例》 之 疏密程度统计
查看>>
支持向量机(理论+opencv实现)
查看>>
K-means算法(理论+opencv实现)
查看>>
高斯混合模型(理论+opencv实现)
查看>>
VS2015+Python3.5的配置
查看>>
分水岭算法(理论+opencv实现)
查看>>
《图像处理实例》 之 精确寻找一个圆
查看>>
opencv3.1+contrib的配置大总结(配置了两天,遇到问题无数)
查看>>
opencv小问题大智慧
查看>>
《图像处理实例》 之 车牌定位
查看>>
《opencv学习》 之 OTSU算法实现二值化
查看>>
《图像处理实例》 之 答题卡检测
查看>>
图像矩的初步探索(第十一天)
查看>>
《电路学习第一天》 之 电路设计之前的准备
查看>>
《电路学习第三天》 之 线性稳压电源的设计
查看>>
《图像处理实例》 之 目标旋转矫正(基于区域提取、DFT变换)
查看>>
不规则ROI的提取
查看>>
《图像处理实例》 之 提取特殊背景的直线
查看>>
《电路学习第三天》 之 彩扩机项目设计
查看>>
《图像处理实例》 之 物体计数
查看>>