OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8996|回复: 9

各位朋友帮我看看这段代码,fatfs+MP3的代码,很悲剧

[复制链接]

13

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2012-3-24
在线时间
3 小时
发表于 2012-6-3 18:29:04 | 显示全部楼层 |阅读模式

前天玩板子弄坏的两张sd卡,虽然不能写但是还能读能读。用原子的MP3例程能播放,但是我改的代码却不成功,请教下各位

f_mount ( 0 , &fs );
  
 if ( f_open ( &file , "1.mp3" , FA_READ ) == FR_OK )
  SendString("打开\n");
 else
  SendString("打开失败\n");

 delay_init(72);
 VS_HD_Reset();
 SendString("硬复位\n");

 VS_Soft_Reset();      //软复位VS10XX 
 SendString("软复位\n");

 set10XX();            //设置音量等信息
 SendString("设置音量\n");

 while(1){
  SPI1_SPEED(SPI1_4DIV);
  res=f_read(&file, buffer, BufSize, &br);
     if ((res!=FR_OK)||(br==0))
   break;   // error or eof
  SPI1_SPEED(SPI1_8DIV);
  tp=0;
  if (br<BufSize){
   cnt=br;
   while (cnt--){
    while(!VS_DQ);
    CLR_VS_XDCS;                
    //SendByte(buffer[tp++]);
    SPI1_WriteByte(buffer[tp++]);//送数据给VS1003
    SBIT_VS_XDCS; 
   }      
  }else
   while(tp<BufSize){
          while(!VS_DQ);
    CLR_VS_XDCS;                
    for (cnt=0;cnt<32;cnt++){  
     //SendByte(buffer[tp++]);
     SPI1_WriteByte(buffer[tp++]);//送数据给VS1003
    }      
    SBIT_VS_XDCS;
   }
    }
 switch (res) {
  case 0: SendString("FR_OK\n");
    break;
  case 1: SendString("DISK_ERR\n");
    break;
  case 2: SendString("INT_ERR\n");
    break;
  case 3: SendString("NOT_READY\n");
    break;
  case 4: SendString("NO_FILE\n");
    break;
  case 5: SendString("NO_PATH\n");
    break;
  case 6: SendString("INVALID\n");
    break;   
  default:
    ;
 }

 VS_HD_Reset();  //硬复位                  
 VS_Soft_Reset();//软复位

 if ( f_close ( &file ) == FR_OK )
  SendString("关闭\n");
 else
  SendString("关闭失败\n");

 if ( f_mount ( 0 , NULL ) == FR_OK )
  SendString("卸载\n"); 
 
 SendString("end\n");
  while(1);

上面SendByte()函数是串口输出,如果我不用传数据给vs1003,只是读文本数据发给串口,能成功显示。。纠结啊

串口输出为:
初始化
spi初始化
sine
打开
硬复位
软复位
设置音量
DISK_ERR
关闭
卸载
end

6_3.rar

1.57 MB, 下载次数: 142

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-6-3 18:41:56 | 显示全部楼层
初始化vs1003后就出问题了,看看是不是spi冲突?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2012-3-24
在线时间
3 小时
 楼主| 发表于 2012-6-3 20:01:10 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
应该不是冲突吧!我这样写:
while(!VS_DQ);
SBIT_SD_CS;
CLR_VS_XDCS;
//SendByte(buffer[tp++]);
SPI1_WriteByte(buffer[tp++]);//送数据给VS1003
SBIT_VS_XDCS;
CLR_SD_CS;
结果还是有错
回复 支持 反对

使用道具 举报

13

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2012-3-24
在线时间
3 小时
 楼主| 发表于 2012-6-3 21:13:07 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
实在不知道了。。快发疯了。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-6-3 21:13:07 | 显示全部楼层
正弦测试和ram测试ok么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2012-3-24
在线时间
3 小时
 楼主| 发表于 2012-6-3 21:18:41 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
有bi的一声响,测试程序是你的我没改
回复 支持 反对

使用道具 举报

13

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2012-3-24
在线时间
3 小时
 楼主| 发表于 2012-6-3 21:29:26 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
程序是用下载到ram里面的,不敢烧进flash,程序已经发上去了。。有空帮我找原因行吗?纠结很久了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-6-3 21:57:24 | 显示全部楼层
我是问RAM测试,不是问你是不是刷到RAM...
不过既然你没刷到FLASH测试,建议你flash测试一下.
还有,检查你的dreq信号是否正常...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2012-3-24
在线时间
3 小时
 楼主| 发表于 2012-6-3 22:52:59 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
ram测试原来不成功。。但是为什么烧你的实验程序就成功呢?前面有什么关键步骤啊?我在测试前加硬复位也不行,sine测试成功。
刷flash的话就直接死掉了,程序刚运行到第一个函数就HardFault_Handler了。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-6-4 00:56:46 | 显示全部楼层
检查是不是数组越界了。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 04:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表