找回密码
 立即注册
首页 业界区 安全 使用i2s遇到的问题

使用i2s遇到的问题

肇默步 昨天 17:35
在使用i2s的时候原本以为用dma把数据搬运过去就万事大吉,但是搬运过去后喇叭播放听起来十分的难听。
i2s主要由
SCK(串行时钟):也叫位时钟(BCLK),每个时钟脉冲对应数据线的一位数据。
WS(字选择):也叫左右声道时钟(LRCK),用于选择左右声道。标准飞利浦模式下,WS=0表示左声道,WS=1表示右声道。
SD(串行数据):用于传输实际的音频数据。
有时还有MCLK(主时钟),用于为编解码器等提供参考时钟,但并非必需。
有四种工作模式,标准飞利浦模式,LSB左声道对齐,MSB右声道对齐,PCM模式
标准飞利浦模式

L-low
1.png

LSB

L-high

MSB

L-high
3.png

4.png

PCM

5.png

我使用的kf32a156,标准飞利浦模式,dma1发送 16位 18k
这款芯片在启动i2s前需要先发送一时钟数据启动i2s,如果不发送就会
6.png

导致我如果直接使用音频数据会左右声道颠倒,目前解决方法是,在音频数据前添加0x0000
7.png

这里可以看到ws采样率引脚提前一个时钟周期
i2s+dma初始化
init 代码[code]/** *  @brief:  I2S init *  @param[in]  None *  @param[out] None *  @retval : None */void i2s_init(void){        /*chongzhi clock*/        /*fuwei dingshiqi T0T3*/        RST_SFR->CTL1 |= (uint32_t)1 CTL1 &= ~((uint32_t)1 CTL1 |= (uint32_t)1 CTLR &= ~(3

相关推荐

您需要登录后才可以回帖 登录 | 立即注册