野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 27383|回复: 9

sdio实验存在SD_WaitReadOperation()死循环问题(已解决)

[复制链接]
发表于 2014-6-18 00:49:22 | 显示全部楼层 |阅读模式
昨天测试sdio,可以擦除,但是读写存在问题,经过一番排查,是SD_WaitReadOperation()存在假死的情况,而SD_WaitWriteOperation()则不存在。

现在问题找到了,但是不知道该如何解决,网上说中断函数SD_Error SD_ProcessIRQSrc(void)的问题,可还是不管用,我想问问大家都不存在这个问题么?还是我的卡存在问题?

快崩溃了,楼主得先去碎觉了
回复

使用道具 举报

发表于 2014-6-18 09:14:12 | 显示全部楼层
嗯,其实换卡估计可以解决
回复 支持 反对

使用道具 举报

发表于 2014-6-18 09:14:57 | 显示全部楼层
不知道ST官方的SDIO例程新版的对SD卡的兼容性支持会不会好一点
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-18 11:35:59 | 显示全部楼层
笪芳馥 发表于 2014-6-18 09:14
嗯,其实换卡估计可以解决

谢谢大家的帮忙,问题得到解决了。我仔细读了下代码,之所以擦除部分正确是因为sd的分频系数较高,使得sd卡保持在400k情况下通信,而读写操作则恢复到24m速度,可能是我卡的问题吧,在这个速度下无法通信,我将起改为18m就ok了!

可能每个人手中卡都有一些局限性吧,解决了就ok
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-18 11:36:41 | 显示全部楼层
公孙璇娟 发表于 2014-6-18 09:14
不知道ST官方的SDIO例程新版的对SD卡的兼容性支持会不会好一点

谢谢回复,其实是我卡的读写速度跟不上造成的强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

发表于 2014-6-18 11:51:57 | 显示全部楼层
我要上自习 发表于 2014-6-18 11:36
谢谢回复,其实是我卡的读写速度跟不上造成的强烈支持,非常感谢哥们

那估计把速度改慢点,大部分的卡都能支持了?具体是哪里配置分配系数的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-18 12:02:08 | 显示全部楼层
随风 发表于 2014-6-18 11:51
那估计把速度改慢点,大部分的卡都能支持了?具体是哪里配置分配系数的?

如果你用的是火哥写的驱动,直接将sdio_sdcard.h 中#define SDIO_TRANSFER_CLK_DIV  ((uint8_t)0x01) 改为大一些的数,实际上改为2就可以了,公式为SDIO_CK=HCLK/(2+DIV系数)
回复 支持 反对

使用道具 举报

发表于 2014-7-22 16:31:13 | 显示全部楼层
我也遇到,具体是在SD_WaitWriteOperation()中的while ((SD_DMAEndOfTransferStatus() == RESET) && (TransferEnd == 0) && (TransferError == SD_OK)中,但是我就是自己移植的时候没有把SD_ProcessIRQSrc()放到void SDIO_IRQHandler(void)中,唉,,,太SB了
回复 支持 反对

使用道具 举报

发表于 2019-8-26 16:50:11 | 显示全部楼层
确实改了#define SDIO_TRANSFER_CLK_DIV  ((uint8_t)0x01)就可以了,我整合到freertos里,必须改到0x8才正常
回复 支持 反对

使用道具 举报

发表于 2020-3-22 02:34:15 | 显示全部楼层
挖下坟,修改这个#define SDIO_TRANSFER_CLK_DIV  ((uint8_t)0x01)  还真的有用,找到了位置找不到原因
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-22 09:38 , Processed in 0.031252 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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