Linux驱动开发-编写VS1053芯片音频驱动

网友投稿 432 2022-11-18

Linux驱动开发-编写VS1053芯片音频驱动

1. 前言

VS1053是一款硬件编解码的音频芯片,提供SPI接口和IIS接口两种通信协议,这篇文章是介绍在Linux下如果模拟SPI时序来操作VS1053完成录音、播放音频歌曲功能。但是没有注册标准的音频驱动,没有对接音频框架,只是在驱动层完成VS1053的直接控制,本篇的重点主要是介绍如何初始化开发板的GPIO口,使用Linux的延时函数,模拟SPI时序,代码写了两种版本,一种是直接通过ioremap直接映射GPIO口地址,完成配置,一种是直接调用官方内核提供的库函数接口,完成GPIO口初始化,控制。

2. VS1053硬件介绍

可以使用VS1053设计MP3播放器,比如:用在跑步机上听歌,用在便携式音箱里放歌,做复读机、录音笔 等等。

解码的音频格式支持: MP3、OGG、WMA、WAV、MIDI、AAC、FLAC(需要加载 patch)

当前我采用的VS1053是正点原子设计的完整模块,方便杜邦线与开发板进行测试。

模块引出的接口功能: 这是SPI接口引脚

下面是SPI接口硬件的功能描述:

SPI读时序:

SPI写时序:

VS1053模块与单片机之间的连线图:

3. 驱动代码

3.1 驱动端代码

3.2 应用层代码

#include #include #include #include #define VS1053_INIT_SET 188int main(int argc,char **argv){ char buff[32]; int cnt,i=0; int vs1053_fd,file_fd; if(argc!=2) { printf("argv: ./app \r\n"); return -1; } vs1053_fd=open("/dev/tiny4412_vs1053",O_RDWR); file_fd=open(argv[1],2); if(vs1053_fd<0||file_fd<0) /*判断文件是否打开成功*/ { printf("vs1053 driver open error!\n"); return -1; } ioctl(vs1053_fd,VS1053_INIT_SET); while(1) { cnt=read(file_fd,buff,32); write(vs1053_fd,buff,cnt); if(cnt!=32)break; i++; } close(vs1053_fd); close(file_fd); return 0;}

3.3 Makefile 代码

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Sockect 服务端与客户端(一对多)~音响小案例
下一篇:java如何使用正则表达式限制特殊字符的个数
相关文章

 发表评论

暂时没有评论,来抢沙发吧~