天天

vs1003--录音问题

0
阅读(3492)

可以从耳机中听到监听的声音,但是,存储的文件可以播放却不能正确的播放出监听到的声音,而且还有一个问题就是,如,录音60S,播放的是却只有10S的,而且播放的声音一直是“得得”响
录了30S,只播了7S,有时,录到中途就自动退出

产生问题的原因:1.从寄存器读取的数据,是大端格式的,由于刚开始使用大端格式好像没监听到东西,(可能是其他寄存器设置问题吧),所以改用小端格式,所以才产生“得得”响,而一直听不到生音。

2.是SD扇区计数变量的问题,就是该变量定义为unsigned int ,可能是编译器或是芯片的问题,可能识别为2字节数吧,导致录音到中途就停止了,录不完整。

3.录到中途退出,是因为SD写扇区过程中的,产生的问题

解决方法:

1.就直接改为大端格式就可以了。昨天,改为大端格式后,试了一下,能听到录到声音,一阵狂喜。

不过还是不能录完整。

2.用串口调试了一下,写扇区一直在执行,但是,数据却最后没记录在所录得文件里,可能是在于扇区计数的原因吧,试了一下,让串口打印出扇区计数数,明显不对,计数没错,但是写入文件的时候,从文件计算得到的扇区,却没有那么多。想想可能是计数数的问题,于是将unsigned int 改为unsigned long。录了一下,就可以得到比较完整的一段时间,会丢最后1-2S的数据。

3.就是写扇区中,SD有时还在忙的时候,就要判断是否不等于0XFF,所以导致意外退出,改为while((Read_Byte_SPI())!=0xff){};就可以了。

问题全部解决