首页 > 其他分享 >初学STM32 SDIO(一)

初学STM32 SDIO(一)

时间:2024-04-08 21:26:39浏览次数:23  
标签:命令 主机 接口 STM32 SDIO 初学 寄存器 SD

1. SDIO协议简介

​ SDIO全称是安全数字输入/输出接口 ,控制器对SD卡进行读写通信操作一般有两种通信接口可选,一种是SPI接口,另外一种就是SDIO接口。 多媒体卡(MMC)、SD卡、 SD I/O卡都有SDIO接口。 STM32F407系列控制器有一个SDIO主机接口,它可以与MMC卡、 SD卡、 SD I/O卡以及CE-ATA设备进行数据传输。

2. SDIO设备分类

image-20240408205309779

​ 目前SDIO协议提供的SD卡规范版本最新是4.01版本,但STM32F42x系列控制器只支持SD卡规范版本2.0,即只支持标准容量SD和高容量SDHC标准卡,不支持超大容量SDXC标准卡,所以可以支持的最高卡容量是32GB。

3. SD卡物理结构

一张SD卡包括有存储单元存储单元接口电源检测卡及接口控制器接口驱动器5个部分

image-20240408205616759

  • 存储单元是存储数据部件,存储单元通过存储单元接口与卡控制单元进行数据传输;

  • 电源检测单元保证SD卡工作在合适的电压下,如出现掉电或上状态时,它会使控制单元和存储单元接口复位;

  • 卡及接口控制单元控制SD卡的运行状态,它包括有8个寄存器;

  • 接口驱动器控制SD卡引脚的输入输出。

    ​ SD卡总共有8个寄存器,用于设定或表示SD卡信息。这些寄存器只能通过对应的命令访问, SDIO
    定义64个命令,每个命令都有特殊意义, 可以实现某一特定功能, SD卡接收到命令后,根据命令要求对SD卡内部寄存器进行修改,程序控制中只需要发送组合命令就可以实现SD卡的控制以及读写操作.

  • SD卡寄存器列表:

image-20240408205854733

4. SDIO总线

SD卡一般都支持SDIOSPI这两种接口.

image-20240408210057299

SD卡使用9-pin接口通信,其中3根电源线、 1根时钟线、 1根命令线和4根数据线, 具体如下:

  • CLK: 时钟线,由SDIO主机产生,即由STM32控制器输出;
  • CMD: 命令控制线, SDIO主机通过该线发送命令控制SD卡,如果命令要求SD卡提供应答, SD卡也是通过该线传输应答信息;
  • D0-3: 数据线,传输读写数据; SD卡可将D0拉低表示忙状态;
  • VDD、 VSS1、 VSS2: 电源和地信号。

​ SDIO的通信时序的物理逻辑非常简单, SDIO不管是从主机控制器向SD卡传输,还是SD卡向主机控制器传输都只以CLK时钟线的上升沿为有效。SD卡操作过程会使用两种不同频率的时钟同步数据,一个是识别卡阶段时钟频率FOD,最高为400kHz; 另外一个是数据传输模式下时钟频率FPP,默认最高为25MHz,如果通过相关寄存器配置使SDIO工作在高速模式,此时数据传输模式最高频率为50MHz。

​ SD总线通信是基于命令和数据传输的。通讯由一个起始位(“0” ),由一个停止位(“1” )终止。 SD通信一般是主机发送一个命令(Command),从设备在接收到命令后作出响应(Response),如有需要会有数据(Data)传输参与。

​ SD数据是以块(Black)形式传输的, SDHC卡数据块长度一般为512字节,数据可以从主机到卡,也可以是从卡到主机。数据块需要CRC位来保证数据传输成功。 CRC位由SD卡系统硬件生成。 STM32控制器可以控制使用单线或4线传输

​ SD数据传输支持单块和多块读写,它们分别对应不同的操作命令,多块写入还需要使用命令来停止整个写入操作。数据写入前需要检测SD卡忙状态,因为SD卡在接收到数据后编程到存储区过程需要一定操作时间。 SD卡忙状态通过把D0线拉低表示。数据块读操作与之类似,只是无需忙状态检测。

​ 使用4数据线传输时,每次传输4bit数据,每根数据线都必须有起始位、终止位以及CRC位, CRC位每根数据线都要分别检查,并把检查结果汇总然后在数据传输完后通过D0线反馈给主机。SD卡数据包有两种格式,一种是常规数据(8bit宽), 它先发低字节再发高字节,而每个字节则是先发高位再发低位, 4线传输示意如下图:

image-20240408210628919

​ 另外一种数据包发送格式是宽位数据包格式,对SD卡而言宽位数据包发送方式是针对SD卡SSR(SD状态)寄存器内容发送的, SSR寄存器总共有512bit,在主机发出ACMD13命令后SD卡将SSR寄存器内容通过DAT线发送给主机。宽位数据包格式示意图如下:

