【问题标题】:SD card can't read write STM32f4SD卡无法读写STM32f4
【发布时间】:2017-03-11 13:10:55
【问题描述】:

我正在尝试将 sd 卡与 STM32F4 连接,但无法正常工作,代码是使用 cubemx 开发的

  1. 接口为 sdio 1 位模式(由于管脚限制)
  2. SD 卡 8 Gb 格式化为默认分配大小

调试步骤:

我单步执行代码 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)
    {

    }
}

【问题讨论】:

  • 如果没有 CS(芯片选择),SD 卡将无法工作。

标签: c arm microcontroller stm32 fatfs


【解决方案1】:

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

【讨论】:

  • 这种情况下DAT3必须拉高,不能开路。
  • 请注意,用于使用单向电平转换器的 SPI 模式的屏蔽可能无法在 SDIO 模式下工作。
【解决方案2】:
f_open(&MyFile, "abc.txt",  FA_READ )

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

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

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

【讨论】:

    猜你喜欢
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多