OpenEdv-开源电子网

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

stm32f407 wm8978录音问题求指导,谢谢!

[复制链接]

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2016-5-10
在线时间
26 小时
发表于 2016-8-29 17:13:03 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 skyqiu 于 2016-8-29 17:19 编辑

wm8978录音,如何设置单声道、立体声模式?原子的代码是立体声的吧?
如果要改为单声道,除了这个初始化WAV头需要修改,还有其他什么地方需要修改吗?最好能详细点,求指导,谢谢!

//初始化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=2;//双声道 单声道为1?
         wavhead->fmt.SampleRate=SampleRate;                //16Khz采样率 采样速率
          wavhead->fmt.ByteRate=wavhead->fmt.SampleRate*4;//字节速率=采样率*通道数*(ADC位数/8)   单声道设置为wavhead->fmt.SampleRate*2
         wavhead->fmt.BlockAlign=4;                        //块大小=通道数*(ADC位数/8)               单声道为2?
         wavhead->fmt.BitsPerSample=16;                //16位PCM
       wavhead->data.ChunkID=0X61746164;        //"data"
         wavhead->data.ChunkSize=0;                        //数据大小,还需要计算  
}

最佳答案

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

这里修改是第一步,在写入WAV音频数据的时候,还要小改一下,我们例程是写入了双声道的数据的(虽然两个声道数据完全一样),你要做的就是去掉一个声道数据的写入。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-8-29 17:13:04 | 显示全部楼层
这里修改是第一步,在写入WAV音频数据的时候,还要小改一下,我们例程是写入了双声道的数据的(虽然两个声道数据完全一样),你要做的就是去掉一个声道数据的写入。
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2016-5-10
在线时间
26 小时
 楼主| 发表于 2016-8-30 10:17:33 | 显示全部楼层
自己顶一下!
回复

使用道具 举报

2

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2015-9-15
在线时间
18 小时
发表于 2016-8-31 17:19:42 | 显示全部楼层
问题解决了没有,我也想改,不知道如何下手呐
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2016-5-10
在线时间
26 小时
 楼主| 发表于 2016-9-1 10:25:30 | 显示全部楼层
正点原子 发表于 2016-8-29 17:13
这里修改是第一步,在写入WAV音频数据的时候,还要小改一下,我们例程是写入了双声道的数据的(虽然两个声 ...

原子哥,怎么去掉啊?还是没什么头绪,能详细点吗?
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2016-5-10
在线时间
26 小时
 楼主| 发表于 2016-9-1 13:59:00 | 显示全部楼层
fengweibo3 发表于 2016-8-31 17:19
问题解决了没有,我也想改,不知道如何下手呐

没呢,原子哥说的模糊,还是无从下手
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-12-4
在线时间
2 小时
发表于 2016-12-5 14:48:54 | 显示全部楼层
问题解决了吗兄弟,我也碰到这个问题,变成单声道,声音就变行了
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2017-6-9
在线时间
10 小时
发表于 2017-7-18 14:23:45 | 显示全部楼层
也遇到了这个问题  修改寄存器根本不好使   R2  R3  R4  R44 R45 R46
回复

使用道具 举报

122

主题

294

帖子

0

精华

高级会员

Rank: 4

积分
712
金钱
712
注册时间
2015-11-14
在线时间
868 小时
发表于 2017-11-26 21:42:32 | 显示全部楼层
ST 官方的 F746DISCO 上有 个WM8994,不知道跟这个WM8978 是不是兼容的。我记得WM8994 用了4个字节存双声道数据,取前面或后面2个字节,就是单声道数据。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-19 09:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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