Petit FatFS在51单片机上的移植

原创 2011年01月20日 13:06:00

    一直对MP3的制作报有极大的兴趣,之前己经用沁恒的CH375 + STC12C5A60S2 + VS1003方案实现,但对于底层文件系统和USB通讯协议都是由沁恒提供的库实现的,并且它不开源,同时考虑到一块CH375价格在20价左右,不菲,于是下定决心要直接在SD卡上实现文件系统的管理。

    在网上找了下文件系统,发现几乎没有针对51单片机的文件系统,偶然之间在看到网上看到了Petit FatFS,http://hi.baidu.com/tlptotop/blog/item/21c30b2ae0c9a4f5e7cd40de.html

兴奋之余,立即着手开始移植,由于对SD卡己经有一些的时间的认识于是移植的过程倒是没没有花费多少时间,由于考虑做的是MP3,在移植时并没有移植写函数。

涉及的文件是diskio.c中的disk_readp()函数,修改如下

/*-----------------------------------------------------------------------*/
/* Read Partial Sector                                                   */
/*-----------------------------------------------------------------------*/

DRESULT disk_readp (
 BYTE* dest,   /* Pointer to the destination object */
 DWORD sector,  /* Sector number (LBA) */
 WORD sofs,   /* Offset in the sector */
 WORD count   /* Byte count (bit15:destination) */
)
{
 DRESULT res;
 // Put your code here
 int8u temp; 
 int16u i=0; 
    int8u cmd[]={0x51,0x00,0x00,0x00,0x00,0xff};
 sector=sector<<9;
 cmd[1]=((sector&0xff000000)>>24);
 cmd[2]=((sector&0x00ff0000)>>16);
 cmd[3]=((sector&0x0000ff00)>>8);
 SPI_CS=0;
//写命令
 do{
  temp=SDWriteCmd(cmd);
  i++;
  if(i>100)
   return 0x01;
 }while(temp!=0x00);
 while(SDReadByte()!=0xfe);
 for(i=0;i<sofs;i++)
  SDReadByte();//跳过sofs个字节
 for(i=0;i<count;i++)//读取count个字节
  *(dest+i)=SDReadByte();
 SDReadByte();
 SDReadByte();
 SPI_CS=1;
 SDWriteByte(0xff);
 res=RES_OK;
 return res;
}

南京沁恒资料ch341 ch375

  • 2010年01月08日 14:46
  • 12.35MB
  • 下载

Petit FatFS在STC12C5A60S2实现移植

Petit FatFS在STC12C5A60S2实现移植 简介   Petit FatFs 是FatFs的精简版,比较适用于低端8位单片机中。可以用在小RAM的单片机中,RAM可以小于扇区的RAM...
  • ky_heart
  • ky_heart
  • 2016年10月20日 22:54
  • 516

关于petitfatfs的移植问题

我用petit fatfs给sd卡里的txt文件夹写数据,为什么会把原来的数据给刷掉,只有当下写的数据。移动读写指针好像也不管用。这是什么原因?请大家指教。...
  • liu454638324
  • liu454638324
  • 2013年04月18日 21:12
  • 762

Petit FatFs文件系统移植至STC89C52RC

MCU:STC89C51RC 最高主频:80M Flash:4K SRAM:512B EEPROM:4K 系统:Petit FatFs 集成开发环境:keil ...
  • toraloo
  • toraloo
  • 2012年10月28日 23:49
  • 2988

关于petitfatfs的移植问题

我用petit fatfs给sd卡里的txt文件夹写数据,为什么会把原来的数据给刷掉,只有当下写的数据。移动读写指针好像也不管用。这是什么原因?请大家指教。...
  • liu454638324
  • liu454638324
  • 2013年04月18日 21:12
  • 762

FatFs中文介绍和移植方法

本文很不错,故转载如下,但不是最新版的FatFS。 FatFS的官方网站  提供了详细的资料 ——————————————一下为转载—————————————————————- 下面是我做的一...
  • andylauren
  • andylauren
  • 2016年08月26日 11:13
  • 2357

使用STM32CUBEMX生成FatFS代码,操作SPI FLASH

首先配置SPI,我的板子是SPI2连接到SPI FLASH 上,我的flash是W25Q64.
  • mengfei314
  • mengfei314
  • 2016年03月10日 21:50
  • 4924

STM32的FATFS文件系统移植笔记

链接: http://www.cnblogs.com/GL-BBL/archive/2012/08/20/2647347.html   一、序言     经常在网上、群里看到很多人问关于ST...
  • OLillian
  • OLillian
  • 2014年02月24日 12:01
  • 14271

FATFS移植、调试过程(在STM32上使用W25Q64)

花了几天的时间好不容易自己移植好了FATFS,以前一般都是用别个现成的东西,真的自己移植还是有一点点的操蛋。 移植FATFS其实不难,当然这是对于一个成功移植好的人来说。FATFS移植资料网...
  • Jun626
  • Jun626
  • 2017年06月09日 10:41
  • 1307

fatfs 学习笔记--f_write用法(最新版本R0.13)

f_write The f_write writes data to a file. FRESULT f_write ( FIL* fp, /* [IN] Pointer...
  • lbaihao
  • lbaihao
  • 2017年07月15日 10:44
  • 2026
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Petit FatFS在51单片机上的移植
举报原因:
原因补充:

(最多只允许输入30个字)