硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3739|回复: 4
收起左侧

[FatFs] SDIO驱动SD卡的写多块的问题

[复制链接]

9

主题

38

回帖

65

积分

初级会员

积分
65
发表于 2019-7-16 20:14:05 | 显示全部楼层 |阅读模式
有个地方不是很明白,就是disk_write这里,写完之后为什么是调用SD_WaitReadOperation这个函数进行检查是否完成,而不是调用SD_WaitWriteOperation进行监测呢?
驱动文件上写的是用SD_WaitWriteOperation。
  1. *
  2.   *          E - Programming Model (Selecting DMA for SDIO data Transfer)
  3.   *          ============================================================
  4.   *             Status = SD_Init(); // Initialization Step as described in section A
  5.   *
  6.   *             // SDIO Interrupt ENABLE
  7.   *             NVIC_InitStructure.NVIC_IRQChannel = SDIO_IRQn;
  8.   *             NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  9.   *             NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  10.   *             NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  11.   *             NVIC_Init(&NVIC_InitStructure);
  12.   *             // DMA2 STREAMx Interrupt ENABLE
  13.   *             NVIC_InitStructure.NVIC_IRQChannel = SD_SDIO_DMA_IRQn;
  14.   *             NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  15.   *             NVIC_Init(&NVIC_InitStructure);
  16.   *               
  17.   *             // Write operation as described in Section C
  18.   *             Status = SD_WriteBlock(buffer, address, 512);
  19.   *             Status = SD_WaitWriteOperation();
  20.   *             while(SD_GetStatus() != SD_TRANSFER_OK);
  21.   *
  22.   *             Status = SD_WriteMultiBlocks(buffer, address, 512, NUMBEROFBLOCKS);
  23.   *             Status = SD_WaitWriteOperation();
  24.   *             while(SD_GetStatus() != SD_TRANSFER_OK);
复制代码



SDIO.png

评分

参与人数 1金币 +100 收起 理由
eric2013 + 100 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106731
QQ
发表于 2019-7-16 20:40:38 | 显示全部楼层
这个问题提的好,这么多年一直在用读操作完成,竟然也工作这么多年了

回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2020-5-12 08:19:08 | 显示全部楼层
eric2013 发表于 2019-7-16 20:40
这个问题提的好,这么多年一直在用读操作完成,竟然也工作这么多年了

可能是现在的sd卡的速度都很快了,那个等待函数其实没什么用处。。。等同于NOP()而已。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106731
QQ
发表于 2020-5-12 08:40:06 | 显示全部楼层
caicaptain2 发表于 2020-5-12 08:19
可能是现在的sd卡的速度都很快了,那个等待函数其实没什么用处。。。等同于NOP()而已。

跟快慢没关系,是大批量数据读写稳定性的保证。

太重要了,是相当重要。

回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2024-3-30 15:53:45 | 显示全部楼层
这个非常重要
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 23:44 , Processed in 0.248994 second(s), 37 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表