请教SMT32+CS4344音频DAC输出方案问题?

2019-12-10 18:31发布

本帖最后由 chuanyang 于 2018-9-15 22:36 编辑

1.项目背景:由于项目要用到语音播报,播报内容只需要几秒钟内容就可以了!目前思路是:将WAV转换后的音频文件存储在SPIflash中,在需要播报内容时候,将数据读出,通过SMT32的I2S接口按照标准PHILPS协议发给CS4344然后到D类放大器输出到喇叭。(WAV直接通过软件工具转换成hex文件)
2.问题描述:将载入的音频数据通过DMA发出,喇叭没有反应,只听见很微弱的哒哒哒的声音,播放的声音非常微弱,感觉CS4344没有满量程输出,还没搞懂如何使DAC满量程输出,WAV格式的音频能否调节音量呢?如何调整呢?。。。高手勿喷!
3.如果不用这种方案有没有低成本更取巧的解决方案呢?谢谢论坛朋友推荐!
4.CS4344功放电路如下:
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
lyer
1楼-- · 2019-12-10 22:33
本帖最后由 lyer 于 2018-9-16 02:30 编辑

>>播放的声音微弱
是正常预设的声音还是无关杂音?

不使用dma或中断,直接向I2S写随机数是否能发出正常音量的白噪?
while (1) {
    SPI_I2S_SendData(SPI3, rand());
}
类似这样

>>WAV格式的音频能否调节音量
从flash读取数据后,每个采样点乘/除个系数即可调节音量,再送i2s即可

(待测试后编辑)以最常用的s16_le格式的pcm为例,音量-6db:
uint8_t DMABUF[1024];
for(i=0;i<sizeof(DMABUF);i+=sizeof(int16_t)) {
  *(int16_t*)&DMABUF【i】 /= 2;
}
chuanyang
2楼-- · 2019-12-11 03:53
目前用的是DMA+CS4344这种DAC,写的数据可24bit,是在论坛里面找的wave to c但是只有 8位的采样宽度,有没有办法做成24bit 或 16bit的位宽呢
chuanyang
3楼-- · 2019-12-11 06:10
lyer 发表于 2018-9-16 02:08
>>播放的声音微弱
是正常预设的声音还是无关杂音?

你好!
1.现在发的数据是用 WAVE TO C这个软件输出的8位采样宽度,声音比较小,我乘了1000后就比较大了,但是声音效果极差,根本听不清晰;
2.比如我要实现16-24bit位宽的采样效果,做到20k的采样周期,怎么做这个输入WAVE数据呢?有没有相关软件推荐呢?
lyer
4楼-- · 2019-12-11 11:41
 精彩回答 2  元偷偷看……
ilan2003
5楼-- · 2019-12-11 13:04
有现成的语音芯片 论坛里很多人有发的,只要串口控制的就可以了
某宝搜索   MP3 语音 芯片   一大堆产品
CS4344必须需要使用I2S接口的芯片,而现成的芯片只需要串口就可以了。
JL1094  JQ8900  KT403A N9200  等等等等
chuanyang
6楼-- · 2019-12-11 14:32
ilan2003 发表于 2018-9-16 16:38
有现成的语音芯片 论坛里很多人有发的,只要串口控制的就可以了
某宝搜索   MP3 语音 芯片   一大堆产品
CS ...

这的确是比较方便,但是有个问题,用户只想把音频文件固话到flash里面,无需要 sd/tf卡之类的,有没有办法用sub烧写音频文件到flash,再用单芯片来播放,或推荐的类似方案