完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
是这样的,一端用vs1053录音,然后不储存,录到什么直接用2.4G模块发送出去
另一端接收并解码就好了。 //新录音模式 void Record_init(void) { // Kick vs10xx into action! VS_Soft_Reset(); VS_WR_Cmd(SPI_CLOCKF,0x0000); //XTAL(12.288M) = 0X0000; 2*12.288M = 0X4430; VS_WR_Cmd(SPI_BASS, 0x0000); // VS_WR_Cmd(SPI_MODE, 0x1800); // MIC ,录音激活 VS_WR_Cmd(SPI_AICTRL0, 0x0006); // 分配值= 0,则代表默认为12 /* Div -> 12=8kHz 8=12kHz 6=16kHz */ // 采样率8000; 12288000/256*6 = 8000 VS_WR_Cmd(SPI_AICTRL1, 0x0000); // 自动增益 VS_WR_Cmd(SPI_AICTRL2, 0x1000); // 自动增益的最大值 //SPI_AICTRL3 //0BXXXX, X 1 1 0; //SPI_AICTRL3.2 0 ---IMA ADPCM ; 1 ---线性 ADPCM //SPI_AICTRL3.1&0 0 ---- 联合立体声 00 // 1 ---- 双声道 01 // 2 ---- 左通道 10 // 3 ---- 右通道 11 VS_WR_Cmd(SPI_AICTRL3, 0x0005); // 线性ADPCM 双声道 VS_WR_Cmd(SPI_MODE, 0x3844); // MIC ,线路激活0X3804 //delay_ms(10); // Vs1053WriteRegister(SPI_CLOCKF,0x98,0x00); //Delay_ms(100); ; while(!DREQ); //write 1053 patch VS_WR_Cmd(SPI_WRAMADDR, 0x8010); // 0X8010 VS_WR_Cmd(SPI_WRAM, 0x3E12); // 0X3E12 VS_WR_Cmd(SPI_WRAM, 0xB817);//0XB817 VS_WR_Cmd(SPI_WRAM, 0x3E14);//0X3E14 VS_WR_Cmd(SPI_WRAM, 0xF812);//0XF812 VS_WR_Cmd(SPI_WRAM, 0x3E01);//0X3E01 VS_WR_Cmd(SPI_WRAM, 0xB811);//0XB811 VS_WR_Cmd(SPI_WRAM, 0x0007);//0X0007 VS_WR_Cmd(SPI_WRAM, 0x9717);//0X9717 VS_WR_Cmd(SPI_WRAM, 0x0020);//0X0020 VS_WR_Cmd(SPI_WRAM, 0xFFD2);//0XFFD2 VS_WR_Cmd(SPI_WRAM, 0x0030);//0X0030 VS_WR_Cmd(SPI_WRAM, 0x11D1);//0X11D1 VS_WR_Cmd(SPI_WRAM, 0x3111);//0X3111 VS_WR_Cmd(SPI_WRAM, 0x8024);//0X8024 VS_WR_Cmd(SPI_WRAM, 0x3704);//0X3704 VS_WR_Cmd(SPI_WRAM, 0xC024);//0XC024 VS_WR_Cmd(SPI_WRAM, 0x3B81);//0X3B81 VS_WR_Cmd(SPI_WRAM, 0x8024);//0X8024 VS_WR_Cmd(SPI_WRAM, 0x3101);//0X3101 VS_WR_Cmd(SPI_WRAM, 0x8024);//0X8024 VS_WR_Cmd(SPI_WRAM, 0x3B81);//0X3B81 VS_WR_Cmd(SPI_WRAM, 0x8024);//0X8024 VS_WR_Cmd(SPI_WRAM, 0x3F04);//0X3F04 VS_WR_Cmd(SPI_WRAM, 0xC024);//0XC024 VS_WR_Cmd(SPI_WRAM, 0x2808);//0X2808 VS_WR_Cmd(SPI_WRAM, 0x4800);//0X4800 VS_WR_Cmd(SPI_WRAM, 0x36F1);//0X36F1 VS_WR_Cmd(SPI_WRAM, 0x9811);//0X9811 VS_WR_Cmd(SPI_WRAMADDR, 0x8028);//0X8028 VS_WR_Cmd(SPI_WRAM, 0x2A00);//0X2A00 VS_WR_Cmd(SPI_WRAM, 0x040E);//0X040E } //录音代码 void Rec_Mode(u16 agc) { //如果是IMA ADPCM,采样率计算公式如下: //采样率=CLKI/256*d; //假设d=0,并2倍频,外部晶振为12.288M.那么Fc=(2*12288000)/256*6=16Khz //如果是线性PCM,采样率直接就写采样值 VS_WR_Cmd(SPI_BASS,0x0000); VS_WR_Cmd(SPI_AICTRL0,16000); //设置采样率,设置为8Khz VS_WR_Cmd(SPI_AICTRL1,agc); //设置增益,0,自动增益.1024相当于1倍,512相当于0.5倍,最大值65535=64倍 VS_WR_Cmd(SPI_AICTRL2,0); //设置增益最大值,0,代表最大值65536=64X VS_WR_Cmd(SPI_AICTRL3,4); //左通道(MIC单声道输入) VS_WR_Cmd(SPI_CLOCKF,0X2000); //设置VS10XX的时钟,MULT:2倍频;ADD:不允许;CLK:12.288Mhz VS_WR_Cmd(SPI_MODE,0x3804); //MIC,录音激活 delay_ms(5); //等待至少1.35ms // VS_Load_Patch((u16*)wav_plugin,40);//VS1053的WAV录音需要plugin }
尝试了使用两种录音模式, 有plugin的录音效果明显要好(听输出的回音) 但是现在另一端接收到的都是杂音。。不知道是不是RIFF头文件不配套的问题。我找不到配套的只能搜到plugin或RIFF 现在已知是模块都是好的,2.4G是可以发送接收的,可以正常播放mp3和wav。 发送端就是读256字节发送一次,接收端先自动载入RIFF头,然后接收到直接spi再给1053。 |
|
相关推荐
13个回答
|
|
应该是RIFF头的问题,你的文件大小设置为多少? 因为你的录音文件没有结束,事先并不知道文件大小是多少,默认设置是0的,等到录音结束再写入文件总长度.但是你现在这个,明显是还没写入总长度,就要开始播放,建议你可以设置这个文件大小为一个非常大的数,这样测试下,看看能不能播放? |
|
|
|
|
|
|
|
谢谢原子,隔了一段时间才继续实验 我下载了一段vs1003的录音,把头文件挖出来,然后数据段随便找一段发射出去,接收端都可以接到并且正常播放了 感觉上还是发生那边有问题,现在已经打开录音模式听到“回音”了,原子能否分享一下录音函数和录音文件我尝试一下? REC00019.rar (408.78 KB )
--- TX_Mode(); while(1) { LED4=1; do { w = VS_RD_Reg(SPI_HDAT1); } while (w < 256 || w >= 896); /* wait until 512 bytes available */ t = 0; while (t < 256) { w = VS_RD_Reg(SPI_HDAT0); buf[t++] = w>>8; buf[t++] = (u8)w; } for(j=0;j<125;j+=32) { for(t=0;t<32;t++) { tmp_buf[t] =buf[t+j]; } while(NRF24L01_TxPacket(tmp_buf)!=TX_OK)LED4=0; } } --------------- 这是我的发送模式的代码 |
|
|
|
//进入ADPCM 录音模式
//agc:0,自动增益.1024相当于1倍,512相当于0.5倍,最大值65535=64倍 void recoder_enter_rec_mode(u16 agc) { //如果是IMA ADPCM,采样率计算公式如下: //采样率=CLKI/256*d; //假设d=0,并2倍频,外部晶振为12.288M.那么Fc=(2*12288000)/256*6=16Khz //如果是线性PCM,采样率直接就写采样值 VS_WR_Cmd(SPI_BASS,0x0000); VS_WR_Cmd(SPI_AICTRL0,8000); //设置采样率,设置为8Khz VS_WR_Cmd(SPI_AICTRL1,agc); //设置增益,0,自动增益.1024相当于1倍,512相当于0.5倍,最大值65535=64倍 VS_WR_Cmd(SPI_AICTRL2,0); //设置增益最大值,0,代表最大值65536=64X VS_WR_Cmd(SPI_AICTRL3,6); //左通道(MIC单声道输入) VS_WR_Cmd(SPI_CLOCKF,0X2000); //设置VS10XX的时钟,MULT:2倍频;ADD:不允许;CLK:12.288Mhz VS_WR_Cmd(SPI_MODE,0x1804); //MIC,录音激活 delay_ms(5); //等待至少1.35ms VS_Load_Patch((u16*)wav_plugin,40);//VS1053的WAV录音需要plugin } //初始化WAV头. void recoder_wav_init(__WaveHeader* wavhead) //初始化WAV头 { wavhead->riff.ChunkID=0X46464952; //"RIFF" wavhead->riff.ChunkSize=0; //还未确定,最后需要计算 wavhead->riff.Format=0X45564157; //"WAVE" wavhead->fmt.ChunkID=0X20746D66; //"fmt " wavhead->fmt.ChunkSize=16; //大小为16个字节 wavhead->fmt.AudioFormat=0X01; //0X01,表示PCM;0X01,表示IMA ADPCM wavhead->fmt.NumOfChannels=1; //单声道 wavhead->fmt.SampleRate=8000; //16Khz采样率 采样速率 wavhead->fmt.ByteRate=wavhead->fmt.SampleRate*2;//16位,即2个字节 wavhead->fmt.BlockAlign=2; //块大小,2个字节为一个块 wavhead->fmt.BitsPerSample=16; //16位PCM wavhead->data.ChunkID=0X61746164; //"data" wavhead->data.ChunkSize=0; //数据大小,还需要计算 } /////////////////////////////////////////////////////////// //读取数据 w=VS_RD_Reg(SPI_HDAT1); if((w>=256)&&(w<896)) { idx=0; while(idx<512) //一次读取512字节 { w=VS_RD_Reg(SPI_HDAT0); tempval=(short)w; if(tempval<0)tempval=-tempval; if(maxval recbuf[idx++]=w&0XFF; recbuf[idx++]=w>>8; } timecnt++; if((timecnt%2)==0) { temp=recoder_vu_get(maxval); if(temp>vulevel)vulevel=temp; else if(vulevel)vulevel--; recoder_vu_meter(11,200+5,vulevel);//显示vu meter; maxval=0; } if(rec_sta==0X80)//已经在录音了 { res=f_write(f_rec,recbuf,512,&bw);//写入文件 if(res) { printf("err:%drn",res); printf("bw:%drn",bw); break;//写入出错. } sectorsize++;//扇区数增加1,约为32ms } } ///////////////////////////////////////////////////////////// |
|
|
|
|
|
|
|
你后来问题如何解决的?我的需求跟你一样,也是VS1053模块采集完后zigbee发送出去,然后接收端解析后播放,现在也是出现声音不连续的现象,应该是在采集数据的时候进行了无线发送的操作,导致数据不连续。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
有详细代码吗?
|
|
|
|
你是怎么把RIFF的头文件挖出来的,求解啊
|
|
|
|
请问接收端是数据怎么处理的呢?
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2551 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2336 浏览 5 评论
3167 浏览 3 评论
2809 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2769 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
622浏览 1评论
863浏览 0评论
981浏览 0评论
633浏览 0评论
458浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 08:09 , Processed in 1.691530 second(s), Total 100, Slave 84 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号