FPGA 学习小组
直播中

赖嘉宁

7年用户 178经验值
私信 关注

使用VS1053在debug优化状态和release状态下播放音乐没有声音

  很奇怪...
在debug状态下,音乐能够正常播放,但是debug优化状态和release状态下都不能播放成功,而且没有声音,不知道怎么回事,可能是哪方面的原因呢?附上程序:[C] 纯文本查看 复制代码
UINT8 PlayMusic(PUINT8 pname){    UINT8 s;    UINT32 i;    UINT32 FileLength=0;    PUINT8 databuf=NULL;        VSInit();   //此处,必须初始化      IOWR(KEY_RECORD_OUT_BASE,0,1);   //写入拉高,播放                 s=CH376FileOpenPath(pname);    if(s==ERR_MISS_DIR||s==ERR_MISS_FILE){        printf("No found!n");        return 1;       }    else{   //打开正常                 FileLength=CH376GetFileSize();        printf("FileLength=%ldn",FileLength);        databuf=(PUINT8)malloc(32*sizeof(UINT8));   //申请分配动态内存空间        if(NULL==databuf) return 1;  //检查动态内存空间分配是否成功          i=0;        while(i纯文本查看 复制代码
UINT8 VS_Send_MusicData(PUINT8 buf){    UINT8 n;    while(IORD(VS_DQ_BASE,0)==0);  //等待空闲     IOWR(VS_XDCS_BASE,0,0);   //发送数据    for(n=0;n<32;n++)    {          Write_Vs_Byte(buf[n]);                   }    IOWR(VS_XDCS_BASE,0,1);   //取消发送数据                         IOWR(VS_XCS_BASE,0,1);           return 0;   //成功发送了}就先这样...

回帖(9)

刘占宽

2019-3-19 12:54:57
仿真一下,看看读数据,什么的正常不。
举报

闫颖慧

2019-3-19 13:10:46
嗯嗯,做过了,读出的数据是完全正确的。现在初步认定是VS1053初始化的问题,因为在release状态下VS1053ReadReg(VS_SCI_MODE)读出的数据一直不稳定,而且看了很多数据,好像根本就不可能达到0x0800,出现最多的反而是0x8000。同学说应该是延时的问题,原子哥以经验觉得应该是什么问题捏?
举报

贺服窍

2019-3-19 13:25:50
初始化的问题已经解决了,在release状态下对VS1053的时序要求比较严格,所以添加了正确的时序就OK了。现在有两个问题想咨询下:
1、上面所发的第一个程序中有这个语句:FileLength=CH376GetFileSize();
     现在的问题是:FileLength得出的值竟然是-1,但打印出的pname值是正确的文件名,所以不知道该怎么解决。之前遇到过类似的问题,第二天再看的时候,可能就解决了;
2、关于优化等级的问题:optimize(-01)、optimize more(-02)、optimize most(-03)、optimize size(-0s)。现在所使用的优化等级是optimize size(-0s)程序运行成功,但如果是optimize(-01)、optimize more(-02)、optimize most(-03)就不成功。想问下它们都分别优化掉什么,是不是不能具体知道它们是怎么优化的,optimize size(-0s)是不是优化掉代码最少的。
谢谢原子哥...
举报

白桦

2019-3-19 13:44:03
1,没用过CH376,你得自己找下资料。 
2,这种问题,你得先仿真,定位优化后问题出在哪里,然后再去分析问题。
一般我遇到这种,就是u8改为vu8就解决了。不过具体的害的结合你的情况分析了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分