"); //-->
作者:下家山
一:SDIO简介
在介绍SDIO原理前,还是先来点SDIO知识的普及工作吧!
新兴的消费性电子产品不仅要求大容量,高速,而且要求数据的保密性。因此,美国MEI公司,美国SanDisk 公司,日本Toshiba 公司,组成联合小组推出SD Card协议规范。该协议规范定义了SD Memory Card和SDIO Card。
我们平常所说的SD卡即SD Memory Card(Secure Digital Memory Card安全数字存储卡),专为存储数据而设计。该协议规范定义了SD Memory 卡的电压范围为1.6~3.6V,默认模式下最大时钟为25Mhz,速率最大可达到12.5M字节/秒(4根数据线);高速模式下,最大时钟可达到50Mhz,速率最大可达到25M字节/秒(4根数据线)。并支持SPI传输模式。目前规范的V1.10版本最大容量只支持到2Gbyte,但未来可达到32Gbyte。
SDIO Card ,即Secure Digital Input/Output Card(安全数字输入输出卡),是与SD Memory Card兼容的一种卡。其兼容能力包括:机制,电气特性,功耗,信号,软件。SDIO Card是为高速数据I/O传输,低功耗移动电子设备而设计的。目前,应用在wifi,gps,gprs,条码扫描器等设备接口部分。其电压范围为2.0~3.6V。协议规范定义了两种类型的SDIO Card,即高速SDIO Card和低速SDIO Card。高速SDIO Card 支持SPI,1-bit SD 和4-bit SD 传输模式,其时钟最大可达到25Mhz,速率最大可达到10M字节/秒。低速SDIO Card,只需要SPI和1-bit SD 传输模式,4-bit模式可选,其时钟最大为400Khz。
二:深入SDIO
虽然,SDIO接口的产品越来越多,但相比SD Memory Card来说,网上的资料很少。也就是说,基本上要靠自己了,网络帮不了你什么忙!
S3C2410 datasheet中SDIO部分的介绍不够详细,很多部分仅仅提到,因此我怀疑sumsung们并不重视这一部分。或者说,他们不擅长这部分。
不管调试哪个从设备,第一步想到应该是去读出该设备的ID号,因为每个设备肯定是有ID号的,而且在其Datasheet中应该有说明,这是证明你读写寄存器最简单的方法了。对于很多I2C总线接口的设备,读出设备的ID号比较简单,只要读出存放该设备ID号的寄存器就OK了;但,针对SDIO接口规范,要读出SDIO卡的ID号,就不只操作一个寄存器这么简单了。因为,SDIO的最大速率达到10Mbyte,这么高的速率肯定是以其复杂的协议规范为代价的。
2.1 SDIO Signal Pins
三 读SDIO card ID 号
要读出ID号,需要对卡进行初始化工作。下面是我在S3c2410上调试conexant wifi card 时的初始化顺序
3.1 S3C2410—SDIO相关寄存器设置
对S3c2410的设置,要根据下列几种情况来考虑
1,polling方式;
2,interrupt 方式;
3,DMA方式;
因为,我最终是要用到DMA方式,所以我这里只介绍DMA方式的设置。(在调试过程中,一般是先从polling开始调试,因为其最简单)但,因初始化过程中只发送几个命令,所以,我还是采用的polling方式,即使用CMD53命令时,我才用到DMA。
而初始化时只需要设置rSDIPRE,rSDICON,rSDIDTIMER三个寄存器:
rSDIPRE:SDI 波特率设置寄存器,在发送数据前,波特率一般设置到400Khz;
rSDICON:SDI 控制寄存器,只需ByteOrder, FRST, CTYP置位;
rSDIDTIMER:数据超时寄存器;(等待SDI数据响应时间,一般设置到0xff00)
在设置完这些寄存器后应该delay 74个clock。
注意:发送每个命令前rSDICARG(命令参数寄存器),rSDICCON(命令控制寄存器)是必须设置的。
3.2 如何判断命令是否发送正确
命令发送后,需要根据rSDICSTA(命令状态寄存器), rSDIRSP0-3(命令响应寄存器)来判断是否正确响应。
rSDICSTA(命令状态寄存器)
如果,RspFin位置位,表示命令响应结束,但这并不代表命令响应正确,还有检测RspCrc, CmdTout 是否置位,如果置位则表示发生错误。(在发送cmd5时,crc位可以不管,
个人认为)在检测状态位的同时,还要判断RspIndex是否为你发送时的命令号。
rSDIRSP0-3(命令响应寄存器)要根据你所发送的命令来解析是否正确。
3.3 得到CIS 结构指针地址
3.3.1 什么是CIS
每个SDIO card 有一个CIS区域,在这个CIS区域内分成0-7八段,对应到FN0-FN7(Function Number 0-7)。而且,每个段的CIS都有一个CIS pointer(CIS 指针)指向其起始地址。(FN0-7代表每个SDIO卡支持功能数,发送CMD5后,响应R4的Number of I/O function 域指示卡所支持的最大功能号。即,如果Number of I/O function == 1,那么表示此卡支持FN0和FN1。FN0是每个卡都支持的,存放卡最基本的信息,Card Common Card Information Structure表示的就是这个意思,卡的ID号就存放在FN0所对应的CIS中,所以要读出卡的ID号,首先就要得到FN0所对应CIS的指针)
对,CIS(CIA)区域的读写操作是通过CMD52来实现的。
例:
我在得到conexant wifi card CIS指针时操作如下:
因为,卡ID号存放在common CIS内,所以我们需要操作FN0。根据SDIO协议规范FN0 CIS Pointer地址为0x09, 0x0A, 0x0B:
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
大家好啊 想买套ARM7开发板(带开发套件的),请问哪个牌子和厂商的比较好啊? 谢谢啊!
传输基本知识
据报道小米17 Ultra将涨价:内存压缩推动显著提升
低功耗可编程传感器信号处理器TSS400-S1/S2的典型应用电路图
由智能化传感器信号处理器MAX1460和硅压力传感器构成的压力检测系统电路
带城里的女友回乡下过年,我感动都不行了1(转载)
低噪声 μModule DC/DC 转换器简化了 EMI 设计
模拟器件 - 时 钟: EMI 降低
业界最高功率的 D 类放大器 - TAS5630/1
台积电大胆转型:据报道,熊本Fab 2在JASM亏损中从6nm跳跃至2nm
由双通道智能化传感器信号处理器MAX1463构成的高精度压力检测系统的电路框图
该阀门可将电动车快充时间缩短一半:分区散热技术保持电池温度较低,加快充电速度
红外源码(NEC协议)
边缘侧 AI 工作负载的系统性演进
[求助]这个数据类型定义怎么理解啊?
5通道低功耗可编程传感器信号处理器AD7714的典型应用电路
低功耗可编程传感器信号处理器TSS400-S2与E2PROM的接线图
Vxworks启动求助
红外遥控器软件解码原理和程序
物理 AI 从汽车行业汲取功能安全经验
中国摩尔线索发布华山AI芯片,据报道将矛头指向英伟达的Hopper
红外遥控六足爬虫机器人设计
VxWorks下多任务时如何处理
三星据报道准备推出4:3“宽折”手机,以挑战苹果,发布定于2026年秋季
为中国市场度身定制的RF 收发器 – CC1100E
美国智库指出DUVi存在漏洞,中国正推动利用多模式技术开发先进芯片
时钟解决方案 CDCM6100x
Windows 11通过修改的原生NVMe驱动,将SSD性能推向新高——部分测试中随机工作负载性能提升了高达85%
中国顶级GPU制造商拜仁启动香港IPO——GPU初创企业争夺英伟达为AI芯片开发提供资金的竞争
电话原理图