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

[复制链接]
3216|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, 下载次数: 215) 我用的是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 | 显示全部楼层
请问速度如何?  一秒最多能读多少个字节?
yinyangdianzi 发表于 2011-3-26 20:19 | 显示全部楼层
现在流行直接挂NAND啊
banhushui 发表于 2011-3-26 23:01 | 显示全部楼层
SD卡驱动估计大家比较容易忽略初始化时,时钟速度要使用低速,一般400K就可以了
香水城 发表于 2011-3-27 14:24 | 显示全部楼层
ST的USB开发包中就有例子。
Aaron238 发表于 2011-3-27 18:01 | 显示全部楼层
有时间看看
 楼主| zsh198702 发表于 2011-3-27 21:17 | 显示全部楼层
谢谢2楼的大侠!谢谢大家对本贴的支持
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

55

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部