image-20240408210656479

标签:命令,主机,接口,STM32,SDIO,初学,寄存器,SD
From: https://www.cnblogs.com/lyk-23/p/18122607

相关文章

  • 基于STM32单片机智能垃圾桶红外感应雨滴检测语音设计21-766
    21-766、STM32智能垃圾桶设计-E18-KEY-红外对管-ISD1820-水滴-电磁锁产品功能描述:本设计有STM32F103C8T6单片机核心板电路+红外避障传感器电路+按键电路+红外对管电路+ISD1820语音模块电路+水滴传感器电路+电磁锁电路组成。1、通过红外避障传感器和按键均可以控制电磁锁的开......
  • 基于STM32单片机汽车防盗GPS定位GSM短信加速度检测设计21-880
    21-880、STM32汽车防盗系统设计-震动-ADXL345-GPS-GSM-RELAY产品功能描述:本设计由STM32F103C8T6单片机核心板电路+震动传感器电路+ADXL345重力加速度传感器电路+GPS模块电路+GSM模块电路+继电器控制电路组成。1、系统将是否有震动以及是否有倾倒以及对应的GPS经纬度信息,每隔......
  • Proteus8.0仿真应用设计(二十六)基于FreeRTOS、STM32F103C8、HAL库、4x4矩阵键盘应用设
    一、仿真原理图:二、部分代码:        按键采集uint8_tKeyScan(void){ uint8_tvalue=0x00; KeyPort->ODR=0x00; KeyPort->ODR=0xf7; if((KeyPort->IDR&0xf0)!=0xf0) { HAL_Delay(50); if((KeyPort->IDR&0xf0)!=0xf0) { value=......
  • 如何使用Git和GitHub - 初学者和有经验开发者的指南
    欢迎来到初学者的Git和GitHub!这份综合指南旨在帮助您探索版本控制和协作的世界。无论您是刚开始的新手还是经验丰富的开发者想要提升技能,这个指南都提供了逐步的方法来理解和有效使用Git和GitHub。通过本次旅程,您将建立起对Git和GitHub的坚实基础。您将具备实用知识,以简化您的编......
  • STM32CubeMX+MDK通过I2S接口进行音频输入输出(全双工读写一个DMA回调)
    一、前言目前有一个关于通过STM32F411CEUx的I2S总线接口控制SSS1700芯片进行音频输入输出的研究。SSS1700是具有片上振荡器的3S高度集成的USB音频控制器芯片。SSS1700功能支持96KHz24位采样率,带外部音频编解码器(24位/96KHzI2S输入和输出)并具有内置立体声16/24......
  • Vscode+gcc-arm+openocd搭建STM32开发环境
    1简介尝试使用Vscode搭建STM32开发环境,自己记录一下详细的配置过程2工具下载设计到的相关软件以及资源包括Vscode软件、STM32CubeMX、mingw64以及openocd,相应的软件介绍以及下载链接如下:Vscode软件:宇宙第一编辑器,开源,插件丰富CubeMx:初始化代码生产器,HAL库mingw64:因......
  • 3-STM32+W5500远程升级篇OTA(阿里云物联网平台)-STM32通过W5500使用http下载程序文件,
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/STM32W5500AIR202A/alyota.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  ......
  • 实测STM32的RTC,什么校准都不做,不断电,半年后快了13分钟
    【测试结果】TOOL的RTC时钟一直都是通过上位机这里手动校准的,这次做了了实验,测试期间不做任何校准,看看半年后效果。测试是从去年的9月29号开始截至到今年的4月5号,快了13分钟【误差原因】因为晶振对温度敏感,下面是典型的温度对晶振影响:STM32支持LSI内部低速时钟或者LSE外......
  • 【STM32项目】基于STM32的测量温度与压力的数据处理设计(完整工程资料源码)
    前言:        项目的架构涉及两个关键组成部分,即硬件组件和软件开发。具体到硬件组成,项目包含若干关键模块,如:STM32微控制器作为项目的脑部控制中心,重力感应模块用于检测和记录重力数据,温度感应模块负责监测环境温度,以及液晶显示模块用于向用户展示实时数据和其他信息。......
  • 基于STM32单片机智能便携式心率血氧体温检测仪蓝牙设计20-415
    20-415、STM32单片机便携式心率血氧体温检测仪系统+蓝牙上传设计产品功能描述:本系统由STM32F103C8T6单片机、LCD1602液晶屏显示、血氧传感器、DS18B20温度检测、蓝牙模块组成。1、液晶实时显示STM32采集到的心率、血氧和温度。2、心率和血氧采集成功直接显示相应的值,如果采......