电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区
论坛
开发板专区
【STM32L496G-DISCO试用体验】+08.SAI简单语音播放
【STM32L496G-DISCO试用体验】+08.SAI简单语音播放
wuQAQ
LV4工程师
| 2017-09-19 11:57:53
浏览量 1058
回复:0
发表新帖
本帖最后由 wuQAQ 于 2017-9-19 14:36 编辑
1、SAI介绍
STM32L496自带了两个个串行音频接口(SAI),SAI具有灵活性高、配置多样的特点。可以支持:I2S标准、LSB或MSB对齐、PCM/DSP、TDM和AC’97等协议,适用于多声道或单声道应用。
2、硬件介绍
从图上可知L496-DISCO使用的是CS42L51的解码芯片,与现在用的比较多WM8978有点不同,但很相似,所以如果想要更了解其工作原理,我推荐大家去看原子的教程,上面写的比我的详细。主要的工作原理应该是使用I2C来控制该解码芯片,使用SAI来进行数据的传输。
3、软件配置
(1)、配置SD卡
SD卡的配置和之前的基本相同,为了读取更快,添加了DMA进行传输。
(2)、配置SAI
FrameLength:一帧数据的长度。这里笔者播放的是44.1khz,双声道的音频。因此一个声道是16bit,两个声道为一帧数据,即一帧有32bit。 DataSize:一个声道的音频数据。 Output Mode:Mono(单声道)Stereo(双声道)
音频频率为44.1Khz,开启FIFO
(3)、SAI DMA设置
(4)、时钟配置
(5)、中断配置
四、软件实现
1、使用I2C来配置编码芯片,因为与SAI没有多大关系,因此这里我直接采用了DISCO给的函数来完成配置。
因为前面44个字节为头部,所以要将其去掉,从44字节之后读取。
2、修改DMA中断回调函数
3、开启SAI DMA运输功能
4、循环读取文件内容
工程文件:
本帖最后由 wuQAQ 于 2017-9-19 14:36 编辑
1、SAI介绍
STM32L496自带了两个个串行音频接口(SAI),SAI具有灵活性高、配置多样的特点。可以支持:I2S标准、LSB或MSB对齐、PCM/DSP、TDM和AC’97等协议,适用于多声道或单声道应用。
2、硬件介绍
从图上可知L496-DISCO使用的是CS42L51的解码芯片,与现在用的比较多WM8978有点不同,但很相似,所以如果想要更了解其工作原理,我推荐大家去看原子的教程,上面写的比我的详细。主要的工作原理应该是使用I2C来控制该解码芯片,使用SAI来进行数据的传输。
3、软件配置
(1)、配置SD卡
SD卡的配置和之前的基本相同,为了读取更快,添加了DMA进行传输。
(2)、配置SAI
FrameLength:一帧数据的长度。这里笔者播放的是44.1khz,双声道的音频。因此一个声道是16bit,两个声道为一帧数据,即一帧有32bit。 DataSize:一个声道的音频数据。 Output Mode:Mono(单声道)Stereo(双声道)
音频频率为44.1Khz,开启FIFO
(3)、SAI DMA设置
(4)、时钟配置
(5)、中断配置
四、软件实现
1、使用I2C来配置编码芯片,因为与SAI没有多大关系,因此这里我直接采用了DISCO给的函数来完成配置。
因为前面44个字节为头部,所以要将其去掉,从44字节之后读取。
2、修改DMA中断回调函数
3、开启SAI DMA运输功能
4、循环读取文件内容
工程文件:
0
收藏
举报
分享
×
微信分享
扫描二维码分享
qq分享
QQ空间分享
微博分享
我来回复
登录后可评论,请
登录
或
注册
所有回答
数量:
0
×
举报
举报人:
被举报人:wuQAQ
*
类型:
请选择类型
问题质量差
垃圾广告信息
偏离社区主题
违规内容
不友善内容
与社区已有问题重复
以上选项都不是
*
详细原因:
取消
提交
x
收藏成功!点击
我的收藏
查看收藏的全部帖子