mini2440 MP3播放器

发布者:WhisperingWaves最新更新时间:2024-06-20 来源: elecfans关键字:mini2440  MP3播放器 手机看文章 扫描二维码
随时随地手机看文章

按键平台驱动:

platfrom_device.c:

  1. #include <linux/device.h>  

  2. #include   

  3. #include   

  4. #include   

  5. #include   

  6. #include   

  7. #include   

  8. #include   

  9. #include   

  10. #include   

  11. #include   

  12. #include   

  13. #include   

  14. #include gpio.h>  

  15. #include   

  16. #include   

  17. #include   

  18. #include   

  19. #include    

  20.   

  21. static struct resource key_resource[]=  

  22. {  

  23.     [0] = {  

  24.         .start = IRQ_EINT8,  

  25.         .end = IRQ_EINT8,  

  26.         .flags = IORESOURCE_IRQ,  

  27.     },  

  28.     [1] = {  

  29.         .start = IRQ_EINT11,  

  30.         .end = IRQ_EINT11,  

  31.         .flags = IORESOURCE_IRQ,  

  32.     },  

  33.     [2]= {  

  34.         .start = IRQ_EINT13,  

  35.         .end = IRQ_EINT13,  

  36.         .flags = IORESOURCE_IRQ,  

  37.     },  

  38.     [3] = {  

  39.         .start = IRQ_EINT14,  

  40.                 .end = IRQ_EINT14,  

  41.         .flags = IORESOURCE_IRQ,  

  42.     },  

  43.     [4] = {  

  44.         .start = IRQ_EINT15,  

  45.         .end = IRQ_EINT15,  

  46.         .flags = IORESOURCE_IRQ,  

  47.     },  

  48.     [5] = {  

  49.         .start = IRQ_EINT19,  

  50.         .end = IRQ_EINT19,  

  51.         .flags = IORESOURCE_IRQ,  

  52.     },  

  53. };  

  54.   

  55. struct platform_device *my_buttons_dev;  

  56.   

  57. static int __init platform_dev_init(void)  

  58. {  

  59.     int ret;  

  60.   

  61.     my_buttons_dev = platform_device_alloc('my_buttons', -1);  

  62.   

  63.     platform_device_add_resources(my_buttons_dev,key_resource,6);//添加资源一定要用该函数,不能使用对platform_device->resource幅值   

  64.                                                                 //否则会导致platform_device_unregister调用失败,内核异常。   

  65.   

  66.     ret = platform_device_add(my_buttons_dev);  

  67.   

  68.     if(ret)  

  69.         platform_device_put(my_buttons_dev);  

  70.   

  71.     return ret;  

  72. }  

  73.   

  74. static void __exit platform_dev_exit(void)  

  75. {  

  76.     platform_device_unregister(my_buttons_dev);  

  77. }  

  78.   

  79. module_init(platform_dev_init);  

  80. module_exit(platform_dev_exit);  

  81.   

  82. MODULE_AUTHOR('Z-YP');  

  83. MODULE_LICENSE('GPL');  

