硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1667|回复: 4
收起左侧

WM8978音频数据流做信号处理

[复制链接]

12

主题

134

回帖

170

积分

初级会员

积分
170
发表于 2019-3-1 19:07:00 | 显示全部楼层 |阅读模式
正在深入学习WM8978,有些问题请教下各位老司机。以前把信号做FFT、数字滤波等使用的是自带的ADC,固定采样率,现在想WM8978的ADCDATA数据流是否可以完成。毕竟WM8978是带专用的音频ADC,各性能都很好。初步调试发现WM8978数据流是不一样的编码形式,该如何转换?

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115667
QQ
发表于 2019-3-1 19:10:14 | 显示全部楼层
回复

使用道具 举报

12

主题

134

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2019-3-1 19:28:29 | 显示全部楼层
eric2013 发表于 2019-3-1 19:10
一样,此贴的录音机http://www.armbbs.cn/forum.php?mod=viewthread&tid=23687&extra=page%3D1


我就是用的这个例子,可我打印出来的数据发现好奇怪,绘出的图不符合频幅特性。
回复

使用道具 举报

12

主题

134

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2019-3-2 15:08:55 | 显示全部楼层

问题解决了,原来WM8978数据流是补码形式的(I2S),转换下就可以了。程序如下,希望能给后面的朋友提供参考。程序基于V6-922_STemWin提高篇实验_录音机(FreeRTOS),增加下面计算RMS值函数
void DSP_Mean(uint8_t *pBuf)
{
        uint16_t i,j,temp;
        uint16_t *t = (uint16_t *)pBuf;
        uint32_t output[64], input[64];
        
        q31_t q31Result;
        /* »ñμÃ64¸ö2éÑùμã */
        for (i = 0; i < 64; i++)
        {
                temp = 0;

                if(((t[i*2] >> 15) & 0x0001) == 0)//正数的话原码等于补码
                {
                        input = t[i*2];
                }
                else
                {
                        for(j = 15; j > 0;j--)
                        {
                                if(!((t[i*2]>>j)&0x0001))
                                {
                                        temp+=(1<<j);
                                }
                        }
                        input = temp + 1;
                }
                //input = t[i*2];
        }
        
        arm_mean_q31((q31_t *)input,64,&q31Result);
        printf("%d\n",q31Result);
}
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115667
QQ
发表于 2019-3-2 15:34:18 | 显示全部楼层
xiaosir 发表于 2019-3-2 15:08
问题解决了,原来WM8978数据流是补码形式的(I2S),转换下就可以了。程序如下,希望能给后面的朋友提供参 ...

感谢分享
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-10 16:26 , Processed in 0.393751 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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