VS1003 的 RAM 和 Sine 测试问题...请教大虾!
最近在调试 VS1003 模块, 硬件是买的现成的模块, 感觉应该没有什么问题吧!以前也没做过类似的音乐方面的!所以觉得程序可能有问题.我在初始化,和读写寄存器都没有问题, 写进去多少读出来也是多少! 初始化后读出来的缺省值和芯片手册的一样.问题就出现在 RAM 和 Sine 的测试上,
RAM 有时候测试正常,即返回值是 807F 但有时候全是 0, 不过正常的几率要大一点,但是 正弦测试就不是这样了, 几率很小, 偶尔能有声音, 并且这个声音是在我单步执行到 发送正弦测试命令后,并且马上退出调试它才会有声音出来,不会在调试程序的时候出来!觉得甚是奇怪,望大虾们指点...
/*-----------------------------------------------------------
** 函数名称: VS1003RAMTest
** 功 能: VS1003 的 RAM 测试.
** 参 数: 无
** 备 注:
** 创建日期: 2010 - 10 -07
------------------------------------------------------------*/
UINT VS1003RAMTest(void)
{
UINT regvalue = 0, temp;
temp =Read_VS_REG(SPI_MODE);
/* 使能 SDI 测试 */
Send_VS_Command(SPI_MODE, 0x0820);
while(DREQValue == 0);
VS1003_XDCS_L;
SPIx_SenRecvONEByte(MP3_SPI, 0x4d);
SPIx_SenRecvONEByte(MP3_SPI, 0xea);
SPIx_SenRecvONEByte(MP3_SPI, 0x6d);
SPIx_SenRecvONEByte(MP3_SPI, 0x54);
SPIx_SenRecvONEByte(MP3_SPI, 0x00);
SPIx_SenRecvONEByte(MP3_SPI, 0x00);
SPIx_SenRecvONEByte(MP3_SPI, 0x00);
SPIx_SenRecvONEByte(MP3_SPI, 0x00);
Delay_time(1000);
VS1003_XDCS_H;
regvalue = Read_VS_REG(SPI_HDAT0);
/* 还原寄存器内容 */
Send_VS_Command(SPI_MODE, temp);
return (regvalue);
}
/*-----------------------------------------------------------
** 函数名称: VS1003SineTest
** 功 能: VS1003 的正弦测试.
** 参 数:
** 备 注:
** 创建日期: 2010 - 10 -07
------------------------------------------------------------*/
void VS1003SineTest(void)
{
UINT temp;
temp =Read_VS_REG(SPI_MODE);
/* 使能 SDI 测试 */
Send_VS_Command(SPI_MODE, 0x0820);
while(DREQValue == 0);
VS1003_XDCS_L;
SPIx_SenRecvONEByte(MP3_SPI, 0x53);
SPIx_SenRecvONEByte(MP3_SPI, 0xef);
SPIx_SenRecvONEByte(MP3_SPI, 0x6e);
SPIx_SenRecvONEByte(MP3_SPI, 0x30);
SPIx_SenRecvONEByte(MP3_SPI, 0x00);
SPIx_SenRecvONEByte(MP3_SPI, 0x00);
SPIx_SenRecvONEByte(MP3_SPI, 0x00);
SPIx_SenRecvONEByte(MP3_SPI, 0x00);
Delay_time(500);
VS1003_XDCS_H;//应该能听到一个单一频率的声音吧.
while(DREQValue == 0);
//退出正弦测试
VS1003_XDCS_L;
SPIx_SenRecvONEByte(MP3_SPI, 0x45);
SPIx_SenRecvONEByte(MP3_SPI, 0x78);
SPIx_SenRecvONEByte(MP3_SPI, 0x69);
SPIx_SenRecvONEByte(MP3_SPI, 0x74);
SPIx_SenRecvONEByte(MP3_SPI, 0x00);
SPIx_SenRecvONEByte(MP3_SPI, 0x00);
SPIx_SenRecvONEByte(MP3_SPI, 0x00);
SPIx_SenRecvONEByte(MP3_SPI, 0x00);
Delay_time(500);
VS1003_XDCS_H;
/* 还原寄存器内容 */
Send_VS_Command(SPI_MODE, temp);
}
上面是我的测试程序. 感觉坛里做过 VS1003 的有很多啊!怎么都没有位热心的啊?给个建议也好啊!............. 问题已经解决 是怎么样解决的呢?晕~~~就简单“问题已经解决 ” 回复【2楼】ngyg12
-----------------------------------------------------------------------
测试前加了个硬件复位...呵呵 我的程序跟楼主的差不多问题是在正弦测试前我软硬都复位了就是没声音啊.................. 我的问题也解决了 是模块有问题...............................
页:
[1]