STM32L431 想要通过I2S/IIS 接口获取数字音频怎么做?下面记录我的实现步骤。
1)STM32L431 是有硬件的SAI 接口的,它包含I2S,以下是通过CubeMX 配置生成代码:
2) 配置好后直接生成代码。只需要在代码里面添加 开始DMA传输,然后把接收到的I2S数据打印出来看对不对:
这里每次DMA 获取半个RX buf,也就是128个sample,里面包含了64个左声道采样点+64个右声道采样点。并且已知I2S 采样率是48Khz的,所以间隔1.33ms(64*1/48)就会产生半buf中断.
为了然串口能及时打印,只取一个声道,并且还要降采样到原来的1/8,这样才可以顺利打印。
以上打印函数就是主循环检测标志位打印16个点。实际打印频率就是48/8=6Khz。
3) 然后I2S 主设备播放一个100hz的纯tone,看打印的波形:
不建议播放频率较大的波形,因为打印实际是6Khz,这样采样点过少导致波形不够平滑。
3)再附上逻辑分析抓的I2S 的信号
从信号可以看出I2S 是48Khz采样,24bit深度。跟了解到的主机信息符合。
源码下载地址:(162条消息) STM32L431I2S/IIS作为slaver接收Audio数据-嵌入式文档类资源-CSDN文库