OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2632|回复: 1

请教, SDIO的库函数SDIO_GetFIFOCount()返回的值代表的是什么?

[复制链接]

8

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2019-1-18
在线时间
18 小时
发表于 2019-12-9 15:22:00 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 huangtaichen 于 2019-12-10 18:01 编辑

在利用STM的官方例程测试SD卡的单块写函数; 代码片段如下:
微信截图_20191209152309.jpg
我于其中添加了几行代码用于输出SDID->FIFOcnt 以及 DataCount这两个值; 测试的结果串口输出如下数据:
FIFO count:128
Data count:512
FIFO count:128
Data count:488
FIFO count:121
Data count:456
FIFO count:113
Data count:424
FIFO count:105
Data count:392
FIFO count:97
Data count:360
FIFO count:89
Data count:328
FIFO count:81
Data count:296
FIFO count:73
Data count:264
FIFO count:65
Data count:232
FIFO count:57
Data count:200
FIFO count:49
Data count:168
FIFO count:41
Data count:136
FIFO count:33
Data count:104
FIFO count:25
Data count:72
FIFO count:17
Data count:40
FIFO count:9
Data count:0
FIFO_count:0
Data count:0
sector write ok

---疑问: 当以块写入的时候, DataLength设置成块的大小512字节, 那为何SDIO->FIFOcnt的值在最开始为128呢? 按照库函数的注释, 它是返回剩余可写或者可读的字空间, 而FIFO总共才32字的空间, 这里的128算怎么回事? 如果理解成它是返回FIFO空间剩余可写入字节的个数的话, 则可以解释的通; 不知实际到底是怎样的, 还请各位帮忙解答,谢谢!

>>2019年12月10日更新: 在官方例程的基础上, 先测试的不使用DMA方式通过SDIO接口读写SD卡的块数据, 单个函数测试的时候未发现明显问题, 但是以此为基础添加到fatfs系统后,却在运行时能够偶尔看到底层的SD卡块读写函数出错,导致上层的文件系统函数运行出错;
主要出错的情况有:
块数据读取函数
sd_readsingleblock和块写入函数  sd_writesingleblock能碰到的多发性出错情况:
⑴返回3, 即SD_CMD_RSP_TIMEOUT 命令响应超时;
⑵返回7, SD_START_BIT_ERR 即DATA数据线上漏掉了起始位信号;
工程.png
界面.png
我暂时的应对措施是在这两个函数失败时,采用多次重试的方式来应对的, 目前大概是能够运行起fatfs并进行文件的读写的, 只是想弄清楚上述两个情况出现的原因, 想从根本上解决,谢谢

>>2019年12月10日更新:
出现
" SD_CMD_RSP_TIMEOUT 命令响应超时" 可能的原因是因为使用写块函数后, D0上会出现忙碌信号,此时如果接着发送读块的命令的可能就会无响应; 加入对D0引脚的判断后,问题好像解决了, 现在连续运行未再看到该错误的出现;


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2019-12-10 02:10:03 | 显示全部楼层
你这样加printf,会干扰sdio数据的读取,可能导致读取出问题,建议赋值给变量,最后再输出。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-22 05:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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