1

我正在尝试将 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)
    {

    }
}
4

2 回答 2

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

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

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

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

于 2017-02-09T15:18:07.457 回答
-1

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

于 2016-11-01T16:33:04.870 回答