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;
}

相关文章推荐

关于petitfatfs的移植问题

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

Petit FatFs文件系统移植至STC89C52RC

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

uCOS-II在51单片机上的移植

约定:文中所写的硬件堆栈或系统堆栈是指51单片机SP指针所指向的堆栈空间,而用户堆栈或任务堆栈是指用来保存任务状态为每个任务分配的堆栈空间。       前一段时间一直在学习UCOS-II...

制作esp8266+c51,点亮单片机上的led小灯

最近有朋友让我做一个手机通过wifi控制51单片机led小灯(功能很简单,就是一个床头灯)。我上网查了查,esp8266wifi模块功能很强大,但是没有基于51的(其实有几篇,但是通过实践都不好使,不...

uC/OS-II在C8051F020单片机上的移植

1 uC/OS-II的版本和C8051F020单片机的集成开发环境 µC/OS-II内核使用了V2.52版本。虽然Silicon Lab公司免费提供C8051F系列单片机的集成开发环境,由于使用习惯...

uCOS-Ⅱ在C167CR单片机上的移植

  • 2013年02月26日 23:35
  • 24KB
  • 下载

uCOS-II v2.52在MCS-51系列单片机上的移植实例(修订版)

【uCOS_51的修订版】 uCOS_51的修订版是基于第一版不足之处作出修订,主要涉及修改OS_CPU_A.ASM汇编源文件、增加STARTUP.A51用户上电初始化程序等。 【uCOS_51的...

Petit FatFs移植到STC89C52RC

  • 2012年10月28日 23:32
  • 104KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Petit FatFS在51单片机上的移植
举报原因:
原因补充:

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