OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5239|回复: 1

STM32103RBT6使用HAL库SPI模式下读写SD卡出现问题,求助大神!

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2017-7-27
在线时间
6 小时
发表于 2017-7-27 17:51:48 | 显示全部楼层 |阅读模式
1金钱
源码如下:在写完等待SD卡写完的时候一直不成功;如果我把sector<<9,创建文件可以成功,但是往文件写内容的时候就不成功了,求大神指点,是什么原因?
int MSD0_WriteSingleBlock(uint32_t sector, uint8_t *buffer)
{
   uint8_t r1;
   register uint16_t i;
   uint32_t retry;
   /* if ver != SD2.0 HC, sector need <<9 */
   if(SD0_CardInfo.CardType != CARDTYPE_SDV2HC)
   {
   sector = sector<<9;
   }

   /* Send CMD24 : Write single block command */
   r1 = MSD0_send_command(CMD24, sector, 0);

   if(r1 != 0x00)
   {
   return 1;
   }
   /* Card enable, Prepare to write */
   MSD0_card_enable();
   //MSD0_spi_read_write(DUMMY_BYTE);
// MSD0_spi_read_write(DUMMY_BYTE);
// MSD0_spi_read_write(DUMMY_BYTE);
   /* Start data write token: 0xFE */
   MSD0_spi_read_write(0xFE);

   /* Start single block write the data buffer */
   for(i=0; i<MSD_BLOCKSIZE; i++)
   {
     MSD0_spi_read_write(*buffer++);
   }

   /* 2Bytes dummy CRC */
   MSD0_spi_read_write(DUMMY_BYTE);
   MSD0_spi_read_write(DUMMY_BYTE);



   /* MSD card accept the data */
   retry = 0;
do{
   r1 = MSD0_spi_read_write(DUMMY_BYTE);
   if(++retry>200){
     MSD0_card_disable();
     return 2;
   }

}while((r1&0x1F) != 0x05);
   /* Wait all the data programm finished */
   retry = 0;
do{                 //在等待SD卡空闲的时候R1一直返回0;直到超时,导致写不成功;是什么问题呢?
     r1 = MSD0_spi_read_write(DUMMY_BYTE);
    if(++retry>0x40000){
    MSD0_card_disable();
      return 3;
    }

}while(r1 != 0xff);
   /* chip disable and dummy byte */
   MSD0_card_disable();
   MSD0_spi_read_write(DUMMY_BYTE);

   return 0;
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165369
金钱
165369
注册时间
2010-12-1
在线时间
2110 小时
发表于 2017-7-29 23:11:49 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-1-31 20:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表