stm32 VS1053 接受网络音频数据包播放没声音

2019-10-16 03:34发布

新人刚学习,求助下,研究了几天了,网上这类的资料比较少,麻烦大家了。

首先在int main(void)里面初始化

 VS_Init();   // 初始化vs1053
Audiosel_Set(0);//音频通道设置为MP3

然后附上接收以后处理的代码
void udp_appcall(void) {
struct udp_demo_appstate *s = (struct udp_demo_appstate *)&uip_udp_conn->appstate;

if(uip_newdata()) {
printf("udp lport: len %d ", uip_len);

if(0 == (udp_sta&(1<<16))) {
udp_len = uip_len;
PlayLen = uip_len;
memset(udp_data_buf, 0, sizeof(udp_data_buf));   
memcpy(udp_data_buf, uip_appdata, udp_len);   //接收到的网络音频数据
udp_sta |= 1<<12;

 //VS_Sine_Test();
VS_HD_Reset();
VS_Soft_Reset();
VS_Restart_Play();   
VS_Set_All();         
VS_Reset_DecodeTime(); //
VS_SPI_SpeedHigh(); //

i =0;
do
{
    memcpy(sz1Buff,new_udp_data_buf + i,32);   //复制32个字节
    if(VS_Send_MusicData(sz1Buff) == 0)     //向vs发送数据   
     {
        i += 32;
        printf("VS_Send_MusicData %d ", i);
    }
     }
     while(i < PlayLen);
       sprintf(new_udp_data_buf,"Len=%d ",udp_len);//(udp_data_buf[5]-1)*256 + (udp_data_buf[6]-1));
       LCD_ShowString(30,310,200,16,16,new_udp_data_buf);
    }
}

一直都是突突突的声音,正选波测试过,是可以的。网络音频数据也检测是正确的,用其他系统的可以正常播放。麻烦大家帮忙下,万分感谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
正点原子
2019-10-16 07:09
回复【4楼】a2000030642a:
---------------------------------
要想让VS1053播放音乐,首先必须发送音乐的相关信息数据给VS1053,对于WAV,则要发送WAV头,告诉VS1053,接下来收到的数据,都是WAV数据,得到声道/采样率/位数等非常重要的信息,才可以开始播放.
如果你直接就送wav数据流,那是肯定不会播放的...
因为他并不知道你送的是什么数据.

具体细节,可以参考下我们的战舰V3的综合实验,里面 的nes游戏发声,就是vs1053做的,里面会事先发送一个wav头给VS1053.

一周热门 更多>