g_sdcard_handler.Init.BusWide = SDIO_BUS_WIDE_1B; /* 1位数据线 */ g_sdcard_handler.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_ENABLE; /* 开启硬件流控 */ g_sdcard_handler.Init.ClockDiv = SDIO_TRANSFER_CLK_DIV; /* SD传输时钟频率最大25MHZ */ SD_Error = HAL_SD...
1) SDIO_ClockEdge:主时钟 SDIOCLK 产生 CLK 引脚时钟有效沿选择,可选上升沿或下降沿。 2) SDIO_ClockBypass:时钟分频旁路使用,可选使能或禁用,如果使能旁路,SDIOCLK (72MHZ )直接驱动 CLK 线输出时钟(不满足最高25HZ的要求),如果禁用,使用 SDIO_CLKCR 寄存器的 CLKDIV 位值分频 SDIOCLK,然后输出到 CLK ...
初始化SDIO为1位总线宽度,频率不超过400KHz。 /* SDIO Initialization Frequency (400KHz max) */#define SDIO_INIT_CLK_DIV ((uint8_t)0x76)/* 48MHz / (SDMMC_INIT_CLK_DIV + 2) < 400KHz */SD_InitTypeDefInit;/* Default SDIO peripheral configuration for SD card initialization */Init.ClockEdg...
代码中的SDIO_INIT_CLK_DIV分频因子用于卡识别模式,SDIO_TRANSFER_CLK_DIV用于数据传输模式。把两种模式的分频因子代入公式计算: SDIOCLK = HCLK=72MHz, SDIO_CK = HCLK/(2 +CLK_DIV) 可得卡识别模式SDIO_CK时钟为400KHz,数据传输模式SDIO_CK时钟为24MHz。 (3) 定义SDIO传输使用DMA还是普通的轮询模式。宏...
SDIO 初始化结构体用于配置 SDIO 基本工作环境,比如时钟分频、时钟沿、数据宽度等等。它被 SDIO_Init 函数使用。 1) SDIO_ClockEdge:主时钟 SDIOCLK 产生 CLK 引脚时钟有效沿选择,可选上升沿或下降沿。 2) SDIO_ClockBypass:时钟分频旁路使用,可选使能或禁用,如果使能旁路,SDIOCLK (72MHZ )直接驱动 CLK 线输...
(四位总线,48 MHz 时钟)if((err=sdioSetBusWidth(SDIO_BUS_WIDTH_4))||(err=sdioTryHighSpeed()))returnerr;SDIO_InitStruct.ClockBypass=SDIO_CLOCK_BYPASS_ENABLE;SDIO_InitStruct.BusWide=SDIO_BUS_WIDE_4B;SDIO_InitStruct.ClockDiv=SDIO_TRANSFER_CLK_DIV;SDIO_Init(SDIO,SDIO_InitStruct);// 配置 ...
其中,SDIO CLK 为 PLL48CK,一般是 48Mhz,而 CLKDIV 则是分配系数,可以通过 SDIO 的 SDIO_CLKCR 寄存器进行设置(确保 SDIO_CK 不超过卡的最大操作频率)。 SD 卡初始化时,SDIO_CK 不可超过 400KHz;初始化完成后,可设为最大(不可超过 SD 卡最大操作频率 25MHz))并可更改数据总线宽度(默认只用 ...
配置SD卡数据传输频率。默认情况下,卡传输频率设置为24MHz。您可以通过调整stm324xg_eval.h文件中的“SDIO_TRANSFER_CLK_DIV”定义来更改或适应此频率。 SD卡频率(SDIO_CK)计算如下: ()()SDIO_CK=SDIOCLK/(SDIO_INIT_CLK_DIV+2) 在传输模式下,并根据SD卡标准,请确保SDIO_CK频率不超过25MHz,并且在高速模式...
如果读写失败,可能SD通信速度太高,可将hsd.Init.ClockDiv值改大 操作SD卡后最好先用函数HAL_SD_GetCardState()确定一下卡的状态再进行其他操作。 注意先擦除后写入。 代码语言:javascript 复制 /* 填充缓冲区数据 */memset(Buffer_Tx,0x15,sizeof(Buffer_Tx));/* 向SD卡块写入数据 */printf("--- Writ...
SDIO 初始化结构体用于配置 SDIO 基本工作环境,比如时钟分频、时钟沿、数据宽度等等。它被 SDIO_Init 函数使用。 1) SDIO_ClockEdge:主时钟 SDIOCLK 产生 CLK 引脚时钟有效沿选择,可选上升沿或下降沿。 2) SDIO_ClockBypass:时钟分频旁路使用,可选使能或禁用,如果使能旁路,SDIOCLK (72MHZ )直接驱动 CLK 线输...