STM32F4X SDIO(四) SDIO控制器
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 设备中的中断 | 

 
                   
                   
                   
                   本文详细介绍了STM32F4X SDIO控制器,包括其框图的5个部分:适配器寄存器、FIFO、控制单元、命令路径、数据路径,以及工作所需的SDIOCLK和APB2时钟。还对SDIO的各类寄存器,如控制、命令响应、数据、状态、FIFO相关寄存器的功能和配置进行了说明。
本文详细介绍了STM32F4X SDIO控制器,包括其框图的5个部分:适配器寄存器、FIFO、控制单元、命令路径、数据路径,以及工作所需的SDIOCLK和APB2时钟。还对SDIO的各类寄存器,如控制、命令响应、数据、状态、FIFO相关寄存器的功能和配置进行了说明。
           最低0.47元/天 解锁文章
最低0.47元/天 解锁文章
                           
                       
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   1905
					1905
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            