无线电电子与电气工程百科全书 MP3 和 Opus 音频播放器。 无线电电子电气工程百科全书 本文介绍了一种自制的便携式播放器,用于播放 microSD 存储卡中常见格式的音乐文件。 它组装在 NOKIA 32 手机外壳内的 STM407F6VGT1100 微控制器上。 播放器方案如图所示。 1.它最大限度地利用了STM32F4DISCOVERY开发板上可用的电子元件,包括STM32F407VGT6(DD1)微控制器、LD3985M25R(DA1)和LD3985M33R(DA3)集成稳压器、CS43L22(DD2)编解码器以及必要的无源元件。 从手机 NOKIA 1100 开始,除了外壳和电池之外,还有用于连接 XS3 耳机的连接器、带有 LCD HG1 的前面板、由印刷电路板上的同心接触垫形成的按钮 SB1-SB17 薄膜以及使用用于连接 G1 电池的连接器。 此外,播放器主板还包含一个 microSD 存储卡 TFC-WPCE-08 (XS1) 支架、一组用于连接 Xp1 编程器的接触垫、一个 miniUSB-B 5075BMR-05-SM (XS2) 连接器。 二极管组件 VD1、VD4、VD5、VD6 用于防止连接到连接器 XS2 和 XS3 的静电放电电路。 其余连接器位于电池盒内,不需要保护。 芯片(DA2)是一个G1锂离子电池充电控制器,最大电压为4,2V。电阻R9降低了充电过程中该芯片上的压降,导致其发热。 电阻R10设置最大充电电流I最大盐度 根据公式 I每 ap.max = 1000/R10。 将电阻 R10 设置为千欧姆,即可获得以毫安为单位的充电电流值。 建议对锂离子电池充电的电流不超过1C,其中C为电池容量。 所使用的BL-5C电池容量约为1000mAh,LTC4054ES5-4.2芯片的最大允许充电电流为800mA。 由于充电是通过 USB 总线进行的,因此还必须考虑其负载能力(500 mA)。 因此,R10 的推荐值为 2 kOhm。 另外,通过测量R10两端的电压,可以使用公式I确定电池充电电流的电流值扎尔= 1000 单位R10/ R10(电流 - 毫安,电压 - 伏特,电阻 - 千欧)。 当XS2连接器连接到USB总线时,场效应晶体管VT1将电池G1与播放器电源电路断开。 来自连接器XS5的引脚1的2V电压打开晶体管VT5,晶体管VT3的栅极电压相对于其源极变为负值。 晶体管VT3打开,包括播放器。 当连接器XS1的引脚2上无电压时,晶体管VT3的栅极电势接近其源极电势,晶体管截止。 按下SB1按钮也会打开晶体管VT3,微控制器开始工作并每10ms检查该按钮的状态。 如果按住超过2秒,微控制器将在晶体管VT2的基极设置一个高电压电平,将其打开并保持晶体管VT3打开。 之后播放器进入工作状态,松开按钮即可。 再次按住 SB1 按钮关闭播放器。 开机后,微控制器初始化 HG1 LCD 和插入 XS1 支架的 microSD 卡,检查卡根目录中是否存在player.ini 配置文件(支持 FAT12、FAT16、FAT32 文件系统)。 这是一个常规的ini 文件,它是一组“键-值”行。 它存储有关播放器上次关闭时选择播放的音频文件、其中的位置和音量设置的信息。 程序尝试恢复此状态。 如果发生故障(例如,如果卡已更换),则会搜索卡上的第一个音频文件(扩展名为 .mp3 或 .opus)。 搜索从根目录开始,按照文件在地图上文件分配表中列出的顺序进行搜索。 播放过程中,会定期调用当前解码器的MainThread函数,根据需要从卡中读取数据(每个编解码器负责自己缓冲,因为.opus和.mp3的音频数据包容器的格式不同)并解码。 执行这些操作的需要取决于循环 AudioBuffer 缓冲区的充满度,音频编解码器从中异步读取信息。 当前音频文件解码完成后,按照上述原理查找下一个音频文件。 如果文件系统遍历完成,则播放停止。 播放器使用分辨率为 1x96 px 的图形单色 HG65 LCD 和按钮 SB 1 -SB 17 与用户交互。使用文本显示模式的软件模拟,屏幕分为 8 行,高度为 1 px。 屏幕底部剩余的XNUMXpx水平条用于直观地显示播放过程中文件中的当前位置。 顶部第一行显示(从左到右)电池电压、播放器状态、音量。 状态由文件内的字符“0”- 播放、“-”- 暂停、“<<”或“>>”- 快退或快进来表征。 矩形符号表示DD1和DD2微电路通过I接口通讯出现错误2C. 第 2-6 行显示了正在播放的音频文件的完整路径。 第 8 行左侧显示当前播放时间,右侧显示音频文件的持续时间。 SB1按钮在播放和暂停模式之间切换,SB3按钮增大音量,SB5按钮减小音量,SB4按钮打开,SB15按钮关闭键盘锁。 当键盘锁定时,显示屏第 7 行中央会显示“Locked”。 按 SB6 按钮可切换到上一个文件的播放,按 SB8 按钮可切换到下一个文件。 按住这些按钮一秒以上,播放器将分别进入快进模式、快退或快进。 按SB9或SB11按钮分别加载当前目录的第一个和最后一个文件进行播放。 连接器 XS3 - 位于用于连接耳机的外壳中。 耳机本身有一个直径为 3,5 毫米的标准音频插头插孔,用于连接耳机。 耳机还提供一个按钮,按下时连接 BTN 和 GND 电路,松开按钮的触点之间的电阻约为千欧姆。 在播放器中,BTN线通过电阻R3,3连接到21V电路,因此,通过测量该线上的电压,可以判断是否有连接的耳机及其按钮的状态。 耳机按钮的功能与SB1播放器按钮的功能类似 - 您可以将其从播放模式切换到暂停模式,反之亦然,也可以将其关闭。 但是,您无法使用它打开播放器。 当键盘锁定时,耳机按钮保持活动状态。 XS2 连接器取代了手机中的 LED 手电筒镜头。 当连接到该连接器引脚 1 的微控制器的 PA9 输入检测到高逻辑电平时,程序开始在显示屏的右上角显示电池充电电流(以安培为单位)。 此外,如果播放器已关闭,此事件会自动打开播放器。 默认情况下,此后播放器将在正常播放模式下工作,您可以在听音乐的同时为电池充电。 当您按下SB13按钮时,程序会将播放器的状态保存在player.ini文件中,并将USB微控制器模块配置为在MSC(海量存储类)模式下工作。 在此模式下,计算机将连接到 USB 连接器的播放器识别为可移动存储设备,其内容与插入播放器的 microSD 卡上记录的内容相匹配。 仅在全速模式下与计算机交换信息,带宽不超过12 Mbps。 显示屏仍然显示充电电流的当前值,第 3 行 - 铭文“USB Disk”,第 4 行和第 5 行 - 分别显示读取和写入的速度。 按下 SB12 按钮,设备返回播放器模式。 播放器的印刷电路板图如图2所示。 1100. 其尺寸和形状与NOKIA 3 手机的主板相同(图4)。 板子必须按照金属化孔的工艺制造,否则需要将两面镀锡线片插入并焊接到所有过孔(板子两面都有焊盘)中,并在两面焊接。 各部件在板上的位置如图所示。 2 个,比例为 1:1。 它还展示了由耐热绝缘清漆制成的掩模,必须使用它来保护印刷导体。 如果未应用掩模,则需要至少隔离导体接近按钮印刷触点的区域以及 microSD XSXNUMX 卡座金属外壳下方的区域。
本文所附的 walkgeek-v1.2-n1100-with-mp3.hex 文件中的代码必须输入到板上安装的微控制器的内存中。 播放器程序及其所有组件的源代码在新 BSD 许可证(和其他兼容许可证)下分发,这允许其在封闭的商业项目中使用。 Mp3dec 库是个例外,将其添加到最终产品中需要公开所有源代码。 该项目不断更新,其更新版本发布在[1]中。 正如已经提到的,播放器提供了播放 Opus 文件的功能。 这是由 Xiph.org 项目开发的有损音频压缩软件编解码器 [2] 最近发布的稳定版本,该项目以 Vorbis、FLAC(免费无损音频编解码器 - 用于无损音频压缩的编解码器)和 Speex(语音)等解决方案而闻名。编解码器)。 您也可以将其称为 Ogg - 一个通用媒体容器,默认情况下用于将压缩流打包到 Opus 文件中。 由于 Opus 编解码器相当新,因此在 RAM 量较小的系统上实现不多。 Rockbox就是其中之一。 在使用编解码器的过程中,发现Ogg库动态分配内存用于缓存整个页面(理论最大大小为65 KB,实际大小约为26 KB),以及用于所有颗粒的缓存页数据包(大约 16 KB),对于具有 192 KB RAM 的设备来说,这已经很大了。 此外,该库默认为页面缓冲区分配一小块内存区域,在操作期间扩展它,并且每次分配内存时都会“留有余量”。 同样的情况也发生在用于系带值的缓冲区上——有关页面上包的分布的信息。 因此,如果动态内存池很小,很快就会导致其严重碎片化,并且无法进一步分配所需数量的内存。 由于对库进行了更改,缓存是在数据包级别执行的(实际上,以 512 Kbps 速率传输的立体声信息数据包的最大大小为 1276 字节)。 lacing值的最大缓冲区大小是256个双字节单元,它们也可以做成单字节。 因此,与 Ogg 容器关联的所有结构在修改后占用的 RAM 不到 2 KB。 修改中做了一些假设:数据包不能跨越页面边界,不检查页面校验和(在任何 Opus 文件中都没有找到这些)。 尚未测试包含多个流且通道数不同于两个的文件。 Opus编解码器消耗的内存总量为65088字节,其中3856字节被输出缓冲区占用。 不同信息流速率下的编解码器分析结果如表所示。 1. 表1
其中“复杂度”的概念是指成功解码所需的处理器性能。 它是通过使用硬件计时器对进入每帧解码过程和退出解码过程的时刻之间的差异进行简单计算来估计的(禁用抢占式多任务处理并禁用中断)。 测试表明 MP3 编解码器需要较少的计算工作。 但Opus是免版税的,并且使用它时的音质比使用MP3和相同比特率时更好。 STM32F4DISCOVERY调试板有一个版本的播放器程序,需要输入到其上安装的微控制器内存中的代码在文件walkgeek-v1中。 1 -stm32f4discovery-with-mp3.hex(也附在文章中)。 在这种情况下,音频文件从通过适配器连接到开发板 CN5 连接器的 USB 闪存驱动器播放。 玩家扮演 USB主总线。 其状态通过板上的橙色、红色、蓝色和绿色 LED 显示。 红色表示没有,绿色表示存在连接的闪存驱动器,橙色表示正在加载音频文件、播放停止或程序错误,蓝色闪烁表示播放模式。 大多数按钮都可以在图 1 中找到。 2、按表连接调试板。 8(每个按钮的第二个触点连接到公共电线)。 SB1100 按钮的作用由板上的“User”按钮执行。 根据表将 NOKIA 3 手机的显示屏连接到调试板。 XNUMX. 表2
表3
文学
作者:O. Tsaregorodtsev 查看其他文章 部分 声音的. 读和写 有帮助 对这篇文章的评论. 科技、新电子最新动态: 花园疏花机
02.05.2024 先进的红外显微镜
02.05.2024 昆虫空气捕捉器
01.05.2024
其他有趣的新闻: ▪ 游客电子导航鞋 ▪ 非接触式测谎仪 ▪ 完全隐形墨水
免费技术图书馆的有趣材料: ▪ 文章 木星、土星和海王星在哪些方面不完全符合行星的经典定义? 详细解答 本页所有语言 www.diagram.com.ua |