•disk_read(): 从磁盘读取数据。 •disk_write(): 向磁盘写入数据。 •disk_ioctl(): 控制磁盘的操作,比如获取磁盘扇区、块大小、擦除等。 在上位机工程中,我们支持对SD卡及串行闪存盘进行文件系统移植,需添加硬件初始化及磁盘操作的相关头文件(SWM341.h、FlashDisk.h<闪存盘读写擦操作的头文件>),其...
首先是disk_initialize函数,该函数介绍如表46.1.2所示: 表46.1.2 disk_initialize函数介绍 第二个函数是disk_status函数,该函数介绍如表46.1.3所示: 表46.1.3 disk_status函数介绍 第三个函数是disk_read函数,该函数介绍如表46.1.4所示: 表46.1.4 disk_read函数介绍 第四个函数是disk_write函数,该函数介绍如表...
FR_DISK_ERR 由于底层磁盘 I/O 函数中的错误,而导致该函数失败。 FR_INT_ERR 由于一个错误的 FAT 结构或一个内部错误,而导致该函数失败。 FR_NOT_ENABLED 逻辑驱动器没有工作区。 FR_NO_FILESYSTEM 磁盘上没有有效的 FAT 卷。 说明 f_getfree 函数当 _FS_READONLY == 0 并且 _FS_MINIMIZE == 0 ...
DSTATUSdisk_status(BYTE pdrv// 物理编号){DSTATUS status=STA_NOINIT;switch(pdrv){caseATA:// SD CARDbreak;caseSPI_FLASH:// SPI Flash状态检测:读取SPI Flash 设备IDif(sFLASH_ID==SPI_FLASH_ReadID()){// 设备ID读取结果正确status&=~STA_NOINIT;}else{// 设备ID读取结果错误status=STA_NOINIT...
diskio.c 需要实现函数如下: disk_initialize:初始化磁盘驱动器 disk_status:获取磁盘状态 disk_read:从磁盘驱动器读扇区 disk_write:从磁盘驱动器写扇区 disk_ioctl:控制设备实现指定功能,用于辅助FATFS中其他API get_fattime:获取当前时间 disk_initialize ...
disk_read函数用于从存储设备指定地址开始读取一定的数量的数据到指定存储区内。 本移植方案直接调用SD_ReadMultiBlocks函数从SD卡内读取多个块数据,它有四个形参,分别为存储区地址指针、起始块地址、块大小以及块数量。根据判断函数的返回值是否等于SD_RESPONSE_NO_ERROR来确认是否正常读出了数据。 存储设备数据写入函数...
5. 修改FATFS文件中的diskio.c文件 因为正点原子的FATFS例程中,加入了内存管理模块,非常的占内存,基本在无法运行其他自己的算法代码,所以这也是我自己移植FATFS的原因。但正点原子FATFS例程中的diskio.c文件也是可以使用的,但需要简化。如下图,我用第一个函数disk_read()来举例。
3)disk_read 读取函数接口 buff:读取SPI_FLASH数据,buff是将读取的数据放到buff指针变量中 sector:扇区,一个扇区有4096个字节,比如要读第0扇区,那么读数据的开始地址是:04096如果要读第1扇区,那么读数据的开始地址是:14096 count:有两种方式实现,一是要读取的数据长度,也要乘以4096,表示读的是多少个字节,二是如...
DSTATUS disk_initialize ( BYTE pdrv /* 物理驱动识别 */ ) { DSTATUS stat; int result; switch (pdrv) { case SD : //选择SD卡 stat=SD_Init(); //初始化SD卡-用户自己提供 } if(stat)return STA_NOINIT; //磁盘未初始化 return 0; //初始化成功 } 修改disk_read函数...
修改disk_read函数,加入SD卡读任意扇区的函数(需要用户自己提供),其他不用到的选项可以删掉。 修改代码如下: /* 读扇区 */ DRESULT disk_read ( BYTE pdrv,/* 物理驱动编号 - 范围0-9*/ BYTE *buff,/* 数据缓冲区存储读取数据 */ DWORD sector,/* 扇区地址*/ ...