前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SDIO接口_gmac接口是什么意思

SDIO接口_gmac接口是什么意思

作者头像
全栈程序员站长
发布2022-11-09 17:32:07
1.1K0
发布2022-11-09 17:32:07
举报

文章目录

SDIO,全称:Secure Digital Input and Output ,即安全数字输入输出接口。 SDIO卡是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备,目前根据SDIO协议的SPEC,SDIO接口支持的设备总类有蓝牙,网卡,电视卡等。支持三种不同的数据总线模式:1位(默认)、4位和8位。 SDIO协议是由SD卡的协议演化升级而来的,很多地方保留了SD卡的读写协议,同时SDIO协议又在SD卡协议之上添加了CMD52和CMD53命令。由于这个,SDIO和SD卡规范间的一个重要区别是增加了低速标准,低速卡的目标应用是以最小的硬件开始来支持低速I/O能力。低速卡支持类似调制解调器,条形码扫描仪和GPS接收器等应用。高速卡支持网卡,电视卡还有“组合”卡等,组合卡指的是存储器+SDIO。 SDIO总线和USB总线类似,SDIO总线也有两端,其中一端是主机(HOST)端,另一端是设备端(DEVICE),采用HOST- DEVICE这样的设计是为了简化DEVICE的设计,所有的通信都是由HOST端发出命令开始的。在DEVICE端只要能解溪HOST的命令,就可以同HOST进行通信了。SDIO的HOST可以连接多个DEVICE。

SDIO信号和接口

复位后SDIO_D0用于数据传输。初始化后主机可以改变数据总线的宽度(通过ACMD6命令设置)。 如果一个多媒体卡接到了总线上,则SDIO_D0、SDIO_D[3:0]或SDIO_D[7:0]可以用于数据传输。

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

1. CLK信号:HOST给DEVICE的时钟信号.

代码语言:javascript
复制
  2.  CMD信号:双向的信号,用于传送命令和反应。

  3.  DAT0-DAT3 信号:四条用于传送的数据线。

  4.  VDD信号:电源信号。

  5.  VSS1,VSS2:电源地信号。

在SDIO总线定义中,DAT1信号线复用为中断线。在SDIO的1BIT模式下DAT0用来传输数据,DAT1用作中断线。在SDIO的4BIT模式下DAT0-DAT3用来传输数据,其中DAT1复用作中断线

SDIO命令流程

SDIO总线上都是HOST端发起请求,然后DEVICE端回应请求。其中请求和回应中会数据信息。

  1. Command:用于开始传输的命令,是由HOST端发往DEVICE端的。其中命令是通过CMD信号线传送的。
  2. Response:回应是DEVICE返回的HOST的命令,作为Command的回应。也是通过CMD线传送的。
  3. Data:数据是双向的传送的。可以设置为1线模式,也可以设置为4线模式。数据是通过DAT0-DAT3信号线传输的。

SDIO的每次操作都是由HOST在CMD线上发起一个CMD,对于有的CMD,DEVICE需要返回Response,有的则不需要。

对于读命令,首先HOST会向DEVICE发送命令,紧接着DEVICE会返回一个握手信号,此时,当HOST收到回应的握手信号后,会将数据放在4位的数据线上,在传送数据的同时会跟随着CRC校验码。当整个读传送完毕后,HOST会再次发送一个命令,通知DEVICE操作完毕,DEVICE同时会返回一个响应。

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

对于写命令,首先HOST会向DEVICE发送命令,紧接着DEVICE会返回一个握手信号,此时,当HOST收到回应的握手信号后,会将数据放在4位的数据线上,在传送数据的同时会跟随着CRC校验码。当整个写传送完毕后,HOST会再次发送一个命令,通知DEVICE操作完毕,DEVICE同时会返回一个响应。

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

SDIO寄存器

SDIO命令寄存器 SDIO_CMD

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

SDIO电源控制寄存器 SDIO_POWER

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

该寄存器只有最低2位(PWRCTRL[1:0])有效,其他都是保留位,STM32复位以后,PWRCTRL=00,处于掉电状态。所以,我们首先要给SDIO上电,设置这两个位为:11。 SDIO时钟控制寄存器 SDIO_CLKCR

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

注意:当SDIO_CK频率过快时,可能导致SD卡通信失败,此时,建议降低SDIO_CK试试。 一般位10设置为0 禁止旁路 ​​​​​​​​ SDIO参数寄存器 SDIO_ARG

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

该寄存器用于存储命令参数。注意:参数必须先于命令写入​​​​ SDIO命令寄存器 SDIO_CMD

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

低6位为命令索引,即要发送的命令索引号(如发送CMD1,其值为1,索引就设置为1)。位[7:6],用于设置等待响应位,用于指示CPSM是否需要等待,以及等待类型等。CPSM:即命令通道状态机,请参考《STM32中文参考手册》相关章节。命令通道状态机我们一般都是开启的,所以位10要设置为1。 SDIO命令响应寄存器 SDIO_RESPCMD

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

