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

STM32F407 SPI模式SD卡 高速读写出错,低速正确

[复制链接]
fwjie123 提问时间:2014-6-25 22:20 /
 今天在STM32F4  Discovery上弄SPI   模式的SD卡,初始化没问题,用的 是SPI1,现在读写扇区都正确,但是读写数据确出错了,问题如下:在速度不进行分频时:
void Set_SPI_HighSpeed(void)
{
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
  SPI_Init(SD_SPI, &SPI_InitStructure);  
  SPI_Cmd(SD_SPI, ENABLE);                                                        
}
写入一个散区数据再读出来,串口打印如下:
 sd capacity is : 7460 MB
SD Card SDHC
Write Sector Test:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
Write Sector Success
 
Read Sector Test
Read Sector Success
0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0   €  8 9 0 1 2   6 7 8 9 0  
 
可以看出,读出来的数据不正确
 
但是如把把分频改为2分频,如下:
void Set_SPI_HighSpeed(void)
{
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
  SPI_Init(SD_SPI, &SPI_InitStructure);  
  SPI_Cmd(SD_SPI, ENABLE);                                                                
}
 
读写结果如下:
 sd capacity is : 7460 MB
SD Card SDHC
Write Sector Test:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
Write Sector Success
 
Read Sector Test
Read Sector Success
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 


可以看出读出的正是写入的数据,这是不是我的卡的问呢,SDHC卡,SPI 1的速度最高37.5 bits/s,还不到5 MB/S,这太快了?
<
收藏 评论15 发布时间:2014-6-25 22:20

举报

15个回答
stm32神舟开发板 回答时间:2014-6-26 11:38:18

RE:STM32F407 SPI模式SD卡 高速读写出错,低速正确

这个跟硬件线路有关,布局得不好也影响理论性能
尤其你通过飞线引出的,没有按照规范,只能验证线路是否通顺,原理是否合理,但要达到最高速率,可能需要设计合理的PCB以及以及布局好的PCB板上进行验证会比较好。
vivy 回答时间:2014-6-26 11:39:47

RE:STM32F407 SPI模式SD卡 高速读写出错,低速正确

学习
有缘于你 回答时间:2014-6-26 17:07:38

RE:STM32F407 SPI模式SD卡 高速读写出错,低速正确

bits/s和B/s的比例你算一下?超了好不
dzc2001 回答时间:2014-6-27 11:56:09

回复:STM32F407 SPI模式SD卡 高速读写出错,低速正确

 spi别用高速啊,那个达不到
深秋独影 回答时间:2014-6-27 22:29:39

RE:STM32F407 SPI模式SD卡 高速读写出错,低速正确

5 MB/S至少是40Mb/s吧
feel-376797 回答时间:2014-6-28 08:34:50

RE:STM32F407 SPI模式SD卡 高速读写出错,低速正确

STM32F4  Discovery上SD卡只能做到2M.
Eagleson 回答时间:2014-6-28 11:24:06

RE:STM32F407 SPI模式SD卡 高速读写出错,低速正确

SPI的速度一般都要分频,到了最高速度就会有误码的问题。如果速度要求不高,就二分频呗
feiante-155820 回答时间:2014-6-28 22:08:41

RE:STM32F407 SPI模式SD卡 高速读写出错,低速正确

就是速度太高了。。。
aaa999kk 回答时间:2014-6-30 15:31:17

RE:STM32F407 SPI模式SD卡 高速读写出错,低速正确

你速度设置的有问题
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版