platfrom_derver.c:

  1. #include   

  2. #include   

  3. #include   

  4. #include   

  5. #include   

  6. #include   

  7. #include   

  8. #include   

  9. #include   

  10. #include   

  11. #include   

  12. #include   

  13. #include   

  14. #include   

  15. #include   

  16. #include   

  17. #include   

  18.  

  19. #define DEVICE_NAME     'my_buttons'   

  20.   

  21. struct button_irq_desc {  

  22.     int irq;  

  23.     int pin;  

  24.     int pin_setting;  

  25.     int number;  

  26.     char *name;   

  27. };  

  28.   

  29. static struct button_irq_desc button_irqs [] = {  

  30.     {IRQ_EINT8 , S3C2410_GPG(0) ,  S3C2410_GPG0_EINT8  , 0, 'KEY0'},  

  31.     {IRQ_EINT11, S3C2410_GPG(3) ,  S3C2410_GPG3_EINT11 , 1, 'KEY1'},  

  32.     {IRQ_EINT13, S3C2410_GPG(5) ,  S3C2410_GPG5_EINT13 , 2, 'KEY2'},  

  33.     {IRQ_EINT14, S3C2410_GPG(6) ,  S3C2410_GPG6_EINT14 , 3, 'KEY3'},  

  34.     {IRQ_EINT15, S3C2410_GPG(7) ,  S3C2410_GPG7_EINT15 , 4, 'KEY4'},  

  35.     {IRQ_EINT19, S3C2410_GPG(11),  S3C2410_GPG11_EINT19, 5, 'KEY5'},  

  36. };  

  37. static volatile char key_values [] = {'0', '0', '0', '0', '0', '0'};  

  38.   

  39. static DECLARE_WAIT_QUEUE_HEAD(button_waitq);  

  40.   

  41. static volatile int ev_press = 0;  

  42.   

  43.   

  44. static irqreturn_t buttons_interrupt(int irq, void *dev_id)  

  45. {  

  46.     struct button_irq_desc *button_irqs = (struct button_irq_desc *)dev_id;  

  47.     int down;  

  48.   

  49.     // udelay(0);   

  50.     down = !s3c2410_gpio_getpin(button_irqs->pin);  

  51.   

  52.     if (down != (key_values[button_irqs->number] & 1)) { // Changed   

  53.   

  54.     key_values[button_irqs->number] = '0' + down;      

  55.         ev_press = 1;  

  56.         wake_up_interruptible(&button_waitq);  

  57.     }  

  58.       

  59.     return IRQ_RETVAL(IRQ_HANDLED);  

  60. }  

  61.   

  62.   

  63. static int s3c24xx_buttons_open(struct inode *inode, struct file *file)  

  64. {  

  65.     int i;  

  66.     int err = 0;  

  67.       

  68.     for (i = 0; i < sizeof(button_irqs)/sizeof(button_irqs[0]); i++) {  

  69.     if (button_irqs[i].irq < 0) {  

  70.         continue;  

  71.     }  

  72.         err = request_irq(button_irqs[i].irq, buttons_interrupt, IRQ_TYPE_EDGE_BOTH,   

  73.                           button_irqs[i].name, (void *)&button_irqs[i]);  

  74.         if (err)  

  75.             break;  

  76.     }  

  77.   

  78.     if (err) {  

  79.         i--;  

  80.         for (; i >= 0; i--) {  

[1] [2] [3] [4] [5] [6] [7]
关键字:mini2440  MP3播放器 引用地址:mini2440 MP3播放器

上一篇:搭建一个mini2440开发板U-Boot的框架
下一篇:字符驱动设计----mini2440 LED驱动设计之路

推荐阅读最新更新时间:2026-01-18 05:23

Linux平台设备驱动 - 按键设备驱动
之前的一篇博客简单介绍了平台设备驱动模型(http://www.cnblogs.com/ape-ming/p/5107641.html),现在就根据那篇博客所列出来的模板把上一篇博客(http://www.cnblogs.com/ape-ming/p/5110996.html)的例程改成平台设备驱动模型。 一、平台设备 根据模板首先要写一个平台设备加载函数: 1 /* 2 * 函数名 : button_device_init 3 * 函数功能: 设备加载 4 */ 5 6 static int __init button_device_init(void) 7 { 8 int ret = 0;
[单片机]
基于S3C44B0X芯片的多通道MP3播放器设计
1 引 言 随着微电子技术的飞速发展,嵌入式产品以其自然的人机交互界面和丰富的多媒体处理能力迅速得以推广,并取得了巨大成功。目前,在多媒体音频领域中,MP3播放器占据了绝对的主导地位。但现有的MP3播放器驱动能力非常有限,只适合个人使用,不能满足大型公共场所在不同区域播放不同背景音乐的多通道播放需要。基于以上分析,本文设计了一种基于S3C44B0X芯片的μClinux环境下的多通道专业MP3播放器。 2 系统功能分析与结构设计 多通道专业MP3播放器是专为满足公共语音广播市场的需求而设计的,其主要功能包括:(1)音频解码和播放功能;(2)通过USB接口与大容量外部存储设备进行数据传输;(3)操作界面统一管理功能;(4)多通道播
[单片机]
基于S3C44B0X芯片的多通道<font color='red'>MP3播放器</font>设计
基于W801和Helix解码库的MP3播放器
.前言 此前我有一篇帖子提出将Helix修改成能够运行在任何处理器上的解码算法。并着重以基于RISC-V处理器的国产单片机进行测试。此前测试了中科蓝汛出品的AB32VG1单片机,虽然解码没有出现错误,但是由于AB32VG1的处理器性能不足无法流畅播放,且超频至极限速度230MHZ后仍然无法流畅播放,未果,又踏上了寻找足够性能的国产单片机的道路。之后发现了W801单片机,该单片机额定工作频率就达到了240MHZ,且其处理器还带有一级指令缓存,这样一通硬核加持下来应该性能足够了,实测也是果真如此,热血沸腾,构想终于实现,国产基于RISC-V单片机流畅运行Helix解码库。 上文提到的两篇此前我发的帖子如下: Helix MP3
[单片机]
基于W801和Helix解码库的<font color='red'>MP3播放器</font>
基于SPCA751A的MP3播放器
引言 MP3压缩音乐的方式是通过一个运算法则,去掉声音中高频与低频的部分,大幅删减不必要的容量浪费,同时保留了人类所能感受到的音频部分。因此,它的好处在于大幅降低了数字声音文件的容量,而不会破坏原来的音质。在MP3的运算法则下,音质越低的声音可以得到越高的压缩比例。以CD音质的Wave文件来说,如抽样分辨率为16bit,抽样频率为44.1kHz,声音模式为立体声,那么存储1秒钟CD音质的Wave文件,必须要用掉16bit×44100×2=1411200bit,也就是相当于1411.2kbit的存储容量,存储介质的负担很大。而通过MP3格式压缩后,文件便可以压缩为原来的1/10到1/12,每一秒钟的MP3只需大约U2-12
[单片机]
基于SPCA751A的<font color='red'>MP3播放器</font>
一种基于DAB接收机的MP3播放器设计方案
引言 近年来,数字音频广播(Digital Audio Broadcasting,DAB)凭借其音质好,灵敏度高,频谱利用率高等诸多优点引起了国际通信广播行业的关注,并取得了飞速的进展。广电总局于 2006年6月推出的《30~3000 MHz地面数字音频广播系统技术规范》,不仅使DAB在我国有了标准的支持,更对DAB在全国的普及产生了重大而积极的影响。考虑到便携式MP3播放器在当今社会的普及程度与消费者对其的依赖性,在DAB接收机中融合MP3解码功能对消费市场的开拓是很必要的。本文在不改动一款DAB接收整机原有性能的基础上,提出了一种适当加入MP3解码功能的可行性方案。 1 系统总体结构 1.1 DAB接收系统结构 图1 DAB接
[单片机]
一种基于DAB接收机的<font color='red'>MP3播放器</font>设计方案
一种基于EFSL的嵌入式MP3播放器设计方法
   引 言   近几年来,随着数字技术的发展,人们对MP3播放器的要求越来越多元化,制造商在MP3播放器的选型、设计、开发、附加功能和适用领域等方面做了很多努力,设计了多种方案。在处理器速度越来越快、存储容量越来越大的趋势下,产品中数据的存储组织形式和存储器设置需要进行高效合理管理,这正是文件系统的功能。   而开源软件项目嵌入式文件库(Embedded FlieSystemLibrary,EFSL),依靠其内存需求小、移植简单、完全免费等优点,作为嵌入式文件系统,很适于解决小型单片机存储空间管理与功能扩展的问题。本文基于EFSL文件系统以及ARM 平台设计一款新型的嵌入式MP3播放器,具有一定的实用价值。同时为单片机摆脱操
[单片机]
一种基于EFSL的嵌入式<font color='red'>MP3播放器</font>设计方法
汽车音响MP3播放器发射器剖析
车载MP3发射器已流行一、二年了,其功能也越来越多,其内部电路,应用最多的是日本罗姆(RHOM)公司推出的调频立体声发射集成电路BHl414-1417系列,其射频部分采用频率合成电路,频率非常稳定。音频信号的处理,将预加重电路、限幅电路、低通滤波电路(LPF)一体化,使音频信号的质量和频率稳定程度比没有锁相环电路的BA1404有很大进步。表面封装的BH1417F芯片为电路的小型化创造了条件。 但有些制造商为降低成本,生产的发射器从外包装上看与普通带点烟器插头和耳机插头的车载MP3发射器没什么两样,如图1所示。但在内部电路上偷工减料,没有采用BHl414-1417系列调频立体声发射集成电路,使整个电路的性能大打折扣,如产品概述中
[嵌入式]
以优盘为存储介质的MP3播放器设计
以优盘为存储介质的MP3播放器设计 提出一种以优盘为存储介质的MP3播放器的设计方案,并论述其软硬件设计方法。处理器采用ARM7芯片S3C44B0X,USB主控芯片采用SL811HS。在SL811HS扩展主模式下,遵从USB1.1通信协议、海量存储设备类协议和FAT16/FAT32文件系统规范,实现对优盘的读写,以MP3硬解码芯片VS1011B播放MP3歌曲。本系统的设计方法可为欲以优盘或USB移动硬盘为存储介质的其他工业或消费类电子产品的设计提供有益的参考。 关键词 优盘 MP3播放器 ARM SL811HSV S1011B 引言   随着MP3播放器作为消费类产品的普及,MP3的设计与生产也越来越多。在当前的MP3播
[模拟电子]
以优盘为存储介质的<font color='red'>MP3播放器</font>设计
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved