本帖最后由 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);
|