该寄存器只有低6位有效,比较简单,用于存储最后收到的命令响应中的命令索引。如果传输的命令响应不包含命令索引,则该寄存器的内容不可预知。 SDIO命令响应1~4寄存器 SDIO_RESPx,x=1~4

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

命令响应寄存器组,总共包含4个32位寄存器组成,用于存放接收到的卡响应部分的信息。如果收到短响应,则数据存放在SDIO_RESP1寄存器里面,其他三个寄存器没有用到。而如果收到长响应,则依次存放在SDIO_RESP1~SDIO_RESP4里面 SDIO数据定时器寄存器 SDIO_DTIMER

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

寄存器用于存储以卡总线时钟(SDIO_CK)为周期的数据超时时间,一个计数器将从SDIO_DTIMER寄存器加载数值,并在数据通道状态机(DPSM)进入Wait_R或繁忙状态时进行递减计数,当DPSM处在这些状态时,如果计数器减为0,则设置超时标志。DPSM:即数据通道状态机,类似CPSM,详见《STM32中文参考手册》相关章节。 注意:在写入数据控制寄存器(SDIO_DCTRL),进行数据传输之前,须先写入该寄存器(SDIO_DTIMER)和数据长度寄存器(SDIO_DLEN)!​ SDIO数据长度寄存器 SDIO_DLEN

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

该寄存器低25位有效,用于设置需要传输的数据字节长度。对于块数据传输,该寄存器的数值,必须是数据块长度(通过SDIO_DCTRL设置)的倍数。 即:假定数据块大小为512字节,那么SDIO_DLEN的设置,必须是512的整数倍,最大可以设置读取65535个数据块。 SDIO数据控制寄存器 SDIO_DCTRL

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

该寄存器,用于控制数据通道状态机(DPSM),包括数据传输使能、传输方向、传输模式、DMA使能、数据块长度等信息的设置。 我们需要根据自己的实际情况,来配置该寄存器,才可正常实现数据收发。 SDIO状态寄存器 SDIO_STA

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

另外,SDIO的清除中断寄存器(SDIO_ICR)和中断屏蔽寄存器(SDIO_MASK),这两个寄存器和状态寄存器(SDIO_STA)每个位的定义都相同,只是功能各有不同。请参考着学习。 状态寄存器可以用来查询SDIO控制器的当前状态,以便处理各种事务。比如SDIO_STA的位2表示命令响应超时,说明SDIO的命令响应出了问题。我们通过设置SDIO_ICR的位2则可以清除这个超时标志。

卡检测

检测卡的插入,当卡插入时,某管脚电平变化,读取卡控制器卡检测寄存器判断卡是否插入。

卡识别

识别卡类型;即 SD, MMC 或 SDIO。 a) 首先发送 CMD5。如果收到一个响应,那么该卡是 SDIO。 b) 否则发送 ACMD41;如果收到一个响应,那么该卡是 SD。 c) 否则,该卡是 MMC。

卡常用命令

对不同的卡类型发送不同的卡信息交互序列: a) SD 卡 – 发送 CMD0, ACMD41, CMD2, CMD3。 b) SDIO – 发送 CMD5;如果 function 个数合法,再发送 CMD3。对于 SDIO 存 储部分,遵循和 SD 卡相同的命令。 c) MMC – 发送 CMD0, CMD1, CMD2, CMD3。

不同的SDd卡,主控根据其功能,支持不同的命令集 如下:

Class0 :(卡的识别、初始化等基本命令集)

CMD0:复位SD 卡.

CMD1:读OCR寄存器.

CMD9:读CSD寄存器.

CMD10:读CID寄存器.

CMD12:停止读多块时的数据传输

CMD13:读 Card_Status 寄存器

Class2 (读卡命令集):

CMD16:设置块的长度

CMD17:读单块.

CMD18:读多块,直至主机发送CMD12为止 .

Class4(写卡命令集) :

CMD24:写单块.

CMD25:写多块.

CMD27:写CSD寄存器 .

Class5 (擦除卡命令集):

CMD32:设置擦除块的起始地址.

CMD33:设置擦除块的终止地址.

CMD38: 擦除所选择的块.

Class6(写保护命令集):

CMD28:设置写保护块的地址.

CMD29:擦除写保护块的地址.

CMD30: Ask the card for the status of the write protection bits

class7:卡的锁定,解锁功能命令集

class8:申请特定命令集 。

class10 -11 :保留

参考:https://blog.csdn.net/qq_25538145/article/details/77252933

https://blog.csdn.net/g_salamander/article/details/14167055?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2

https://blog.csdn.net/FA99999/article/details/61196435?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3

https://www.cnblogs.com/aaronLinux/p/7298327.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/186112.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月4日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • SDIO信号和接口
  • SDIO命令流程
  • SDIO寄存器
  • 卡检测
  • 卡识别
  • 卡常用命令
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档