1. 前言

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

当前采用的开发板是友善之臂的Tiny4412,芯片是三星的EXYNOS4412,这款芯片出来有很长一段时间了,之前用在三星的S系列手机上的,最高主频是1.5GZ,稳定推荐主频是1.4GHZ,内核是三星提供的demon,友善之臂在基础上完成了移植适配,也就是现在拿到的Tiny4412开发板内核,Linux 版本是3.5,不支持设备树。

2. VS1053硬件介绍

VS1053这款编码解码芯片在单片机里用的较多,性价比很高,因为支持SPI接口,所以单片机操作起来也比较容易,编码解码都是芯片内部完成,不消耗CPU资源,芯片的电压支持是3.3V。

可以使用VS1053设计MP3播放器,比如:用在跑步机上听歌&#

Linux驱动开发-编写VS1053芯片音频驱动相关推荐

  1. 32驱动_轻松掌握pinctrl子系统驱动开发——一个虚拟pinctrl dev驱动开发

    这周主要对pinctrl子系统进行分析,该分析的基本上已经分析完成,唯一没有细说的估计就是gpio与pinctrl之间的关联了.本章即是pinctrl子系统分析的最后一章,本章我们主要实现一个虚拟的p ...

  2. 驱动开发:配置Visual Studio驱动开发环境

    在正式开始驱动开发之前,需要自行搭建驱动开发的必要环境,首先我们需要安装Visual Studio 2013这款功能强大的程序开发工具,在课件内请双击ISO文件并运行内部的vs_ultimate.ex ...

  3. Linux驱动开发-编写PCF8591(ADC)芯片驱动

    1. PCF8591介绍 PCF8591是一个IIC总线接口的ADC/DAC转换芯片,功能比较强大,这篇文章就介绍在Linux系统里如何编写一个PCF8591的驱动,完成ADC数据采集,DAC数据输出 ...

  4. Linux驱动开发-编写(EEPROM)AT24C02驱动

    1. 前言 AT24C02是IIC接口的EEPROM存储芯片,这颗芯片非常经典,百度搜索可以找到非常多的资料,大多都是51.STM32单片机的示例代码,大多采用模拟时序.裸机系统运行.当前文章介绍在L ...

  5. Linux 驱动开发 三:字符设备驱动框架

    一.参考 (3条消息) Linux 字符设备驱动结构(一)-- cdev 结构体.设备号相关知识解析_知秋一叶-CSDN博客 (3条消息) linux设备驱动框架_不忘初心-CSDN博客_linux设 ...

  6. linux驱动开发(一)—GPIO驱动框架

    前言 GPIO驱动是Linux驱动开发中最基础.但却是很常用.很重要的驱动.比如你要点亮一个LED灯.键盘扫描.输出高低电平等等.而Linux内核的强大之处在于对最底层的GPIO硬件操作层的基础上封装 ...

  7. linux 下usb驱动开发,LINUX_ARM下的USB驱动开发.pdf

    LINUX_ARM下的USB驱动开发 CN 431258 / TP 计算机工程与科学 2006年第 28卷第 3期 ISSN 1007130X COM PU TER EN GIN EER IN G & ...

  8. linux主设备编号从0到多少,Linux驱动开发之主设备号找驱动,次设备号找设备

    一.引言 很久前接触linux驱动就知道主设备号找驱动,次设备号找设备.这句到底怎么理解呢,如何在驱动中实现呢,在介绍该实现之前先看下内核中主次设备号的管理: 二.Linux内核主次设备号的管理 Li ...

  9. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之按键驱动框架

    文章目录 前言 1.APP怎么读取按键值 1.1.查询方式 1.2.休眠-唤醒方式 1.3.poll方式 1.3.异步通知方式 1.5. 驱动程序提供能力,不提供策略 2.按键驱动程序框架--查询方式 ...

最新文章

  1. 程序员生活智慧集——卓越程序员密码
  2. 什么是javadoc文档
  3. java多线程notify_Java多线程 wait notify
  4. Android实战——第三方服务之Bmob后端云的推送服务的集成和使用(三)
  5. 实战HMM-Viterbi角色标注地名识别
  6. 缓存区的输入输出,字符串常用操作,实现strlen/strcpy/strcat/strcmp函数)
  7. mysql jdbc 单利_java单利模式设计
  8. 计算机网络怎么寻址_计算机网络中的无类寻址
  9. linux kvm 常用命令
  10. Flutter ColorTween实现颜色过渡动画效果
  11. Dive Into Thrift Node-安装
  12. Mybatis框架相关知识讲解
  13. IMDB情感分析数据集
  14. 循环体中调用[NSString stringWithFormat:@%@,Object] 方法的内存问题
  15. 【C#.NET】ASP.NET状态管理之四:Cache
  16. G.Power教程 | 样本量估计
  17. python熄灯问题
  18. 【研一周小结】第三周个人学习总结
  19. 哥伦比亚大学计算机科学硕士排名,哥伦比亚大学计算机科学硕士排名第16(2020年TFE Times排名)...
  20. Selenium Chrome版本兼容问题

热门文章

  1. 真菌和细菌高通量测序引物选择
  2. 人工智能PK高鹗,续写《红楼梦》
  3. 张甜甜:在实践中迈进数据科学领域 | 优秀毕业生专访
  4. 高通安卓msm8909适配gt1xx系列的TP
  5. 3.7V升压5V2A,锂电池升压5V2.4A方案
  6. echart 实现多柱状图+多折线图
  7. vue项目px转vw
  8. Chrome升级后打开新的标签页变样了……
  9. Emotion Recognition in context 情景中的情绪的感知
  10. rpn产生proposals_一文读懂RPN和ROI Align