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

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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版