本帖最后由 李航兵 于 2018-8-20 00:27 编辑
学习了原子哥的探索者开发板后,受益匪浅,于是打算自己设计琢磨原子哥给的例程。 最近在学习+半个研究F4的SDIO功能,先学习了SD底层驱动,在此发现原子哥程序的一处bug,或者说错误,
可能有些朋友以前发现过,但是我在教程中没有发觉,所以想来有必要注册会员发送此贴。
SD卡,自己参照官方例程+原子哥程序写的,在官方程序上卡了很久(有三四天了),后来逐步替换原子哥的程序,结果发现了问题。
首先说明一下问题所在地吧。
探索者F4探索者F4 资料盘(A盘)4,程序源码2,标准例程-库函数版本实验38 SD卡实验
唔,就是这个实验,在SD卡驱动文件 sdio_sdcard.c 里面,在函数 SD_EnableWideBusOperation 内部,有一处调用有问题,就是第522行,
有一句 errorstatus=SDEnWideBus(WideMode); 看看SDEnWideBus定义为 SD_Error SDEnWideBus(u8 enx) 但初始化过程中WideMode的值为 SDIO_BusWide_4b,
打开宏定义可看到 #define SDIO_BusWide_4b ((uint32_t)0x00000800)
经强制转换后结果自然为0,也就是DISABLE,所以最终SD卡没有使能宽总线模式。
而我的代码有问题.....不知道什么原因,注释掉宽总线模式则正常运行,所以很烦。
这个问题望原子哥早日解决,嗯,或许可以由此提高SD卡读写速度。。。。。
也可能STM32F4本身的bug...
附图:
一周热门 更多>