问题遇到的现象和发生背景 :
硬件:STM32H745 DISCO,以及自己画的一块板子STM32H743
软件:STM32CubeMX + Keil MDK5
工程:ST官方例子(DISCO);以及CubeMX+Keil MDK5开发的读写程序,参考官方例子。
目标:运行50MHz或者更高频率,以8bit方式读写EMMC。
实际:25MHz、12.5MHz及更低频率可以正常读写,一旦频率高于25MHz即Fail。
log:显示器件超时。
详细描述:STM32H7 8bits读写EMMC测试时,当分频比大于等于4(输入200MHz,SDCLK = 200MHz/分频比/2)即时钟小于25MHz时可以正常读写;而当配置分频比为3、2(对应时钟为36/50MHz)时,EMMC可以初始化但是在写盘测试时Fail。
问题相关代码,请勿粘贴截图
MMCHandle->Init->ClockDiv =0//1//2//4; //4 OK, 0,1,2 fail
运行结果及报错内容
Buffer Size to write:100MB --error
通过Debug看到写命令的返回超时。
我的解答思路和尝试过的方法
1- 怀疑是不同的Speed档位需要额外配置?STM32文档中描述有Default Speed和High Speed,分别对应<=25MHz和50/104MHz,但是不清楚具体在哪里配置。CubeMX里没有找到。
2-怀疑是硬件焊接问题,但是原厂DISCO板子+原厂例程仅修改分频率,同样失败。判断非硬件故障。
3- 按照balibala的博文,48MHz SDMMC 时钟配和分频比=0,可以实现30~40MB/s的读写,已经超过了25MHz。看原博文并没有对速度进行什么配置,只是通过CubeMX进行了代码自动生成,并(1)改变了MMC_VOLTAGE_RANGE(改为eMMC_HIGH_)和(2)初始化后重配一下8bits bus width。
至此感觉十分迷惑,原博文里是怎么能跑到超过25MHz的?
我想要达到的结果
希望能够重复博文里面的操作实现超过25MB/s的读写速度。