有没有人用 Petit FatFs文件系统

2020-01-25 15:20发布

本帖最后由 ding_ding0304 于 2013-8-15 10:59 编辑

我在stc12单片机上移植好了,但不知道怎么去操作文件?我想用它做一个基于PWM的WAV播放器。不知道怎么读取WAV音频数据?
petit_fatfs文件系统在STC12C5A60S2上移植成功(初学) :http://www.amobbs.com/thread-5546800-1-1.html
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
FZK374470412
2020-01-26 00:12
大概看了一下  估计类似znfat的字节流那样处理的,比如你要将读到的字节字节送到VS1003进行播放  可以在这里设置(假设vs1003的送数据函数为SengData(uchar dat))

  1. DRESULT disk_readp (
  2.         BYTE* buffer,                        /* Pointer to the destination object */
  3.         DWORD sector,                /* Sector number (LBA) */
  4.         WORD sofs,                        /* Offset in the sector */
  5.         WORD count                        /* Byte count (bit15:destination) */
  6. )
  7. {
  8.         DRESULT res;
  9.         uint8 r1;
  10.         uint16 bc;
  11.        
  12.         res = RES_ERROR;

  13.         r1 = MMC_SD_SendCommand(17, sector<<9);//读命令
  14.         if(r1 != 0x00)
  15.                 return res;
  16.                
  17.         SPI_CS_Assert();       
  18.        
  19.         bc = 0;
  20.         do
  21.         {                                                        /* Wait for data packet */
  22.                 if(bc++ > 1000)        {SPI_CS_Deassert();return res;}
  23.                
  24.         }while(SPI_WriteByte(0xff) != 0xfe);        //等数据的开始

  25.         /* Skip leading bytes */
  26.         if (sofs)
  27.         {
  28.                 bc = sofs;
  29.                 do
  30.                 {
  31.                         SPI_WriteByte(0xff);
  32.                 }
  33.                 while(--bc);
  34.         }
  35.         if(buffer) /* Store data to the memory */
  36.         {       
  37.                 bc = count;
  38.                 do
  39.                 {
  40.                         *(buffer++)=SPI_WriteByte(0xff);
  41.                 } while (--bc);
  42.         }
  43.         else /* Forward data to the outgoing stream (depends on the project) */
  44.         {
  45.                 bc = count;
  46.                 do
  47.                 {
  48.                         SPI_WriteByte(0xff);           //就是在这里改了  这里只是读取不用  可改为 SendData(uchar dat)  即可
  49.                 } while (--bc);
  50.         }
  51.        
复制代码

一周热门 更多>