你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32CUBEMX生成的SDIO和以前版本的不一样

[复制链接]
feiante 提问时间:2017-8-8 13:36 /
本帖最后由 feiante 于 2017-8-8 14:52 编辑

F4芯片的V1.16版本的HAL库,在用stm32CUBEMX生成SDIO时,有一些小bug,如下
/* SDIO init function */

void MX_SDIO_SD_Init(void)
{

  hsd.Instance = SDIO;
  hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;
  hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;
  hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;
  hsd.Init.BusWide = SDIO_BUS_WIDE_1B;
  hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE;
  hsd.Init.ClockDiv = 0;

}

缺少HAL_SD_Init函数。
stm32f4xx_hal_sd_h文件也和以前版本的不一样了
收藏 评论6 发布时间:2017-8-8 13:36

举报

6个回答
moyanming2013 回答时间:2017-8-8 14:40:24
本帖最后由 moyanming2013 于 2017-8-8 16:20 编辑

结论别下那么快,你稍微深入的看看自己的代码了吗就给这个结论?STM32CubeMX生成的SDIO没有问题!
下图是生成的正确的典型代码:

QQ截图20170808142749.jpg

1.打开“bsp_driver_sd.c”,里面有个BSP_SD_Init()函数,该函数会调用HAL_SD_Init函数。
2.打开“sd_diskio.c”,里面有个SD_initialize(BYTE lun)函数,它会调用BSP_SD_Init()。
在“sd_diskio.c”中还有个变量:const Diskio_drvTypeDef  SD_Driver;SD_Driver是个结构体变量,里面含有指向SD_initialize(BYTE lun)函数的指针。
3.打开“fatfs.c”,其中有个MX_FATFS_Init()函数,该函数会把SD_Driver连接到FATFS文件系统,从而在初始化时间接调用HAL_SD_Init
如果你没用文件系统,那么也需要自己负责调用SD_Driver的一些函数指针。
如果不用Cube也行,需要自己根据参考手册完成SD的所有内容。
如果要添加文件系统但不用FATFS也行,你自己参考微软的文档自己写一个。





张亚飞 回答时间:2017-8-9 09:23:17
楼上很到位。
枫天123 回答时间:2017-11-20 17:42:29
能否参考下大神们的代码,我怎么生成的代码仅能检测到而已。。。不能读写呢?
g921002 回答时间:2017-11-20 22:29:02
CubeMX4.23 + fatfs R0.12 + SD 這個目前有Bug,不過Bug不在那邊。主要是SDIO Write那邊。
這個issue有提交。目前我是用SPI先應急。SDIO有興趣的朋友可以按照1,2文章修改。
1.http://community.st.com/thread/4 ... rite-speed-solution
2.http://community.st.com/docs/DOC ... fatfs-configuration

官方回應已經提交修訂
http://community.st.com/inbox
16块钱的廉价耳机 回答时间:2018-3-12 12:06:03
这个SDIO档驱动修改完毕了吗
nini2255 回答时间:2018-8-15 15:20:27
枫天2015 发表于 2017-11-20 17:42
能否参考下大神们的代码,我怎么生成的代码仅能检测到而已。。。不能读写呢? ...

您好,我的也是只能检测,但读写测试失败!
与硬石的程序对比,发现SD 读写函数不一样了,不知道怎么解决!

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版