找回密码
 注册
搜索
查看: 14052|回复: 12

[讨论] 谁做过PCM转PWM的驱动

[复制链接]
发表于 2009-11-4 21:57:59 | 显示全部楼层 |阅读模式
我们现在用一个PWM驱动的音频codec,根据PCM流(输入)改变PWM(输出)的占空比,但是对时间间隔的把握不是很清楚
 楼主| 发表于 2009-11-5 11:37:43 | 显示全部楼层
搞定,忘了PWM有中断了:)
点评回复

使用道具 举报

发表于 2009-11-5 11:43:25 | 显示全部楼层
bucuo!
点评回复

使用道具 举报

发表于 2009-11-5 12:27:30 | 显示全部楼层
如何实现的?楼主能否见解一下.我以前做的都是由dsp完成的[em05]
点评回复

使用道具 举报

 楼主| 发表于 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
点评回复

使用道具 举报

发表于 2009-11-7 11:26:05 | 显示全部楼层
一个有趣的设计。
点评回复

使用道具 举报

 楼主| 发表于 2009-11-7 12:54:03 | 显示全部楼层
现在正在搞和linux audio驱动(ALSA)集成,硬件验证刚刚通过,PWM的驱动clock刚好够用,至少要48k×256,16bits采样率就用不了(44k×65535),产线正在等米下锅......
点评回复

使用道具 举报

发表于 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的?[em01]
点评回复

使用道具 举报

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

使用道具 举报

发表于 2009-11-16 13:35:42 | 显示全部楼层
44khz的中断处理,那是相当的频繁的.遇上系统有中断嵌套,或者进入临界区(mark 中断),系统本来就存在中断延迟(实时os都有具体的指标.).中断处理就会的delay的.可能会导致d/a转换不连续,产生"咔咔"声.你是否已经把中断出来的代码,定位到内部ram,或许可以提高一些performance.[em01]
点评回复

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2009-11-17 08:43:10 | 显示全部楼层
tpa6111a2 from TI
点评回复

使用道具 举报

52RD网友  发表于 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的占空比呢?
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-22 20:45 , Processed in 0.045158 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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