在main.c文件main()函数中调用MX_SDIO_SD_Init()对SDIO参数配置,并调用HAL_SD_Init()函数对SD卡初始化,最后将SD卡切换到4位宽总线模式 在stm32f4xx_hal_sd.c文件HAL_SD_Init()中调用HAL_SD_MspInit()函数对SDIO时钟使能和所使用到的引脚功能复用,如果配置了中断或DMA,该函数中还会相应的出现NVIC/DMA相关...
SDIO_CK 引脚的时钟信号在卡识别模式时要求不超过 400KHz,而在识别后的数据传输模式时则希望有更高的速度(最大不超过 25MHz),所以会针对这两种模式配置 SDIOCLK 的时钟。这里参数描述建议将SDIOCLK clock divede factor 参数使用默认值为0,SDIOCLK为72MHz,可以得到最大频率36MHz,但请注意,有些型号的SD卡可能...
由于我们上述配置的SDIO时钟为 72M,而SD卡支持的通讯速率在0MHz至25MHz之间,因此我们需要分频,配置 SDIO Clock divider bypass 为 Disable 此处设置 SDIOCLK clock divide factor CLKDIV分频系数为 8,这个受限于具体的SD卡支持的最大速度。如果设置值较小,可能由于SDIO_CK速度过高,SD卡/SDnand不支持,导致通讯失败...
1、确定你的开发板上有SDIO模块 2、你的SD卡为一块小于或等于32G的存储卡,因为目前大多数单片机只支持SC和HC类型的卡,这与单片机所遵循的SD卡协议有关系,总之,你的单片机很有可能不支持XC类型的卡,如果确定支持XC的卡也可以用。 3、对你的SD卡用读卡器进行格式化,格式化为FAT32模式的文件系统,分配单元自己定,...
MX_SDIO_SD_Init(); void sd_test_thread(void *argument) { HAL_StatusTypeDef status; status = HAL_SD_Init(&hsd); if(status != HAL_OK) { printf("SD card initialize failed!\n"); while(1) osDelay(1000); } while(1) { HAL_SD_CardStateTypeDef state = HAL_SD_GetCardState(&hsd);...
HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_SDIO_SD_Init();MX_USART2_UART_Init();MX_...
FatFs轮询读取SD卡无配置任何中断 3.2.3、添加其他必要代码 STM32CubeMX工程生成工程代码后,读者应注意手动修改MX_SDIO_SD_Init()函数中SD卡数据总线宽度从默认的4位手动修改为1位,否则SD卡将初始化失败 在生成的工程代码中增加使用FatFs库中API进行文件操作的函数,包括挂载文件系统、显示SD卡信息、读/写TXT文件、...
/* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA_Init(); MX_SDIO_SD_Init(); ...
MX_SDIO_SD_Init(); MX_USART1_UART_Init(); MX_SPI2_Init(); /* USER CODE BEGIN 2 */ char buff[200]; NT35310_Init();//LCD初始化 LCD_Display_Str(LCD_WIDTH/2-strlen("SD卡初始化")/2*8,20,16,(u8 *)"SD卡初始化",BLACK); ...
导语“我们在前面章节中使用了SDIO接口对SD卡进行读写操作,使用的轮询模式,这种模式效率低下,F103有SDIO接口的DMA模式,DMA模式在不需要CPU操作的情况下,自动的将数据进行读取和写入。”