完善资料让更多小伙伴认识你,还能领取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个回答
|
|
这个跟硬件线路有关,布局得不好也影响理论性能
尤其你通过飞线引出的,没有按照规范,只能验证线路是否通顺,原理是否合理,但要达到最高速率,可能需要设计合理的PCB以及以及布局好的PCB板上进行验证会比较好。 |
|
|
|
|
|
bits/s和B/s的比例你算一下?超了好不
|
|
|
|
spi别用高速啊,那个达不到
|
|
|
|
5 MB/S至少是40Mb/s吧
|
|
|
|
STM32F4 Discovery上SD卡只能做到2M.
|
|
|
|
SPI的速度一般都要分频,到了最高速度就会有误码的问题。如果速度要求不高,就二分频呗
|
|
|
|
就是速度太高了。。。
|
|
|
|
你速度设置的有问题
|
|
|
|
不知道老兄可是直接将战舰spi驱动sd卡的函数文件移植过来的,还是自己编写的
|
|
|
|
有没有完整的例程让我学习下
|
|
|
|
是呀,能提供例程不?正在学习SD卡读写呢
|
|
|
|
有没有完整的例程 我也在学习SD卡的读写实验 可是就是弄不对
|
|
|
|
速度设置的问题
|
|
|
|
帮顶!!!!!!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1423 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1359 浏览 3 评论
2902 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1504 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1934 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 03:25 , Processed in 1.823689 second(s), Total 102, Slave 85 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号