完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
源码如下:在写完等待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 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; } |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
636 浏览 1 评论
976 浏览 0 评论
858 浏览 0 评论
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
4810 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
3612 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-12 00:34 , Processed in 1.292071 second(s), Total 71, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3853