SD卡无法读写STM32f4

时间:2016-10-28 15:36:55

标签: c arm microcontroller stm32 fatfs

我正在尝试将SD卡与STM32F4接口,但事情不起作用,代码是使用cubemx开发的

  1. 接口是sdio 1位模式(由于引脚限制)
  2. 使用默认分配大小格式化的SD卡8 Gb
  3. 调试步骤:

    我单步执行代码fmount是成功的,但当我逐步执行fopen时,find_volume()处的错误代码返回FR_NOT_READY

    硬件连接:

    我有带有SPI引脚的arduino micro SD分线板,因此连接

    • DI→SDIO_CMD
    • DO→SDIO_D0
    • SCLK→SDIO_SCLK
    int main(void)
    {
        /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
        HAL_Init();
    
        /* Configure the system clock */
        SystemClock_Config();
    
        /* Initialize all configured peripherals */
        MX_GPIO_Init();
        MX_SDIO_SD_Init();
        MX_FATFS_Init();
    
        HAL_Delay(1000);
    
        /* USER CODE BEGIN 2 */
        if(f_mount(&mynewdiskFatFs,(const TCHAR*)SD_Path, 0) == FR_OK)
        {
            if(f_open(&MyFile, "abc.txt",  FA_READ ) == FR_OK)
            {
                // GPIO_SetBits(GPIOD, GPIO_Pin_15);
                if(f_read(&MyFile, wtext, sizeof(wtext), (void *)&wbytes) ==FR_OK);
                {
                    f_close(&MyFile);
                }
            }
        }
    
        while (1)
        {
    
        }
    }
    

2 个答案:

答案 0 :(得分:0)

f_open(&MyFile, "abc.txt",  FA_READ )

查看ffconf.h中有关文件名的配置选项。

尝试使用(FA_OPEN_EXISTING | FA_READ)标记。

以100ms间隔重复使用f_open(),比如5次,直到它返回FR_OK。

答案 1 :(得分:-1)

嗨turboJ我正在使用1位宽SDIO模式连接SD卡,所以没有使用CS我猜