硅麦驱动开发及调试(pdm>>I2S>>pcm)

19 篇文章 2 订阅
12 篇文章 0 订阅

pdm 协议

PDM接口只有两根信号线:
PDM_CLK 时钟信号。
PDM_DATA 数据信号。
在这里插入图片描述

I2S协议

数据发送规格
I2S在BCLK的下降沿发送数据(发送),在上升沿进行数据采样(接收)。每次是先发送最高位,最后发送最低位。MSB在WS变化的下一个时钟周期有效。因此,最高位拥有固定的位置,而最低位的位置则是依赖于数据的有效位数。也就使得接收端与发送端的有效位数可以不同。如果接收端能处理的有效位数少于发送端,可以放弃数据帧中多余的低位数据;如果接收端能处理的有效位数多于发送端,可以自行补足剩余的位(常补足为零)。
I2S发送数据:发送是在每个时钟周期的下降沿发送数据,这样在WS沿变化开始后的第二个下降沿发送数据的最高位。接着在每个下降沿依次发送数据,直到发送完最低位。
I2S接收数据:在每个时钟周期的上升沿接收数据,在WS沿变化开始后的第二个上升沿接收数据的最高位。接着在每个位时钟上升沿依次接收数据,直到接收完最低位。
比如如下的一个ws高电平内,在每个clock上升沿采集数据,可以读到ws为高时data电平为10010100 11011001 01010011 01010100
对应data数据为0x94 D9 53 54

![在这里插入图片描述](https://img-blog.csdnimg.cn/5a01cd6b01e2451d99b4825b797af533.png在这里插入图片描述在这里插入图片描述

驱动配置

  1. pdm data输出接 I2S data数据输入线,pdm clk由I2S clk提供,所用规格需clk在1M-3.5M之间,故设定clk=1.024M.
  2. 配置I2S clk时钟树(配置I2S 时钟控制寄存器)查看时钟树方法,cat /sys/kernel/debug/clk/clk_summary
  3. 使能I2S clk时钟;
  4. 配置I2S 接受寄存器的采样深度为32bits
  5. 配置和I2S关联的dma

pdm data 转 pcm data

采用抽取滤波器将pdm 的频谱数据转为pcm的模拟数据

sample

(待写。。。)

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星空语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值