• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

stm32f103的i2s怎么用

yhj416606438 2019-04-16 浏览量:3115

怎么通过定时把音频数据发送的i2s的数据寄存器里,是i2s数据发送完了,我在把数据给给寄存器,还是通过定时往i2s寄存器发数据

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 1.stm32中I2S配置
    stm32的大容量产品和互联型产品支持I2S音频协议(本文档使用stm32f103fzet6)。可以将SPI模块用作I2S音频接口。I2S和SPI共用3个引脚:
    ● SD:串行数据(映射至MOSI引脚),用来发送和接收2路时分复用通道的数据(PB15);
    ● WS:字选(映射至NSS引脚),主模式下作为数据控制信号输出,从模式下作为输入(PB12);
    ● CK:串行时钟(映射至SCK引脚),主模式下作为时钟信号输出,从模式下作为输入(PB13)。
    ● MCK:主时钟(独立映射),在I2S 配置为主模式,寄存器SPI_I2SPR的MCKOE位为’1’时,作为输出额外的时钟信号引脚使用。输出时钟信号的频率预先设置为256×Fs,其中Fs是音频信号的采样频率。(ADMP441用不到)

    2参数说明和配置
    ●模式配置(IS_I2S_MODE):设置寄存器SPI_I2SCFG[1:0]选择I2S主模式和方向。
    00: 从设备发送(I2S_Mode_SlaveTx);
    01: 从设备接收(I2S_Mode_SlaveRx);
    10: 主设备发送(I2S_Mode_MasterTx);
    11: 主设备接受(I2S_Mode_MasterRx)。
    主设备输出WS,SCK;从设备WS,SCK作为输入信号。

    发送端输出SD;接收端SD作为输入信号。


    3. 传输数据格式

    ADMP使用飞利浦24bit标准的I2S格式。如果只是读取前16bit的数据,也可以使用。在I2S 配置阶段,如果选择将16位数据扩展到32位声道帧,只需要访问一次寄存器SPI_DR。用来扩展到32位的低16位被硬件置为0x0000。接收时,每次收到高16位半字(MSB) 后,标志位RXNE 置’1’ ,如果允许了相应的中断,则可以产生中断。这样,在2次读和写之间有更多的时间,可以防止下溢或者上溢的情况发生。在使用16位数据扩展到32位帧时,前16位(MSB) 是有意义的数据,后16位(LSB) 被强制为0,该操作不需要软件干预,也不需要有DMA请求(仅需要一次读/ 写操作)。​

    • 发布于 2019-04-16
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:1
  • 没看懂你是要收数据还是要发数据,I2S收数据可以使用DMA功能减轻CPU负担,可以接收一帧传输一帧,发数据使用定时器更方便,适合控制时序
    • 发布于2019-04-16
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

stm32f103的i2s怎么用