OpenEdv-开源电子网

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

想把vs1053采集到的音频数据,通过串口发送出去,可是收到的十六进制数据和原始音频对不上

[复制链接]

18

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2017-9-20
在线时间
49 小时
发表于 2017-9-20 15:19:57 | 显示全部楼层 |阅读模式
5金钱
求各位大神指教,小弟刚开始接触stm32,感激不尽。图片是我的程序
D9NR@RNMFGBA`)TVXSK)K(Q.png

最佳答案

查看完整内容[请看2#楼]

VS1053这芯片用了2年了,你这个问题出在你对原始音频进行了重新编码,得到的数据是采样率为8K,位率****(0x07寄存器设置)的新的音频数据,跟原始数据肯定不一样。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

266

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1526
金钱
1526
注册时间
2016-7-20
在线时间
155 小时
发表于 2017-9-20 15:19:58 | 显示全部楼层
VS1053这芯片用了2年了,你这个问题出在你对原始音频进行了重新编码,得到的数据是采样率为8K,位率****(0x07寄存器设置)的新的音频数据,跟原始数据肯定不一样。
我是可以什么都不说 ,但不可以什么都不做。
回复

使用道具 举报

18

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2017-9-20
在线时间
49 小时
 楼主| 发表于 2017-9-20 16:10:40 | 显示全部楼层
不要沉啊,求大神指点
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-9-21 02:01:39 | 显示全部楼层
你怎么对的?
回复

使用道具 举报

18

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2017-9-20
在线时间
49 小时
 楼主| 发表于 2017-9-22 08:36:35 | 显示全部楼层
我是通过一个软件看到原始音频的十六进制,和串口收到的十六进制对比。VS1053直接采集就发,是不是不行,还是必须先存起来,再去发?
回复

使用道具 举报

18

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2017-9-20
在线时间
49 小时
 楼主| 发表于 2017-9-22 08:38:02 | 显示全部楼层

我是通过一个软件看到原始音频的十六进制,和串口收到的十六进制对比。VS1053直接采集就发,是不是不行,还是必须先存起来,再去发?
回复

使用道具 举报

9

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2017-2-14
在线时间
90 小时
发表于 2017-9-22 09:31:11 | 显示全部楼层
不会吧,只要你串口配置对,线没坏,传过去的数据都是对的,你发是先发的高,在发的低,你要跟w=VS_RD_REG(HADT0)的w的值相比较,你也可以直接通过printf("%x",w)打印过去。
回复

使用道具 举报

32

主题

171

帖子

0

精华

高级会员

Rank: 4

积分
697
金钱
697
注册时间
2017-1-7
在线时间
75 小时
发表于 2017-9-22 09:41:09 | 显示全部楼层
你能把你的原数据和发出去的数据截图给我们看一下吗?
回复

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3722
金钱
3722
注册时间
2011-5-23
在线时间
2013 小时
发表于 2017-9-22 09:49:54 | 显示全部楼层
既然是VSxx采集到的数据,那原始数据哪来的?
RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

18

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2017-9-20
在线时间
49 小时
 楼主| 发表于 2017-9-22 11:23:49 | 显示全部楼层
会不会是因为我采集速度和串口速度不匹配,比如采集是8K,存到HDAT0。但是串口发的太慢。就导致全错了
回复

使用道具 举报

18

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2017-9-20
在线时间
49 小时
 楼主| 发表于 2017-9-22 11:24:56 | 显示全部楼层
aozima 发表于 2017-9-22 09:49
既然是VSxx采集到的数据,那原始数据哪来的?

原始数据,是原始音频,通过软件可以查看16进制数据
回复

使用道具 举报

18

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2017-9-20
在线时间
49 小时
 楼主| 发表于 2017-9-22 11:25:36 | 显示全部楼层
Polychromatic 发表于 2017-9-22 09:31
不会吧,只要你串口配置对,线没坏,传过去的数据都是对的,你发是先发的高,在发的低,你要跟w=VS_RD_REG( ...

好的,我试试
回复

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3722
金钱
3722
注册时间
2011-5-23
在线时间
2013 小时
发表于 2017-9-22 11:57:19 | 显示全部楼层
原始音频(原始数据) ==> 手机播放 ==> MIC+VS10xx采集 ==> SPI读取 ==> UART发送 ==> PC接收

是这样么
RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

18

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2017-9-20
在线时间
49 小时
 楼主| 发表于 2017-9-22 12:55:29 | 显示全部楼层
aozima 发表于 2017-9-22 11:57
原始音频(原始数据) ==> 手机播放 ==> MIC+VS10xx采集 ==> SPI读取 ==> UART发送 ==> PC接收

是这样么: ...

对的,您之前可有用过VS1053,用SPI直接去读HDAT0,可以吗
回复

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3722
金钱
3722
注册时间
2011-5-23
在线时间
2013 小时
发表于 2017-9-22 15:08:38 | 显示全部楼层
1052130982 发表于 2017-9-22 12:55
对的,您之前可有用过VS1053,用SPI直接去读HDAT0,可以吗

如果你这能做到两边数据完全一样,我估计可以拿个诺奖。

既然数据不一样,那听起来是否一样?
RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

9

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2017-2-14
在线时间
90 小时
发表于 2017-9-22 15:53:14 | 显示全部楼层
你如果是用的开发板的话,你觉得你串口打印出来的数据不对,你可以把音频数据,写在SD卡里面,串口也打印,然后录个1S左右,用winhex把文件打开,然后和串口的数据比较,
回复

使用道具 举报

0

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
226
金钱
226
注册时间
2016-9-21
在线时间
63 小时
发表于 2017-9-24 21:26:16 | 显示全部楼层
音频信号采样后速率很难跟原先的完全一样  可以说基本不可能   
回复

使用道具 举报

18

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2017-9-20
在线时间
49 小时
 楼主| 发表于 2017-9-25 15:47:35 | 显示全部楼层
aozima 发表于 2017-9-22 15:08
如果你这能做到两边数据完全一样,我估计可以拿个诺奖。

既然数据不一样,那听起来是否一样?

VS1053采样频率8000,串口波特率115200。目前收到的收据可以转成音频,频率8000。但是转成的声音是快进的。频率应该只和采样率有关吧?
回复

使用道具 举报

18

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2017-9-20
在线时间
49 小时
 楼主| 发表于 2017-9-25 15:50:01 | 显示全部楼层
laxsystem01 发表于 2017-9-24 21:26
音频信号采样后速率很难跟原先的完全一样  可以说基本不可能

对的。我现在直接转声音了。VS1053采样频率8000,串口波特率115200。目前收到的收据可以转成音频,用频率8000。但是转成的声音是快进的。用频率4000又特别慢。不会了,求指导?频率应该只和采样率有关吧?
回复

使用道具 举报

18

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2017-9-20
在线时间
49 小时
 楼主| 发表于 2017-9-26 15:20:02 | 显示全部楼层
super910906 发表于 2017-9-26 09:30
VS1053这芯片用了2年了,你这个问题出在你对原始音频进行了重新编码,得到的数据是采样率为8K,位率****(0 ...

想把VS1053采集到的数据直接通过串口发出去,该用什么方法,求指导!!!
回复

使用道具 举报

5

主题

266

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1526
金钱
1526
注册时间
2016-7-20
在线时间
155 小时
发表于 2017-9-27 09:41:58 | 显示全部楼层
1052130982 发表于 2017-9-26 15:20
想把VS1053采集到的数据直接通过串口发出去,该用什么方法,求指导!!!

读09寄存器后把数据读进串口发送数组,把数组用串口发送函数发出去就可以了。
我是可以什么都不说 ,但不可以什么都不做。
回复

使用道具 举报

5

主题

266

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1526
金钱
1526
注册时间
2016-7-20
在线时间
155 小时
发表于 2017-9-27 09:44:01 | 显示全部楼层
                SYS_VAL.Cnt = VS10X3_RD_Reg(0x09);
                if((SYS_VAL.Cnt >=256)&&(SYS_VAL.Cnt <896))
                {
                        SYS_VAL.Idx = 0;
                        while(SYS_VAL.Idx < 512)
                        {
                                SYS_VAL.Cnt = VS10X3_RD_Reg(0x08);
                                MP3_Send_Buf[SYS_VAL.Idx++]=SYS_VAL.Cnt>>8;
                                MP3_Send_Buf[SYS_VAL.Idx++]=SYS_VAL.Cnt&0xFF;
                        }
                        UART4_SendData(MP3_Send_Buf,512);
                        while(UART4_Send_Size);//等待发送完成
                }
我是可以什么都不说 ,但不可以什么都不做。
回复

使用道具 举报

18

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2017-9-20
在线时间
49 小时
 楼主| 发表于 2017-9-27 11:11:15 | 显示全部楼层
super910906 发表于 2017-9-27 09:44
SYS_VAL.Cnt = VS10X3_RD_Reg(0x09);
                if((SYS_VAL.Cnt >=256)&&(SYS_VAL.Cnt >8;
                                MP3_Send_Buf[S ...

我现在采样率是8000.串口波特率是115200。收到数据转成音频是快进的那种,明显丢了数据。把串口波特率调到256000,转成的音频是对的。还是采集太快,串口发的太慢。怎么能把速度降下来,因为我的串口蓝牙最高只能115200.
回复

使用道具 举报

5

主题

266

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1526
金钱
1526
注册时间
2016-7-20
在线时间
155 小时
发表于 2017-9-27 15:13:05 | 显示全部楼层
1052130982 发表于 2017-9-27 11:11
我现在采样率是8000.串口波特率是115200。收到数据转成音频是快进的那种,明显丢了数据。把串口波特率调 ...

你把设置编码寄存器的那段代码贴上来,我就知道你的编码位率是多少了,然后才能帮你看看怎么改。
我是可以什么都不说 ,但不可以什么都不做。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-19 20:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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