FRESULT result_9;
FIL file_9;
uint32_t bw_9;
__align(4) char buf_9[1024 * 4] = {0}; //.4-8-16-32-
typedef struct {
uint8_t f_open;
uint8_t f_lseek;
uint8_t f_write;
uint8_t f_sync;
uint8_t f_close;
} cmd_struct;
cmd_struct cmd;
void practice_use(void)
{
if (cmd.f_open) {
cmd.f_open = 0;
result_9 = f_open(&file_9, "6.txt", FA_OPEN_ALWAYS | FA_WRITE | FA_READ);
printf("f_open %d\r\n", result_9);
}
if (cmd.f_lseek) {
cmd.f_lseek = 0;
result_9 = f_lseek(&file_9, f_size(&file_9));
printf("f_lseek %d\r\n", result_9);
}
if (cmd.f_write) {
cmd.f_write = 0;
result_9 = f_write(&file_9, buf_9, sizeof(buf_9), &bw_9);
printf("f_write %d\r\n", result_9);
}
if (cmd.f_sync) {
cmd.f_sync = 0;
result_9 = f_sync(&file_9);
printf("f_sync %d\r\n", result_9);
}
if (cmd.f_close) {
cmd.f_close = 0;
result_9 = f_close(&file_9);
printf("f_close %d\r\n", result_9);
}
}
把单片机里面的sd卡弄成4K的镞,可以用电脑 快格式化成4K, 或者用 fatfs那个格式化函数 弄成4K,或者用安富莱推荐的那个格式化软件,这几种格式化方式我也不知道有啥具体区别,需要用WINhex看看。
我用MDK在线调试,通过在线设置变量cmd的不同的值,来执行命令,然后通过FTP把文件传到电脑里面的SD卡里面. 用WINHEX查看如下:
就可以看到Cluster就是 每4K是一个Cluster。
每512字节就是一个Logical sector。
通过WINHEX查看各种写入情况。