STM32F4X SDIO(四) SDIO控制器

本文详细介绍了STM32F4X SDIO控制器,包括其框图的5个部分:适配器寄存器、FIFO、控制单元、命令路径、数据路径,以及工作所需的SDIOCLK和APB2时钟。还对SDIO的各类寄存器,如控制、命令响应、数据、状态、FIFO相关寄存器的功能和配置进行了说明。


STM32F4X内部有一个SDIO控制器,开发者可以使用这个控制器跟SD卡进行通信,下面就来简单了解一下STM32F4X的SDIO控制器的使用。

STM32F4X SDIO控制器

SDIO控制器框图

下图为STM32F4X的SDIO控制器框图,框图可以分为以下5部分,适配器寄存器FIFO控制单元命令路径数据路径
在这里插入图片描述

SDIO控制器时钟

STM32F4X的所有外设都需要时钟才能够工作,SDIO控制器也不例外。SDIO控制工作时需要两个时钟,一个是SDIOCLK时钟APB2时钟
SDIOCLK:SDIO控制器输出到SD卡的时钟,该时钟可以通过配置分频系数决定其频率,最大为48MHZ。
APB2时钟:APB2时钟是SDIO控制器的工作时钟。

SDIO控制器的寄存器和FIFO模块使用的APB2时钟、控制单元、命令路径和数据路径使用的是SDIOCLK时钟

适配器寄存器

适配器寄存器模块包含了STM32F4X SDIO控制器的所有寄存器,所有基于SDIO控制器的操作都需要读写寄存器来完成,STM32F4X的SDIO寄存器一共有16个。
在这里插入图片描述

FIFO

STM32F4X的SDIO控制器内部带了FIFO单元,当用户使能了FIFO之后,控制器往SD卡发送数据或者从SD卡接收的数据都可以暂时存到FIFO里面。

控制单元

STM32F4X SDIO控制器的控制单元包含了SD卡电源管理和SD卡的时钟管理功能。

命令路径

STM32F4X SDIO控制器的命令路径主要是给SD卡发送命令并且接收来自SD卡的响应。

数据路径

STM32F4X SDIO控制器的命令路径主要是给SD卡发送数据并且接收来自SD卡的数据。如果使用了8位数据宽度的模式,则SDIO_D[7:0]8根信号线都会使用。如果使用了4位数据宽度的模式,则SDIO_D[3:0]4根信号线都会使用。如果使用了1位数据宽度的模式,则只有SDIO_D01根信号线都会使用。

SDIO寄存器

想要使用STM32F4X的SDIO控制器就要学会配置SDIO的寄存器,下面就来简单了解一下STM32F4X的SDIO寄存器。

SDIO控制相关寄存器

SDIO电源控制寄存器 (SDIO_POWER)

该寄存器的作用是控制SDIO_CK的时钟,通过修改该寄存器使能或者关闭SDIO_CK时钟。
在这里插入图片描述

比特位 数值 描述
bit[1:0] PWRCTRL 00:掉电:停止为卡提供时钟。
01:保留
10:保留,上电
11:通电:为卡提供时钟。
电源控制位
SDIO时钟控制寄存器 (SDIO_CLKCR)

该寄存器主要是控制SDIO_CK时钟的使能,时钟分频系数的确定,数据线位宽的选择等

在这里插入图片描述

比特位 数值 描述
bit[14] HWFC_EN 0:禁止硬件流控制
1:使能硬件流控制
硬件流控制使能
bit[13] NEGEDGE 0:在主时钟 SDIOCLK 的上升沿产生 SDIO_CK
1:在主时钟 SDIOCLK 的下降沿产生 SDIO_CK
SDIO_CK 移相选择位
bit[12:11] WIDBUS 00:默认总线模式:使用 SDIO_D0
01:4 位宽总线模式:使用 SDIO_D[3:0]
10:8 位宽总线模式:使用 SDIO_D[7:0]
宽总线模式使能位
bit[10] BYPASS 0:禁止旁路:在驱动 SDIO_CK 输出信号前,根据 CLKDIV 值对 SDIOCLK 进行分频。
1:使能旁路:SDIOCLK 直接驱动 SDIO_CK 输出信号。
时钟分频器旁路使能位
bit[9] PWRSAV 0:始终使能 SDIO_CK 时钟
1:仅在总线激活时使能 SDIO_CK
节能模式配置位
bit[8] CLKEN 0:始终使能 SDIO_CK 时钟
1:仅在总线激活时使能 SDIO_CK
时钟使能位
bit[7:0] CLKDIV 该字段定义输入时钟 (SDIOCLK) 与输出时钟 (SDIO_CK) 之间的分频系数: SDIO_CK 频率 = SDIOCLK / [CLKDIV + 2] 时钟分频系数
SDIO_CK相位

在时钟控制寄存器的bit13中有一个叫时钟相位的概念,所谓的时钟相位意思就是其采样的时间,有两种相位选择,分别是SDIOCLK的上升沿SDIOCLK的下降沿

  • SDIOCLK的上升沿产生SDIO_CK

在这里插入图片描述

  • SDIOCLK的下降沿产生SDIO_CK
    在这里插入图片描述

SDIO命令响应相关寄存器

SDIO参数寄存器 (SDIO_ARG)

该寄存器的作用是将命令的参数发送到SD卡
在这里插入图片描述

比特位 数值 描述
bit[31:0] CMDARG 32位命令参数 作为命令消息的一部分发送给卡的命令参数。如果命令包含参数,则在将命令写入到命令寄存器之前,必须将参数加载到此寄存器中。
SDIO命令寄存器 (SDIO_CMD)

该寄存器主要包含SD卡的命令索引,设置响应类型等。
在这里插入图片描述

比特位 数值 描述
bit[14] ATACMD 0/1 如果 ATACMD 置 1,则 CPSM 将传输 CMD61。
bit[13] nIEN 0:使能 CE-ATA 设备中的中断
1:不使能 CE-ATA 设备中的中断
如果该位为 0,则使能 CE-ATA 设备中的中断
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值