在线时间0 小时
UID28444
ST金币0
蝴蝶豆0
注册时间2008-1-8
新手上路
- 最后登录
- 1970-1-1
|
a0a.1 0b0c
一开始碰到的问题:发送CMD0能执行返回01,CMD1超时没响应。查到原因:模板程序控制SD供电逻辑反了。
#if 0
#define MSD_POWER_ON() GPIO_ResetBits(GPIOD, GPIO_Pin_10)
#define MSD_POWER_OFF() GPIO_SetBits(GPIOD, GPIO_Pin_10)
#else
#define MSD_POWER_ON() GPIO_SetBits(GPIOD, GPIO_Pin_10)
#define MSD_POWER_OFF() GPIO_ResetBits(GPIOD, GPIO_Pin_10)
#endif
第二个问题:单步执行CMD0,CMD1,有响应,直接运行没响应。查到原因,上电时间少于1ms,SD卡内部复位没准备好,初始化前加廷时1ms.
/* delay 1ms*/
delay(5000);
/* MSD chip select low */
MSD_CS_LOW();
/* Send CMD0 (GO_IDLE_STATE) to put MSD in SPI mode */
MSD_SendCmd(MSD_GO_IDLE_STATE, 0, 0x95);
第三个问题:有时执行还是没有响应。原因,SD卡初始化SPI时钟要在100kHz到400kHz之间,更改SPI速率为180kHz.
第四个问题:读SD卡CSD寄存器没返回数据。原因:供电不足,平时只有2.9V,SPI通迅时,出现瞬间低于2.7V现像。短接直接供3.3V,如附图。继续其它试验。
出处:kimfufree |
|