Microchip
直播中

丁峙昌

8年用户 162经验值
私信 关注
[问答]

怎么使用DSPIC33 EP512MU810操作PCM音频?

有人能指点我使用DSPIC33 EP512MU810操作PCM音频的一些指导或软件吗?我想增加/减少PCM数据量,并且还把它与一些预先存储的短音频剪辑混合。dsPIC通过I2S从蓝牙模块(WT32i)接收PCM,然后我想在通过I2S将其发送到外部CODEC(TLV320AIC32)之前对其进行操作。m蓝牙模块是44.1kHz,16位立体声(目前我没有任何预先存储的音频剪辑)。dsPIC在乒乓模式下使用DMA从蓝牙模块接收PCM数据,所以我有两个缓冲区A和B。io从蓝牙模块传输到CODEC。我试图通过左/右移位(即,除法/乘以2)来操纵PCM音频,没有音量变化,只有某些casesadd/减法时的失真,没有音量变化的固定值,只有某些casesFor DarioG……这个帖子是相关的:www. McCHIP.COM/FUMMS/M931870.ASPX

回帖(19)

王璨

2019-10-16 11:23:29
如果你的音频输出值多少,增加常数值只会带来失真。增加/减去常数值等于输出的直流偏移。它被任何合理的音频驱动级所阻塞。关于除法/乘法:乘法很容易导致失真(通过剪辑)。你可以尝试除以超过2的因子。2可能太少,无法用耳朵辨别。
举报

张娜

2019-10-16 11:38:39
丹克,这次节省了一些打字!至于音量,是的,除法应该工作。这将是很容易的2, 4, 8,所以…但是你应该尝试:它必须工作。接下来的方法是使用一个LUT(查找表),通过它来传递每个样本,所有的时间。这个LUT在每次更改卷时都是动态计算的,因此可以很容易地以0.1或对数或其他步骤重新创建。
举报

徐娟

2019-10-16 11:49:39
在另一个注释中,我刚才意识到我的缓冲区(rxBufferA、rxBufferB、txBufferA和txBufferB)不能区分左通道和右通道。我指示数据是左通道还是右通道?如果我看到COPS引脚上的上升沿,我能启用DMA通道吗?因此缓冲器〔0〕和〔1〕将是左信道数据,缓冲器〔2〕和〔3〕将为右信道数据。COFS: _________________________________________ | | | | |_________________________________________| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ SCK: | |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_|||||||||||||lt_|lt_|lt_-------------左通道数据----------------------------------------------------->__和|gt_..--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<--txBufferA[1]->|<--txBufferA[2]->|<---txBufferA[3]--->| |<---rxBufferA[0]--->|<---rxBufferA[1]--->|<---rxBufferA[2]--->|<---rxBufferA[3]--->| |<----TimeSlot0----->|<----TimeSlot1----->|<----TimeSlot0----->|<----TimeSlot1----->| |<------------------------------1/Fs = 20.8 mICROSETH--------------------G.
举报

徐娟

2019-10-16 11:55:05
我发现为什么移动会导致变形…这是因为音频数据类型是未签名的,而不是签名的!现在都工作了:)Dario(或其他人),你能解释一下如何使用LUT进行音量控制,例如它是如何工作的以及如何实现的吗?我以前使用过LUT,但不理解如何使用音量控制来控制音量控制以及如何/为什么要即时计算?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分