完善资料让更多小伙伴认识你,还能领取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; } |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1488 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1420 浏览 3 评论
3217 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1554 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1990 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 17:56 , Processed in 0.469712 second(s), Total 70, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号