dyyjun 发表于 2009-11-4 21:57:59

谁做过PCM转PWM的驱动

我们现在用一个PWM驱动的音频codec,根据PCM流(输入)改变PWM(输出)的占空比,但是对时间间隔的把握不是很清楚

dyyjun 发表于 2009-11-5 11:37:43

搞定,忘了PWM有中断了:)

rayleigh3146 发表于 2009-11-5 11:43:25

bucuo!

reisky_zlh 发表于 2009-11-5 12:27:30

如何实现的?楼主能否见解一下.我以前做的都是由dsp完成的

dyyjun 发表于 2009-11-5 21:58:16

原来我们用的是I2S接口的audio codec(PCM转analog audio),为了cost down改成PWM的器件,其实就是D/A转换器,要求输入是PWM(数字信号),输出就是audio(模拟信号)。
PCM就只有两个特征,sample rate和sample depth,sample rate决定PWM的频率,然后在每次PWM的中断里根据PCM码流实时改变PWM的占空比,在用这个PWM控制那个所谓的codec形成audio波形。
PCM---》PWM---》analog audio

perennial 发表于 2009-11-7 11:26:05

一个有趣的设计。

dyyjun 发表于 2009-11-7 12:54:03

现在正在搞和linux audio驱动(ALSA)集成,硬件验证刚刚通过,PWM的驱动clock刚好够用,至少要48k×256,16bits采样率就用不了(44k×65535),产线正在等米下锅......

reisky_zlh 发表于 2009-11-15 17:10:39

以下是引用dyyjun在2009-11-5 21:58:16的发言:
原来我们用的是I2S接口的audio codec(PCM转analog audio),为了cost down改成PWM的器件,其实就是D/A转换器,要求输入是PWM(数字信号),输出就是audio(模拟信号)。
PCM就只有两个特征,sample rate和sample depth,sample rate决定PWM的频率,然后在每次PWM的中断里根据PCM码流实时改变PWM的占空比,在用这个PWM控制那个所谓的codec形成audio波形。
PCM---》PWM---》analog audio

大概明白你的做法,I2s接口的codec一般都比较贵,特别是wolson系列的,三星.nuokia,索爱系列的音乐手机,都采用了该ic,能达到很好的
音质效果.
pwm发生器,工作原理很简单,选择clk源(或许还有分频设置),一个周期里的clk counter,高电平,低电平切换阀值.
从你描述的实现方式来看,应该是一个功能较简单的音频转换器,接受pwm格式串行音频信号,再经过d/a转换输出模拟音频. 能否告诉你用的是什么ic的?

dyyjun 发表于 2009-11-15 22:19:58

硬件简单必然导致软件复杂,说到底其实我们没有codec,就是一个d/a转换器,型号忘了,明天上班去看一下,44k频率的中断处理,再加上同时音频,视频软解码,操作系统的开销,有点忙不过来,而且PWM的驱动频率至少要到达十几M以上,低端CPU没法做

reisky_zlh 发表于 2009-11-16 13:35:42

44khz的中断处理,那是相当的频繁的.遇上系统有中断嵌套,或者进入临界区(mark 中断),系统本来就存在中断延迟(实时os都有具体的指标.).中断处理就会的delay的.可能会导致d/a转换不连续,产生"咔咔"声.你是否已经把中断出来的代码,定位到内部ram,或许可以提高一些performance.

dyyjun 发表于 2009-11-16 14:22:44

这就是linux audio中间层(ALSA)的强大之处,它帮助你做了sync,说到底就是一个ring buffer,上层软件灌数据,下层驱动读数据,有一点很关键,上层软件写数据的速度是很快的,即使用外部SDRAM也远远大于44k,所以只要不是同时干很多事情不需要担心数据会跟不上,如果实在不行只能降频,牺牲音质了。至于你说的d/a转换不连续,这种情况即使有也是瞬时的,耳朵没有那么灵敏。说得容易,其实现在还有很多问题没有处理干净。。。。。

dyyjun 发表于 2009-11-17 08:43:10

tpa6111a2 from TI

发表于 2019-7-11 12:51:59

dyyjun 发表于 2009-11-5 21:58
原来我们用的是I2S接口的audio codec(PCM转analog audio),为了cost down改成PWM的器件,其实就是D/A转换 ...

请问下PCM里面的值怎么转化成PWM的占空比呢?
页: [1]
查看完整版本: 谁做过PCM转PWM的驱动