OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9692|回复: 16

VS1053实现zigbee语音实时传输问题

[复制链接]

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2013-11-29
在线时间
0 小时
发表于 2013-11-29 18:07:38 | 显示全部楼层 |阅读模式
大家好!
本人最近有个项目要实现VS1053的ADPCM采集,然后通过MC13211的zigbee发送出去,有两种方式实现:
1、STM32F103采集VS1053,然后UART给MC13211,MC13211有个成熟的UART-zigbee的程序,可以直接透传。
2、MC13211 SPI采集VS1053,然后内部zigbee发送;

本人在第一种方法的实现思路如下:
VS1053的初始化、RAM检测、ADPCM的采集编码都是成功的,语音4.5kbps的码率,也试过类似微信方式说完后再发送出去,是可以的,但是受限于STM32F103的RAM大小,大约2s的声音能够听到是连续的;也试过保存到SD卡中,ADPCM的方式可以读取。实时发送的方式没有尝试成功;后来为了方便省掉一片MCU,直接用第2种方法。

第2种问题如下:
VS1053的手册大篇幅描述了解码的资料,编码的资料较少,自己的代码如下:

  w=VS_RD_Reg(SPI_HDAT1);                 //查询是否有数据可以采集
  if((w>=256)&&(w<896))
  {   
    while((w>=256)&&(w<896))                //while是为了确保这次采集后下次数据是空的,防止采集完一组后数据又准备好,这时候如果发送zigbee的操作会导致数据采集不完全,可能会有连续的几个256个字节块
    {
      ram=0;
      ptrRxBuf=&RIFFHeader1[Block_num*256];  //存储首地址
      while (ram <256)
      {      
        w = VS_RD_Reg(SPI_HDAT0);           //保存256个字节的数据
        *ptrRxBuf=w>>8;
        ptrRxBuf++;
        *ptrRxBuf=w&0XFF;
        ptrRxBuf++;
        ram+=2;
      }
      Block_num++;              
//      if(Block_num>=7)                     //测试用,看buffer是否会因为没有及时发送出去导致溢出
//        while(1);
      w=VS_RD_Reg(SPI_HDAT1);        //采集完256个字节后看是否还有数据需要继续采集    
    }
    if(w<=200)                                  //防止数据接近256个字节,这时候发送会占用20ms左右的时间,此时间段内不去采集声音,可能会导致数据丢失
   {     
    for(gggg=0;gggg<Block_num;gggg++)
    {
      TRANSMIT = LED_ON;    
      SendVoiceData(&RIFFHeader1[gggg*256],100);      //发送256个字节
      SendVoiceData(&RIFFHeader1[gggg*256+100],100); //因为底层驱动函数已经写好了,测试的时候就分开3次发送了
      SendVoiceData(&RIFFHeader1[gggg*256+200],56);
      TRANSMIT = LED_OFF;
    }
    Block_num=0;
    }
  }


问题描述:
声音断断续续无非是数据没有采集完整,需要采集时MCU在进行其他操作,错过了采集
1、此种查询方法是在尝试中断方式不行后改的,中断有可能会打断正在采集的操作,或者采集数据不完整,丢失部分数据;
2、经测试,上边的代码是数据流不断的发送的,但是接收端还是断断续续的声音。

请大家指教!如何数据完整,声音连续?写的有点乱,见谅!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-29 23:16:20 | 显示全部楼层
你的zigbee的传输速度是多少?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2013-11-29
在线时间
0 小时
 楼主| 发表于 2013-12-1 10:47:31 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢原子回复,250kbp,问题尚未解决,给个思路啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-1 13:30:55 | 显示全部楼层
250Kbps,传输个4.5K,不至于卡吧...
你做个缓冲试试吧,在播放端建立一个缓冲,等缓冲到一定程度,再开始播放。
类似迅雷看看那样。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2013-11-29
在线时间
0 小时
 楼主| 发表于 2013-12-1 15:14:28 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
因为F103和MC13211的RAM很有限,我试过F103大约10K的buffer,大约存2s的声音吧,结果声音是连续的,方式就是先保存,然后发送;如果边保存边发送的话,就断断续续了。现在问题是了解不到VS1053的编码时序,DREQ只用于解码时写入数据,而不能知道编码时什么时候数据满了,只能查询w = VS_RD_Reg(SPI_HDAT0);   所以不知道如何能够保证数据连续,就是在数据读取后直接发送不影响下次数据的读取。
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2013-11-29
在线时间
0 小时
 楼主| 发表于 2013-12-2 10:32:40 | 显示全部楼层
顶啊。。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-2 18:42:01 | 显示全部楼层
只要录那边是连续的,数据不断流,就不至于放不连续吧?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2013-11-29
在线时间
0 小时
 楼主| 发表于 2013-12-4 10:01:39 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
现在发送端和接收端示波器测到码率大约在4055bps,符合要求,但是每隔一段时间会有破音,我掐表看了下,2s-2s-10s,如果数据包没有丢失的话,那就是采集出来的数据有问题了。
回复 支持 反对

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2014-4-5
在线时间
0 小时
发表于 2014-7-23 21:20:47 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
这个缓冲不需要时间吗,能不能有更好的实时的办法呢?因为好多的协议里面都有类似的方法,就是缓冲在发
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-23 23:33:23 | 显示全部楼层
回复【9楼】dhasjksd:
---------------------------------
我没什么其他办法了哦,呵呵
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2014-5-11
在线时间
3 小时
发表于 2014-10-8 15:40:26 | 显示全部楼层
我用 stm32 +  vs1053 + 443mhz的无线 模块 可以 实时发送 ,没有问题   
但是  遇到一个 问题   ,就是老有突突声,   请问 你的录音里 有吗 ?

原子,这个接了 无线模块 老有突突声 ,请问如何解决 。
那位高手 能有解决办法吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-10-8 22:38:12 | 显示全部楼层
回复【11楼】q2386736357:
---------------------------------
是不是数据有断流?
或者数据里面有非法数据?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2014-5-11
在线时间
3 小时
发表于 2014-10-9 07:42:54 | 显示全部楼层
没有断流声音很流畅,我发个录音你听下。

2.wav

8.86 MB, 下载次数: 380

回复 支持 反对

使用道具 举报

11

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2014-5-11
在线时间
3 小时
发表于 2014-10-9 07:43:22 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
没有断流声音很流畅,我发个录音你听下。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-10-9 19:56:39 | 显示全部楼层
回复【14楼】q2386736357:
---------------------------------
杂音太多了。
检查下模拟电路是否正常,供电要足。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2014-2-18
在线时间
12 小时
发表于 2015-6-16 10:37:13 | 显示全部楼层
回复【11楼】q2386736357:
---------------------------------
我最近也想做个这样的东西,是否可以共享点资料给我,感激。
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2016-5-24
在线时间
3 小时
发表于 2016-6-8 16:11:03 | 显示全部楼层
hugo01chen 发表于 2015-6-16 10:37
回复【11楼】q2386736357:
---------------------------------
我最近也想做个这样的东西,是否可以共享点 ...

你好,您实现了吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 05:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表