加载中
加载中
表情图片
评为精选
鼓励
加载中...
分享
加载中...
文件下载
加载中...
修改排序
加载中...
有没有可能用2路12-bit DCA合并得到16-bit精度的输出信号
0x000000002020/03/19电子技术 IP:海南

       是这样的,使用STM32的内部DAC输出做音频输出,现在有16-bit的原始信号,取其中的[15:4]位域输出到一路DAC通道中,另外的[3:0]位域先左移对齐到12位然后再输出到另一路DAC通道中。

       在外部用电阻分压网络对这两路信号做16:1的混合,一路串联1k电阻,另一路串联16k电阻,然后合并到一起,但是最后得到的音频信号有非常大的噪声。如果去掉低4位数据转换出来的信号通道,变成12位精度就完全正常,能听到干净的声音。

      是我的合并方式不对吗?

来自:电子信息 / 电子技术
11
新版本公告
~~空空如也
LED
5年3个月前 IP:四川
875576

丢掉低位只是精度降低,低通后尚且还能听。丢高位的话。。。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zx-16533
5年3个月前 修改于 5年3个月前 IP:广东
875581

会不会是同步的问题

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
0x00000000作者
5年3个月前 IP:海南
875584
引用zx-16533发表于2楼的内容
会不会是同步的问题

一般的MCU倒有可能,但是STM32的DAC数据更新机制比较特别。写入DAC中的数据是被缓存的,不会直接输出,要再手动触发相关的控制位一次才会真正写到输出寄存器中完成输出。两路通道对应的两个控制位我是同时赋值的,不存在相位差,同时激活输出的。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zx-16533
5年3个月前 IP:广东
875586

电阻的精度可能也是个问题

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
3DA502
5年3个月前 IP:北京
875588

pwm方法,添加高4bit


实现形式是插值,输出更新率16x

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
fleefly
5年3个月前 IP:天津
875600

可能低位的不能左移只能前面补0。左移相当于扩大了256倍,后面电路没有补回来。比如要输出的数是Y=A*16+B,A是D[15..4],B是D[3..0]。左移后输出变成了A*16+B*256了。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
0x00000000作者
5年3个月前 IP:海南
875654
引用fleefly发表于6楼的内容
可能低位的不能左移只能前面补0。左移相当于扩大了256倍,后面电路没有补回来。比如要输出的数是Y=A...

自信点,把“可能去掉”。

是的不应该移位,直接喂就行了。一个思维误区。

现在已经好了,可以正常发生了。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
fleefly
5年3个月前 IP:天津
875674
引用0x00000000发表于7楼的内容
自信点,把“可能去掉”。是的不应该移位,直接喂就行了。一个思维误区。现在已经好了,可以正常发生了。

哈哈。不是不相信自己,而是不确定你的描述理解得对不对。

+0.5
科创币
0x00000000
2020-03-19
Nice work.
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
0x00000000作者
5年3个月前 IP:海南
875684

好了,确实是我自己计算失误了,16位数据高12位直接写入,低四位同样如此,不应该左对齐处理,不然就放大了256倍,权电阻设置就有问题了。

现在就按照这样更正设置,声音听起来也没问题了,但是12bit和16bit似乎没有听起来区别,也许对于一般的场合加上没有复杂特征的声音8bit就够用了。各种简单的录音规范好像也只有8bit,听起来也没啥大事。

如图,0x7D7放到DOR1,截断的后四位0xC放到DOR2里,没问题了。

Annotation 2020-03-19 162629.jpg


00:00
00:00
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
IMG_0119.mp4  点击下载


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
warmonkey
5年3个月前 IP:广东
875786

你要测量SNR、SFDR、INL、DNL这些指标,才能评价最终的效果。

建议输出正弦波到pc声卡看一看

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
极速外卖
5年3个月前 IP:广东
875795

估计sfdr只有劣化没有改善


建议用MATLAB写一个小程序对声卡采入信号做SINAD计算,然后DAC输出单音正弦看看。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
0x00000000
进士 学者 机友 笔友
文章
75
回复
758
学术分
1
2013/07/27注册,8个月29天前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的