音频---数字mic

devtools/2024/10/25 16:20:15/

一、常见的数字mic

  • pdm
  • 通过codec芯片将数字麦转换为i2s信号输入到SOC

pdm麦就是直接进入SOC的pdm接口,走的是PDM信号,PDM信号就是两个线,一根数据线一根时钟线(如顺芯ES7201/7202把MIC信号转换成PDM)。

二、DMIC和AMIC介绍和区分

2.1 介绍

AMIC

驻极体麦克风(ECM:Electret Condenser Microphone(电容式静电麦克风))是一种使用驻极体电容器作为电介质的麦克风。驻极体是一种能够长时间保持电极化状态的高分子聚合物。一般情况下,ECM是指模拟麦克风(AMIC)。

硅麦克风(MEMS MIC)是一种基于微电子机械系统(MEMS)技术制造的麦克风。它将电容器(如ECM)集成在微型硅晶片上。如果集成了模数转换器(ADC)功能,那么它可以制作成数字麦克风(DMIC);如果没有集成ADC功能,那么只能制作成模拟麦克风(AMIC)。

DMIC

数字麦克风(DMIC)相对于模拟麦克风(AMIC),内部集成了模数转换器(ADC),因此输出的是数字信号。一般情况下,输出的数字信号采用脉密度调制(PDM)编码或者I2S信号格式。如果输出的是PDM格式的数据,需要使用微控制器(MCU)或者解码器(codec)进行PDM解码。

2.2 amicdmic区别

AMIC和DMIC都是数字麦克风的类型,它们的主要区别在于其工作原理和应用场景不同。

AMIC是一种模拟式麦克风,它通过将声音信号转换为模拟电信号的方式来捕捉声音。它通常用于音频录制和通信系统中,并且需要外部音频信号处理器。

DMIC是一种数字式麦克风,它通过将声音信号转换为数字信号的方式来捕捉声音。它通常用于数字信号处理器中,它可以通过数字信号处理器直接进行信号处理,这使得DMIC在噪声消除和语音识别等方面具有更好的性能。

因此,AMIC通常用于音频录制和通信系统,而DMIC通常用于数字信号处理器中,用于语音识别、噪声消除等方面。

三、PDM编码

脉冲密度调制(Pulse Density Modulation),简称 PDM,是一种使用二进制数 0,1 表示模拟信号的调制方式。在 PDM 信号中,模拟信号的幅值使用输出脉冲对应区域的密度表示

在实际输出的一位数据流中,只存在 1 和 0,1 的密度越大,代表该区域对应的模拟信号幅值越大,反之,0 的密度越大,代表该区域的模拟信号幅值越小。1 和 0 连续转换的区域对应中间幅值。

类似的PCM、I2S、PCM、TDM接口.
 

四、数字MIC应用

        数字mic--》PDM---》A2B PDM接口---》A2B 同轴电缆---》A2B Master TDM---》SOC/AUDIO DSP

        顺便介绍一些A2B:

        A2B 技术是 Analog Devices 公司开发的一种汽车音频总线技术,全称为 "Automotive Audio Bus".

        A2B技术可提供50Mbps的总线带宽,上下行支持最多32个音频通道。A2B具有小于50 μs的确定性延迟,这使其成为延迟敏感型应用的非常有吸引力的解决方案,例如主动降噪(ANC)、路噪降噪(RNC)、回声消除和降噪(AEC-NR)、波束成型(BF)等。

        A2B支持多种不同拓扑结构,例如点对点、菊花链和分支,因而它适合广泛的汽车应用——从具有音响主机和麦克风模块的入门级信息娱乐系统,到更复杂的音频系统,例如兼具ECU、多个麦克风、扬声器和加速度计的RNC。

        A2B网络由一个主节点和最多16个子节点组成,节点之间的最大电缆长度为15 m,主节点和最终子节点之间的最大电缆长度为80 m(包括分支)。主节点包含一个连接到主机处理器的A2B收发器,它能将音频、控制数据和I2C/SPI数据发送到A2B音频总线上。子节点的复杂程度不一,复杂的如具有强大处理能力的音频功放,简单的如麦克风节点。子节点中的A2B收发器与各种外设接口,例如麦克风、数字信号处理器(DSP)、扬声器、传感器(如加速度计)或D类放大器。

        主节点和子节点收发器器件支持多种增值功能,例如时分复用(TDM)和脉冲密度调制(PDM)麦克风输入。A2B收发器的低成本衍生产品具有优化的特性组合,例如末端点子节点收发器(不支持TDM)和优化的主节点收发器(电缆长度更短、子节点更少)。


http://www.ppmy.cn/devtools/3957.html

相关文章

机器学习预测汽车油耗效率 MPG

流程 数据获取导入需要的包引入文件,查看内容划分训练集和测试集调用模型查看准确率 数据获取 链接:https://pan.baidu.com/s/1KeIJykbcVpsfEk0xjhiICA?pwd30oe 提取码:30oe --来自百度网盘超级会员V1的分享导入需要的包 import pandas as pd imp…

AndroidStudio右下角显示内存使用情况

目录 一.具体效果 二.4.0以下版本 三.4.0以上版本 四.增加内存配置 一.具体效果 二.4.0以下版本 1.打开 Android Studio. 2.进入设置界面。点击 Android Studio 左上角的“File”,然后选择“Settings” 3.在设置界面中,选择“Appearance & Beha…

【栈】Leetcode 739. 每日温度【中等】

每日温度 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: 输入…

Android studio顶部‘app‘红叉- Moudle ‘XX.app’ dosen’t exist in project

Android studio顶部app红叉- Moudle ‘XX.app’ dosen’t exist in project 1、现象: 运行老项目或者有时候替换项目中的部分代码,明明没有错但是Android studio就编译报错了。 1.1 Android studio顶部app红叉。 1.2 点击Build没有clear菜单&#xff0…

git 快问快答

我在实习的时候,是用本地开发,然后 push 到 GitHub 上,之后再从 Linux 服务器上拉 GitHub 代码,然后就可以了。一般程序是在 Linux 服务器上执行的,我当时使用过用 Linux 提供的命令来进行简单的性能排查。 在面试的时…

使用socket client源码,调用addresstool地址关联算法

之前使用httpserver方式发布地址关联服务,发现每秒只能处理1800条地址,远远没有达到本地计算每秒1万条的速度,于是改变思路,使用socket发布服务。 这是客户端代码 直接上代码 package org.socket;import org.address.AddressTool…

c语言-快速排序

文章目录 代码工程运行结果 这个是升序排列&#xff0c;如果想降序排列,将下面两行的符号反过来即可; arr[right] < arr[key] arr[left] > arr[key]代码工程 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>void swap(int *v1, int *v2) {int temp *v1;*v1 …

C++如何把图片转成base64数据

在C++中将图片转换为Base64格式涉及几个步骤,主要是读取图片文件的二进制数据,然后将这些数据编码为Base64字符串。这个过程通常需要用到额外的库来辅助完成,例如使用开源库如OpenSSL来进行Base64编码,以及使用标准库来处理文件输入输出。 下面提供一个基本的示例,展示如…