|
前面发了3个帖子实现了SD卡的初始化,获取SD卡容量,及读取,本帖实现SD的写功能, 实现写,就要先实现写的函数,依然是拷贝f767的写代码 u8 SD_WriteDisk(u8*buf,u32 sector,u32 cnt) { u8 sta=SD_OK; u32 n; long long lsector=sector; if(CardType!=STD_CAPACITY_SD_CARD_V1_1)lsector<<=9; if((u32)buf%4!=0) { for(n=0;n<cnt;n++) { memcpy(SDMMC_DATA_BUFFER,buf,512); sta=SD_WriteBlocks(SDMMC_DATA_BUFFER,lsector+512*n,512,1);//单个sector的写操作 buf+=512; } }else sta=SD_WriteBlocks(buf,lsector,512,cnt); //单个/多个sector return sta; } 然后写个test_write函数 void sd_test_write(u32 secaddr,u32 seccnt) { u32 i; u8 *buf; u8 sta=0; buf=(u8 *)malloc(512*sizeof(u8)); //从SDRAM申请内存 for(i=0;i<seccnt*512;i++) //初始化写入的数据,是3的倍数. { buf=0xff; } sta=SD_WriteDisk(buf,secaddr,seccnt);//从secaddr扇区开始写入seccnt个扇区内容 if(sta==0) { printf("Write over!\r\n"); }else printf("err:%d\r\n",sta); free(buf); //释放内存 } 本函数也是在f767的代码基础上更改实现的 在while(1)中添加如下代码 sd_test_write(0,1); delay_ms(1000); sd_test_read(0,2); delay_ms(1000); 打印到串口助手内容见图 果然都实现了,今天收获颇丰啊,下周开始移植fatfs文件系统 发帖与2018年3月9日 |
| 支持 沙发 |
| 谢谢支持啊 |
微信公众号
手机版