打印

求助 哪位大侠用SPI驱动过SD卡,给发个工程文件呀

[复制链接]
2654|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zsh198702|  楼主 | 2011-3-26 09:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zsh198702 于 2011-3-28 10:47 编辑

调了好几天,就是没动静呀!我用的是STM32F103VCT6的芯片
还有就是裸机跑的程序,不要嵌入FS文件系统的,本人刚开始学,搞不了那么复杂的!我用的是SPI2,嘿嘿!
沙发
sjnh| | 2011-3-26 11:14 | 只看该作者
本帖最后由 sjnh 于 2011-3-26 11:18 编辑

SDFATFS_20110228(STM32读写SD卡).rar (502.67 KB) 我用的是103RCT6,SPI2, 后来一直到103ZC(SPI1),107RC(SPI1), 都工作正常,
[local]1[/local]
说明:
1、更换不同的SPI,只需更改diskio.h文件中的
// SPI端口定义
#define SD_SPI            SPI2
#define SD_SPI_GPIO       GPIOB
#define SD_SPI_GPIO_CLK   RCC_APB2Periph_GPIOB
#define SD_SPI_MOSI       GPIO_Pin_15
#define SD_SPI_MISO       GPIO_Pin_14
#define SD_SPI_SCK        GPIO_Pin_13
#define SD_SPI_NSS        GPIO_Pin_12

MMC_SPI_Config(void) 中    RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE);
2、程序中有超时计数,volatile unsigned int disk_timer1, disk_timer2;  中断中减1
     我用的是SysTick_Handler系统时钟中断(10ms一次),可以看stm32f10x_it.c
     程序,我在107中用的是TIMER1中断都没有问题,你可以随便用个定时中断都可以

我从网上下载的源码里有个错误,sdc_diskio.c中Receive_DataBlock函数
do {       /* Receive the data block into buffer */
        *buff++ = SPI_ReadWrite_Byte(0xff);
    } while (btr--);
会多读一个字节, 改了我后面一个数据的内容,程序出错,改成了while (--btr);

使用特权

评论回复
板凳
聆风| | 2011-3-26 12:37 | 只看该作者
请问速度如何?  一秒最多能读多少个字节?

使用特权

评论回复
地板
聆风| | 2011-3-26 12:37 | 只看该作者
请问速度如何?  一秒最多能读多少个字节?

使用特权

评论回复
5
yinyangdianzi| | 2011-3-26 20:19 | 只看该作者
现在流行直接挂NAND啊

使用特权

评论回复
6
banhushui| | 2011-3-26 23:01 | 只看该作者
SD卡驱动估计大家比较容易忽略初始化时,时钟速度要使用低速,一般400K就可以了

使用特权

评论回复
7
香水城| | 2011-3-27 14:24 | 只看该作者
ST的USB开发包中就有例子。

使用特权

评论回复
8
Aaron238| | 2011-3-27 18:01 | 只看该作者
有时间看看

使用特权

评论回复
9
zsh198702|  楼主 | 2011-3-27 21:17 | 只看该作者
谢谢2楼的大侠!谢谢大家对本贴的支持

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

55

帖子

1

粉丝