当前位置: 首页 > wzjs >正文

做网站需要学会什么湖南网站建设推广

做网站需要学会什么,湖南网站建设推广,双一流建设专题网站,汕头做网站优化哪家好PDM协议基础 什么是PDM? PDM(Pulse Density Modulation脉冲密度调制) 是一种通过脉冲密度表示模拟信号幅度的数字调制方式。 核心原理: 麦克风将模拟信号(声音)转换为 单比特数据流,每个时钟周…

PDM协议基础

什么是PDM?
  • PDM(Pulse Density Modulation脉冲密度调制 是一种通过脉冲密度表示模拟信号幅度的数字调制方式。

  • 核心原理

    • 麦克风将模拟信号(声音)转换为 单比特数据流,每个时钟周期输出1位(0或1)。

    • 数据流中 1的密度 反映输入信号的幅度(例如:高密度1 = 高电压,低密度1 = 低电压)。

PDM vs PCM 
特性PDMPCM(脉冲编码调制)
数据形式单比特流(1位/时钟周期)多比特样本(如16位/样本)
转换方式直接输出密度调制信号需采样、量化、编码
应用场景数字麦克风、低功耗设备音频存储、高保真音频处理
PDM数据格式

时钟与数据关系

时钟与数据关系
  • PDM数据流 由 时钟(CLK) 和 数据(DATA) 信号组成:

    • CLK:主控生成的方波时钟(如2 MHz)。

    • DATA:在每个时钟周期输出1位(0或1),密度反映信号幅度。

  • (2) ASCII时序图
    CLK  : _|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_  (2 MHz方波)
    DATA : 0 1 0 1 1 1 0 1 1 0 1 1 1 1 0 1  (示例数据流)
    采样点: ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑  (在CLK上升沿采样DATA)
  • 上升沿采样:通常在时钟上升沿读取数据位。

  • 数据密度:在固定时间段内,统计1的数量(例如:8个时钟周期内有5个1 → 表示高电平)

PDM麦克风硬件连接

典型电路
PDM麦克风引脚物奇7036连接说明
VDD3.3V/1.8V电源(需电平匹配)
GNDGND共地
CLKGPIO_PDM_CLK主控输出的时钟信号
DATAGPIO_PDM_DATA麦克风输出的数据流
注意事项
  • 时钟频率:常见1–3.2 MHz(需参考麦克风规格书)。

  • 电平匹配:确保麦克风与主控的电压域一致(如1.8V或3.3V)。

  • 去耦电容:在VDD和GND之间添加0.1μF电容,减少电源噪声。

 上手Demo(基于物奇7036)

目标:配置PDM接口,采集数据并转换为PCM格式。
(1) 硬件初始化
#include "wq7036_pdm.h"  // 物奇7036的PDM驱动头文件// 定义PDM缓冲区
#define PDM_BUFFER_SIZE  256
uint16_t pdm_buffer[PDM_BUFFER_SIZE];
int16_t pcm_buffer[PDM_BUFFER_SIZE];  // 转换后的PCM数据void pdm_init() {// 1. 使能PDM外设时钟CLK_EnablePDM(true);// 2. 配置GPIO复用为PDM功能GPIO_SetFunc(GPIO_PDM_CLK, GPIO_FUNC_PDM_CLK);GPIO_SetFunc(GPIO_PDM_DATA, GPIO_FUNC_PDM_DATA);// 3. 配置PDM控制器PDM_Config_t pdm_cfg = {.mode = PDM_MASTER,           // 主模式(输出时钟).clk_freq = 2000000,          // 2 MHz时钟.sample_rate = 16000,         // 16 kHz采样率.data_width = 16,             // 16位数据.osr = 64,                    // 过采样率(OSR=64).data_edge = PDM_RISING_EDGE  // 上升沿采样};PDM_Init(&pdm_cfg);// 4. 配置DMA传输PDM_SetupDMA(pdm_buffer, PDM_BUFFER_SIZE);
}
(2) PDM转PCM函数
// 简易PDM转PCM(需优化为高效实现)
void pdm_to_pcm(uint16_t *pdm, int16_t *pcm, uint32_t len) {for (int i = 0; i < len; i++) {int sum = 0;// 统计每个OSR周期内的1的数量for (int j = 0; j < 64; j++) {  // OSR=64sum += (pdm[i] >> j) & 0x1;}// 转换为有符号16位PCM(范围:-32768 ~ +32767)pcm[i] = (int16_t)((sum - 32) * 1024);  // 调整增益}
}
(3) 主程序
int main() {// 初始化PDMpdm_init();// 启动PDM采集PDM_Start();while (1) {// 等待DMA完成传输if (PDM_DMA_Ready()) {// 转换PDM到PCMpdm_to_pcm(pdm_buffer, pcm_buffer, PDM_BUFFER_SIZE);// 处理PCM数据(例如存储或传输)process_audio(pcm_buffer, PDM_BUFFER_SIZE);// 重启DMA传输PDM_StartDMA(pdm_buffer, PDM_BUFFER_SIZE);}}return 0;
}

4. 调试与验证

(1) 示波器检测
  • CLK信号:确认是否为2MHz方波。

  • DATA信号:发声时应有明显的脉冲密度变化。

(2) 数据打印

process_audio函数中打印PCM数据,观察是否随声音变化:

void process_audio(int16_t *pcm, uint32_t len) {for (int i = 0; i < len; i++) {printf("%d\n", pcm[i]);}
}

http://www.dtcms.com/wzjs/176349.html

相关文章:

  • 如果评价网站做的好不好查询网站收录
  • wordpress仿站 技术页面优化算法
  • 做英文网站的公司拼多多跨境电商平台
  • 北京海淀财政局网站广告投放这个工作难不难做
  • 网络广告名词解释北京百度搜索优化
  • 网站程序前台北京百度推广官网首页
  • 怎么做多个网站单点登录建站教程
  • 杜桥做网站哪家好百度服务电话在线人工
  • 优秀网站页面设计图片建设企业营销型网站
  • 重养网站建设常用的关键词挖掘工具
  • 网站建设视频教程最新短期的技能培训有哪些
  • 廊坊网站设计公司新手怎么引流推广推广引流
  • 做电影网站犯法吗总排行榜总点击榜总收藏榜
  • wordpress打开最快的网站营销推广工作内容
  • 备案网站首页地址桂林seo顾问
  • 服务公司发展战略企业站seo外包
  • 初二信息课网站怎么做石家庄关键词优化平台
  • 长沙企业网站建设品牌怎么自己做网页
  • 用c 做毕业设计的音乐网站网站建设平台哪家好
  • 徐州百度网站快速优化站长工具综合查询
  • 互动网站如何做友情链接在线观看
  • 长沙毕业设计代做网站价格百度手机助手app
  • 做一手房有哪些网站比较好啊百度网站优化
  • 有没有做市场评估的网站淘宝运营培训课程免费
  • 做美团网站怎么做社交网络的推广方法
  • 男女做吃动态网站推广普通话的宣传内容
  • 网站banner分辨率免费二级域名注册网站有哪些
  • 湖南省建设网站交换友链
  • 网站功能模块表格百度竞价推广效果怎么样
  • 物流网站购买物流单号百度营销推广登录