SlideShare a Scribd company logo
1 of 50
哈尔滨工业大学华德应用技术学院毕业设计(论文)



                  摘  要


   随着网络技术和集成电路技术飞速发展,利用嵌入式设备进行数字处理
及传送成为可能。嵌入式设备具有体积小、功耗低、数字化、安装方便、价
格低等优点,同时嵌入式设备便于连入网络,实现远程数据交换。本文就是
利用嵌入式微控制芯片,完成一个简单的网络收音机的设计。
   本课题选择基于 ARMv7 内核的 32 位芯片 LM3S8962 为主控微处理器和
基于 DSP 内核的 VS1003 芯片为 MP3 解码芯片,以此为基础搭建硬件平台,
详细阐述了硬件电路的设计,包含了主控芯片、电源管理,microSD 卡,
OLED 显示、VS1003 解码芯片电路以及键盘控制电路设计,进行了相关模块
的驱动设计。最后测试了网络收音机的可行性。


关键词   网络收音机;ARM 微处理器;流媒体;RT-Thread




                       I
哈尔滨工业大学华德应用技术学院毕业设计(论文)



                                  Abstract
     In recent years, as the development of the internet and integrate circuit
technology, it is possible to process data in embedded device. The embedded
device has many virtues, such as small volume, low power loss, digitization,
convenient installment, low price, simultaneously the embedded equipment is
easy to connect network for realization long-distance exchange data. This article
introduces an Internet Radio project by embedded chip.
     The article chose LM3S8962 based on Kernel ARMv7 as main
microprocessor and choseVS1003 based on Kernel DSP as MP3 decoder, which
had been produced by VLSI. And then build hardware flat roof, particularly
expatiate how to build hardware flat ,which include circuit of main chip , Power
management, OLED display ,VS1003 decode and KEY control circuit design, for
the relevant module driven design. Finally, test the feasibility of network radio.


Keywords InternetRadio ARM microprocessor StreamingMedia RT-Thread




                                          II
哈尔滨工业大学华德应用技术学院毕业设计(论文)



                           目            录

摘  要........................................................I
Abstract.......................................................II
 绪论..........................................................1
 1.1 课题背景..................................................1
 1.2 目的和意义................................................1
 1.3 系统设计思想..............................................2
 1.4 系统开发环境..............................................3
     群星 LM3S8962 简介..........................................3
     VS1003-MP3/WMA 音频解码器简介..............................3
     实时操作系统 RT-Thread.....................................4
     RealView MDK...............................................6
     网络调试工具...............................................6
 可行性分析及总体设计..........................................7
 1.5 可行性分析................................................7
 1.6 总体设计..................................................8
 1.7 本章小结..................................................9
 硬件设计.....................................................10
 1.8 硬件设计概述..............................................10
1.9  主控芯片电路设计.........................................11
    LM3S8962 控制器特点.......................................11
    LM3S8962 管脚连接图.......................................12
1.10 电源电路设计............................................13
1.11 以太网模块设计..........................................14
1.12 microSD 卡模块设计......................................15
1.13 OLED 显示模块设计.......................................16
1.14 按键模块设计............................................17
1.15 VS1003 模块设计.........................................18
    VS1003 最小系统部分设计...................................18
    VS1003 与 LM3S8962 连接部分设计.............................19
    VS1003 电源模块设计.......................................20

                                  III
哈尔滨工业大学华德应用技术学院毕业设计(论文)


      VS1003 音频插孔设计.......................................21
  1.16 本章小结................................................21
  软件设计.....................................................23
  1.17 文件系统................................................24
  1.18 TCP/IP 协议栈...........................................25
  1.19 MP3 播放模块设计........................................25
      正确配置 IO...............................................26
      GPIO 模拟 SPI..............................................26
  1.20 SHOUTcast 服务模块设计..................................27
  1.21 菜单模块设计............................................27
  1.22 本章小结................................................28
第 2 章  系统测试...............................................29
  2.1 LM3S8962 与电脑连接......................................29
  2.2 RT-Thread 启动测试.......................................30
  2.3 VS1003 模块测试..........................................31
  2.4 文件系统测试.............................................32
    2.4.1 目录读取测试.........................................32
    2.4.2 播放 MP3 测试.........................................32
  2.5 网络连接测试.............................................33
    2.5.1 局域网测试...........................................33
    2.5.2 因特网测试...........................................34
   2.5.3 播放流媒体测试.......................................35
 2.6 本章小结.................................................35
结  论.......................................................36
致  谢.......................................................37
参考文献.......................................................38
附录 1.........................................................39
附录 2.........................................................41
附录 3.........................................................43




                                  IV
哈尔滨工业大学华德应用技术学院毕业设计(论文)




                      绪论

1.1 课题背景

  时代在发展,网络已经成为人们日常生活不可或缺的工具,不管是工作,
学习,还是娱乐,都已离不开网络。网络的出现,人们的生活方式也在改变,
当然也伴随着新生物品的出现。收音机是上一辈人娱乐和获取信息的平台,
收音机作为接收广播的工具,经过漫长的发展过程,由单波段发展到多波段,
由电子管,晶体管发展到集成电路,由机械调谐发展到数字调谐功能等,其
技术和品质都有了长足的进步。如今,在收音机这个家族中新的成员也在不
断加入, 如卫星广播接收机等。当社会进入网络时代后,更是出现了网络收音
机这种跨越全球的信息接收设备。网络收音已经成为一个新的方式,网络电
台主持人也在很多高校流行。网络收音机依赖于两个因素,一是网络的发展,
二是集成电路的发展。


1.2 目的和意义

  网络收音机有两种方案收听网络电台利用实时流媒体技术发布的音频节目:
软件网络收音机和硬件网络收音机。目前这种网络收音机大多是通过基于 PC
机上的软件开发来实现的其功能的,也就是说这种网络收音机克服 PC 机形式
的网络收音机的缺点,本设计研究了一种基于 ARM 的嵌入式技术的网络收音
机的设计方案。该方案以 ARM 处理器及其外围模块作为硬件平台,实现了嵌
入式网络收音机的基本功能。同时,随着网络技术的高速发展,该设计将具有
极好的市场应用前景。
  到目前为止,全球的网络收音机开发主要集中在欧美,涉足的厂家有近 10
多家,但主要流派却只有 5 个,在美国有 Roku 公司和 Slimdevice 公司,在英
国有 Reciva 公司,在德国有 TerraTee 公司,在澳大利亚有 Torian 公司。这几家
都有相应的成熟产品上市。尤其是美国的 Roku 公司和英国的 Reciva 公司都有
其技术授权许可的公司推出贴牌产品,相比之下,Reciva 公司的授权公司要多

                          1
哈尔滨工业大学华德应用技术学院毕业设计(论文)


一些。所有的公司大展身手,使得网络收音机发展显得格外令人瞩目。但遗憾
的是,在中国大陆,网络收音机的发展却显得有点谨小慎微,真正了解网络收
音机的人并不多,所以在国内很少见到网络收音机。
  收音机经历了一个从可懂性向欣赏性的发展过程,最早的收音机用来传递
消息为主,而现在大多数人应该更看重收音机的欣赏功能。在现有频率资源的
限制下,要不断提高欣赏品质又要有很多的电台频道,增加网络收听这个途径
是一个很好的选择,网络收音机是从普通的收音机演变而来,但有别于普通收
音机,具体区别见表 1-1。
              表 1-1 网络收音机与普通收音机区别
  网络收音机    交互性           实用性           音质
           网络收音机的跨地      内容种类繁多,使得     音质已经逼近 CD,
           域性,不存在电波      收听者的选择性呈爆     超越了 DAB 数字广
           的干扰。          炸性增长,同时还可     播,音乐类的大多是
                         以通过显示屏了解到     128Kbps,新闻类的
                         正在播出的歌曲名和     为 32Kbps。
                         演唱者的名字、电台
                         信息等,各种语言的
                         节目应有尽有。
  普通收音机    地域性明显,中波      最常见的中短波收音     普通 FM 的音质,信
           收音机传输距离不      机的频率波段        号不好时。噪音比较
           远,短波传输较远, FM87.5—108 MHz。   大。
           但易受干扰,受外
           界环境因素影响比
           较大。




1.3 系统设计思想

    本设计采用 TI LM3S8962 为主控芯片,配合硬件解码芯片 VS1003 来实
现 MP3 播放以及网络流媒体播放。
    1.LM3S8962 通过文件系统读取 SD 卡中存储的 MP3 文件,将文件通过
SPI 方式发送到 VS1003 进行解码播放。
    2.LM3S8962 与流媒体服务器握手成功后接受网络流媒体,将流媒体信息
通过 SPI 方式发送到 VS1003 进行解码播放。



                        2
哈尔滨工业大学华德应用技术学院毕业设计(论文)



1.4 系统开发环境

  软件条件:开发工具 KEIL;串口调试以及网络调试工具等
  硬件条件:电脑一台; EKK-LM3S8962 评估板; VS1003 解码模块;万
用表;焊接工具等。


群星 LM3S8962 简介
   群星 LM3S8962 评估板是一个基于群星 LM3S8962 ARM ® Cortex™- M3
的微控制器紧凑型和 通用评估平台的。该评估套件的设计着重突出了
LM3S8962 微控制器的集成 CAN 和 10/100 以太网控制器的特性。为了实
现一个嵌入式 Web 服务器,开发套件提供两块包括 LM3S8962 和 LM3S2110
控制器的评估板演示一个完整( CAN )控制器功能。主板提供 CAN 控制器
为主。小设备板提供 CAN 控制器为从,用带状电缆连接。其实每个板 CAN
控制器的职责是可用软件配置。您可以使用该 EVB(评估板 )作为评估平台或
作为低成本电路调试界面( ICDI )。在调试接口方式,板上微控制器是旁路
的,允许调试信号到连接外部目标群星微控制器的(换句话说,可以作为仿
真器仿真其他群星控制器)。该套件还兼容高性能的 JTAG 调试器外部。此
评估套件,可以快速评估,原型开发,并创造对于以太网和 CAN 网络应用
程序特定的设计。该套件还包括广泛的源代码的例子,让您迅速开始建立 C
代码的应用。


VS1003-MP3/WMA 音频解码器简介
  VS1003 是一个单片 MP3/WMA/MIDI 音频解码器和 ADPCM 编码器。它
包含一个高性能,自主产权的低功耗 DSP 处理器核 VS_DSP4,工作数据存储
器,为用户应用提供 5KB 的指令 RAM 和 0.5KB 的数据 RAM 。串行的控
制和数据接口, 4 个常规用途的 I/O 口,一个 UART ,也有一个高品质可变
采样率的 ADC 和立体声 DAC,还有一个耳机放大器和地线缓冲器。
  VS1003 通过一个串行接口来接收输入的比特流,它可以作为一个系统的
从机。输入的比特流被解码,然后通过一个数字音量控制器到达一个 18 位
过采样多位 ε-Δ DAC 。通过串行总线控制解码器。除了基本的解码,在用户

                           3
哈尔滨工业大学华德应用技术学院毕业设计(论文)


RAM 中它还可以做其他特殊应用,例如 DSP 音效处理。 VS1003 内部结构如
图 1-1 所示。




                   图 1-1 VS1003 内部结构



实时操作系统 RT-Thread
  RT-Thread RTOS 是一款来自中国的开源实时操作系统,由国内一些专业
开发人员开发、维护。它不仅仅是一款高效、稳定的实时核心,也是一套面
向嵌入式系统的软件平台,覆盖了全抢占的实时操作系统内核,小巧而与底
层具体实现无关的文件系统,轻型的 TCP/IP 协议栈以及轻型的多窗口多线程
图形用户界面。
   内核对象系统
  系统具备内核对象管理系统,能够访问/ 管理所有内核对象。内核对象包
含了内核中绝大部分设施,而这些内核对象可以是静态分配的静态对象,也
可以是从系统内存堆中分配的动态对象。通过内核对象系统, RT-Thread 可以
做到不依赖于具体的内存分配方式,伸缩性得到极大的加强。
   任务/线程调度

                             4
哈尔滨工业大学华德应用技术学院毕业设计(论文)


    支持以线程为调度单位的多任务系统。调度算法是基于优先级的全抢占
式线程调度,支持 256 个线程优先级, 0 优先级代表最高优先级, 255 优先级
留给空闲线程使用;支持创建同优先级线程,相同优先级的线程采用可设置
时间片的轮转调度;调度器寻找下一个最高优先级就绪线程的时间是恒定的
(O(1))。系统不限制线程数量的多少,只和物理平台的具体内存相关。
     同步机制
    系统支持 semaphore , mutex 等线程间同步机制。 mutex 采用优先级继存
方式以防止优先级翻转。 semaphore 释放动作可安全用于中断服务例程中。同
步机制支持线程按优先级等待或按先进先出方式获取信号量或互斥锁。
     通信机制
    系统支持 event/fast event , mailbox , message queue 通信机制等。 event
支持多事件 " 或触发 " 及 " 与触发 " ,适合于线程等待多个事件情况。 fast event
支持事件队列,确定事件阻塞线程的时间值固定。 mailbox 中一个 mail 的长
度固定为 4 字节,效率较 messagequeu 高。通信设施中的发送动作可安全用
于中断服务例程中。通信机制支持线程按优先级等待或按先进先出方式获取。
   时钟,定时器
  系统默认使用时钟节拍来完成同优先级任务的时间片轮转调度;线程对
内核对象的时间敏感性是通过系统定时器来实现的,此外,定时也支持一次
定时及周期性定时。
   内存管理
  系统支持静态内存池管理及动态内存堆管理。从静态内存池中获取内存
块时间恒定,而当内存池空时,可把申请内存块的线程阻塞 (或立刻返回,或
等待一段时间仍未获得返回,取决于内存块申请时设置的等待时间 ),当其他
线程释内存块到内存池时,将把阻塞线程唤醒。
   FinSH
  FinSH 是 RT-Thread 内核中的 shell 系统,通过它能够直接在 shell 中调用
系统函数,访问系统变量;接受 C 语言中大多数运算符 ( 包括指针运算符 ) 进
行简单计算;通过定义指针(函数)变量并指向某特定地址,可以完成匿名函数
调用的功能。
   诊断
  通过系统提供的 FinSH shell 系统,能够观测线程,信号量,互斥锁,事
件,邮箱,消息队列的运行情况,能够获得各个线程的栈使用情况。
  内核对象管理器中也提供了 Hook 机制,可以用于辅助纪录 / 跟踪内核对

                                 5
哈尔滨工业大学华德应用技术学院毕业设计(论文)


象的使用情况。
   可移植性
  系统采用核心与 BSP 分离的方式,其中内核采用 100% 标准 C 编写,具
备优秀的可移植性,适合于多种体系结构多种编译器。抽象出的 BSP 层采用
标准 C 和汇编混合编写。

RealView MDK
   RealView MDK 开发工具源自德国 Keil 公司,被全球超过 10 万的嵌入式
开发工程师验证和使用,是 ARM 公司目前最新推出的针对各种嵌入式处理器
的软件开发工具。 RealView MDK 集成了业内最领先的技术,包括 µVision3
集成开发环境与 RealView 编译器。支持 ARM7 、ARM9 和最新的 Cortex-M3
核处理器,自动配置启动代码,集成 Flash 烧写模块,强大的 Simulation 设
备模拟,性能分析等功能,与 ARM 之前的工具包 ADS 等相比, RealView 编
译器的最新版本可将性能改善超过 20%。
   RealView MDK 出众的价格优势和功能优势,势将成为 ARM 软件开发工
具的标准,预计一年之内,RealView MDK 将占有国内 ARM 开发工具市场的
90%以上。


网络调试工具
  网络调试助手是一款能够自由配置 PC 端电脑为 TCP 服务器, TCP 客户
端的网络调试工具。在实际工程应用中,根据实际的普遍的需求而开发的网
络调试工具。支持 UDP,TCP 协议,支持单播 / 广播,集成 TCP 服务器和客户
端。支持 ASCII/Hex 发送 ,发送和接收的数据可以在 16 进制和 AscII 码之间任
意转换。可以自动发送校验位,支持多种校验格式。支持间隔发送,循环发
送,批处理发送,输入数据可以从外部文件导入。




                         6
哈尔滨工业大学华德应用技术学院毕业设计(论文)




              可行性分析及总体设计

  市场对网络收音机的需求有不断增加的趋势。基于市场的定位,将网络
收音机的功能做如下界定:具有强大的信息处理能力,能够适用于网上电台
的主要数据格式 ( 包括: REALPLAYG2 、 MP3 等 ) ;多种数据传输形式;高效
的网络数据接收能力,在网络带宽满足最低语音传输条件的情况下也能平稳
地播放数据,使收听效果连续,平滑;操作方便快捷,以满足大众化的需求;
支持多种上网方式,适应不同的用户群;有一定的信息存储能力,以存储各
个电台的广播资源 URL 、存储用户常用信息;环绕立体声,保证良好的音质;
收音机小巧、轻便,美观大方;价位适中。这些功能定位和市场定位是软硬
件设计的重要参考。


1.5 可行性分析

    网络 收音 机主 控方 面采 用 LM3S8962 最 为主 控芯 片, LM3S8962 具有
256KB FLASH ,64KB SRAM, CAN,10/100 ETH ,10bit ADC ,PWM,价格
上 似 乎 单 个 芯 片 有 点 高 , 但 是 和 类 似 产 品 比 较 如 : STM32 系 列 的
M3 , LPC2148 相比,在存储器大小相当时再外廓 ETH 芯片的是查不多的,
最大的问题是,他用一个芯片就解决了以太网通讯问题,简单,可靠,减小
了产品的体积, 64KB 的 RAM 做一般的以太网通讯完全足够应用,这对一些
不可以外壳存储器,而且内部存储器又不是很大的产品是一次改善,是业内
非常完善的真正意义上的但芯片以太网通讯解决方案。 LM3S8962 评估板资
源主要有以太网接口, OLED 屏,大容量的片上 SRAM ,用来做网络收音机
已经完全足够。
  而 MP3 解码方面,如果硬件速度足够快,完全可以用软解码来实现 MP3
解码,然后驱动 PWM 输出。但考虑软解码技术难度较高,从而改为硬件解
码。硬件解码的优点在于解码芯片完全能够独立解码 MP3 数据流,程序部分
不用考虑,只需要将 MP3 数据通过 SPI 送入解码芯片即可。硬件解码芯片考
虑选择 VLSI VS1003。VS1003 是由芬兰 VLSI 公司出品的一款单芯片的 MP3/
WMA/MIDI 音频解码和 ADPCM 编码芯片,其拥有一个高性能低功耗的 DSP

                             7
哈尔滨工业大学华德应用技术学院毕业设计(论文)


处理器核 VS_DSP,5K 的指令 RAM,0.5K 的数据 RAM,串行的控制和数据
输入接口, 4 个通用 IO 口,一个 UART 口;同时片内带有一个可变采样率的
ADC、一个立体声 DAC 以及音频耳机放大器。
   硬件条件基本具备,根据功能,可以知道网络收音机需要能够读取 SD
卡,能够获取网络数据,这就要求软件方面要实现文件系统以及 TCP/IP 协议
栈。并且,单从读取播放 MP3 的功能上考虑,还要实现线程的功能,因为读
取 MP3 和播放 MP3 要同时进行,这就要考虑到一直一款什么样的实时操作
系统, uC/OS-II 是当初考虑的一个操作系统,但是考虑到 Cortex 是比较新的
架构,uC/OS 并没有相关移植,而且相关的文件系统和 TCP/IP 协议栈还要移
植,并没有太多的时间用来研究操作系统的移植,所以要找一款现在能够直
接在 LM3S8962 评估板上运行的操作系统。 LM3S8962 自带的例程里面有一
款 freeRTOS ,由于接触少而且并没有带文件系统,所以放弃。在网上搜集了
一下资料。最终选择了国人近些年开发的一款实时操作系统 RT-Thread。经过
分析,RT-Thread 目前发布的版本完全符合我的需求,既满足了系统的实时性,
有本身带有文件系统 FatFS 以及 LwIP 协议栈。而且现在网上已经有一批人在
用 RT-Thread 做项目,例程也比较多。
    基于以上分析,用 LM3S8962 和 VS1003 完全可以实现网络收音机的设
计。


1.6 总体设计

  基于市场的定位,本人将网络收音机的功能做如下界定:
   具有强大的信息处理能力;
   能够适用于网上电台的主要数据格式,例如 MP3 等;
   网络数据接收能力;
   操作方便快捷;
   有一定的信息存储能力,以存储各个电台的广播资源 URL 、存储用
    户常用信息;
   环绕立体声,保证良好的音质;
  在以上功能基本实现的基础上,本人还想增加支持多种上网方式,适应
不同的用户群。
  基于以上功能,将网络收音机硬件部分分为主控模块, microSD 卡模块,

                       8
哈尔滨工业大学华德应用技术学院毕业设计(论文)


OLED 模块,按键模块,通过 SPI 与 VS1003 模块通信。 MP3 音频信息通过
VS1003 解码后输出到用户。
   总体设计框图如图 2-1 所示。




                               VS1003
                              音频解码         用户




                                    
                                            按键
                                   
                                   
Internet                                   microSD
             Ethernet         LM3S8962
                                   
                                            OLED
              PHY                  
                                MCU
                                            显示
                            LM3S8962 评估板


                        图 2-1 总体设计框图



1.7 本章小结

   本章主要阐述了对网络收音机从硬件上以及软件上实现功能的可行性分
析,硬件上选择有先天优势的 LM3S8962 评估板作为主控,并且这款评估板
已经自带了 OLED 显示,按键,以及最重要的网络模块。配合硬件解码芯片
VS1003 。只需要将从 microSD 卡读出的 MP3 数据通过 SPI 传送到 VS1003 就
可以实现 MP3 解码。软件方面选择了国人开发的 RT-Thread ,其优秀的实时
性,以及本身自带的文件系统和 TCP/IP 协议栈使得在移植上的工作量大大减
少。




                               9
哈尔滨工业大学华德应用技术学院毕业设计(论文)




                 硬件设计

1.8 硬件设计概述

  硬件电路的总体设计是根据系统的总体功能,将各硬件功能模块整合在
一个电路板子上,根据各个模块之间的关系设计连接线路。
  网络收音机硬件与其他嵌入式系统硬件系统设计大同小异,主要就是选
配各种接口控制芯片,确定存储空间分配。此硬件系统是基于 LM3S8962 评
估板,作为 LM3S8962 的一个应用而设计的。
  本系统一共分为 microSD 卡文件管理、网络接口、音频解码、 OLED 显示
和键盘输入五大模块,每个模块之间虽然在表面上是相互独立的,但是在对数
据库的访问上是紧密相连的。硬件框图如图 3-1 所示。




                     10
哈尔滨工业大学华德应用技术学院毕业设计(论文)


                                                 OLED
          Ethernet
           PHY                                   显示



         按键模块                                  microSD 卡




         电源管理                                   VS1003
                              LM3S8962
      5V , 3.3V , 2.8           MCU            解码芯片




                                               音频输出



                            图 3-1 硬件框图
  LM3S8962 主要负责全局控制, microSD 卡模块负责存储 MP3 文件,网络
接口负责网络信息的接受与发送,音频解码部分采用的是 VS1003 解码芯片,
主要负责解码由 SPI 送过来的音频数据,OLED 显示以及键盘输入模块负责人
机交互。


1.9 主控芯片电路设计


LM3S8962 控制器特点
  32 位 RISC 性能的 ARM ® Cortex™使用- M3 的 v7M 架构
   50 MHz 运行
   硬件处和单周期乘法
   内存保护单元( MPU ),提供了一个受保护的操作系统特权模式功
       能
      集成的嵌套向量中断控制器(NVIC)
      42 个中断通道,每个通道 8 个优先级的
      256 KB 的单周期闪存
      64 KB 的单周期 SRAM
      4 个通用 32 位定时器

                                   11
哈尔滨工业大学华德应用技术学院毕业设计(论文)


  集成以太网 MAC 和 PHY
  控制器区域网络(CAN)模块
  三个完全可编程的 16C550 型 UART 接口
  4 个 10 位 ADC 通道(输入)时为单端输入使用
  一个集成模拟比较器
  一个 I2C 模块
  两个 PWM 发生器模块
   1 个 16 位计数器
   两个比较
   产生两个独立的 PWM 信号


LM3S8962 管脚连接图
  LM3S8962 芯片复位电路以及晶振连接电路如图 3-2 所示。




                      12
哈尔滨工业大学华德应用技术学院毕业设计(论文)




                       图 3-2 管脚连接图



1.10 电源电路设计

    该 LM3S8962 供 电 是 +3.3 V 电 源 。 一 个 低 压 降 ( LDO ) 电 源 芯 片
LP8345ILD-3.3 把从 USB 电缆上的+5 V 转换为 3.3 V 的。 3.3 -V 电源可用于
驱动外部电路。+5 V 转+3.3 V 电源转换模块如图 3-3 所示。




                              13
哈尔滨工业大学华德应用技术学院毕业设计(论文)




              图 3-3 LP8345ILD-3.3 电源转换模块


  +15 V 通道电源可用使 OLED 显示电源处于活动状态。扬声器和 OLED
显示器升压转换器操作需要+5- V 通道。如图 3-4 所示。




                  图 3-4 OLED 供电模块




1.11 以太网模块设计

  LM3S8962 微控制器的一个主要特点是其完全集成的以太网控制器。只需
要一个采用磁集成技术的 RJ45 和少数无源元件就可以完成一个 10/100M 以太
网接口。 RJ45 插孔集成发光二极管,指示交通和连接状态。这些都是自动被
片上微控制器硬件管理的。另外,发光二极管可软件控制由配置为通用输出的
引脚。该 LM3S8962 支持自动 MDI /的 MDI - X 的,以便该评估板可以直接连
接到网络或另一种无需交叉电缆以太网设备。如图 3-5 所示。

                            14
哈尔滨工业大学华德应用技术学院毕业设计(论文)




                       图 3-5 以太网模块




1.12 microSD 卡模块设计

   可移动存储卡是存储网页内容等数据的理想介质。光盘上的源代码包括从
标准 FAT 格式的 SD 上读数据。使用 SD 卡的 SPI 接口进行读写控制。但是
SD 卡规范不需要 SD 卡支持 SPI 模式,但实际上大多数厂家仍然支持。来
自多家 SD 卡厂商的 SD 卡已经用于 EVB 上。MicroSD 卡是非常小,需要慎
重处理。关于 EVB 的 SD 卡插槽 1 按压式(推插入,再次推到退出)。注意:
为避免损坏,插入或取出之前请关掉 SD 卡电源。
   由于 LM3S8962 只有一个 SPI 接口所以, microSD 和 OLED 只能通过片选
来复用 SPI,microSD 卡引脚分配如表 3-1 所示:
                    表 3-1 microSD 模块引脚分配
                    引脚                     功能
           PG0                     microSD 卡片选
           PA4/SSI0RX              microSD 卡数据输出
           PA5/SSI0TX              microSD 卡数据输入
           PA2/SSI0CLK             时钟



                               15
哈尔滨工业大学华德应用技术学院毕业设计(论文)


   引脚电路连接如图 3-6 所示。




                         图 3-6 microSD 卡模块




1.13 OLED 显示模块设计

   显 示 部 分 为 一 块 128X98 像 素 4 位 灰 度 的 OLED 图 像 显 示 屏 。 这 个
OLED 内部自动控制 IC,该 IC 支持同步串行接口(SSI)和并行接口。SSI 接口
用在 EVB 上, 仅需少数 LM3S8962 管脚, 不能从 OLED 控制器读数据,
因为仅需一条数据线。SSI 接口和迷你 SD 卡槽共享数据线。
  15V 电源需要给 OLED 偏置, FAN5331 和几个外部元件一起完成高压转
换。PA7 用来控制控制器上电顺序。OLED 工作时,15V 电源不能为其他器件
供电。
  由于 LM3S8962 只有一个 SPI 接口所以, microSD 和 OLED 只能通过片选
来复用 SPI,OLED 引脚分配如表 3-2 所示:
                         表 3-2 OLED 引脚分配
                    引脚                  功能
           PA3                   片选
           PA5/SSI0TX            OLED 数据输入
           PA2/SSI0CLK           时钟
           PA6/CCP1              OLED 显示数据/控制选择



                                  16
哈尔滨工业大学华德应用技术学院毕业设计(论文)




  OLED 显示模块电路连接如图 3-7 所示。




                 图 3-7 OLED 显示模块



1.14 按键模块设计

  一共设计了 5 个通用输入的按钮开关, 4 个是按照导航风格配置的,第 5
个是选择开关。
  按键模块引脚分配如表 3-3 所示。
                 表 3-3 按键模块引脚分配
              引脚               功能
        PF1              按键“选择”
        PE0              按键“上”
        PE2              按键“左”
        PE3              按键“右”
        PE1              按键“下”


  按键模块电路连接如图 3-8 所示。

                         17
哈尔滨工业大学华德应用技术学院毕业设计(论文)




                   图 3-8 按键模块



1.15 VS1003 模块设计


VS1003 最小系统部分设计
  VS1003 最大的采样率 XTAL1/256,决定了能以正确的速度播放的音频采样
率。因此,为了能播放 48KHz 采样率的音频,XTAL1 至少为 12.288MHz 才能
获得正确的播放速度。如图 3-9 所示。




                         18
哈尔滨工业大学华德应用技术学院毕业设计(论文)




                    图 3-9 VS1003 最小系统



VS1003 与 LM3S8962 连接部分设计
  VS1003 模块通过 SPI 与 LM3S8962 连接。 VS1003 与 LM3S8962 连接部分
引脚如表 3-4 所示。
              表 3-4 VS1003 与 LM3S8962 连接部分引脚
                    引脚                功能
              PC4              复位
              PC5              数据请求
              PC6              控制使能
              PC7              数据使能
              PD4              CLK
              PD6              SO



                              19
哈尔滨工业大学华德应用技术学院毕业设计(论文)

            PD7           SI

  VS1003 与 LM3S8962 连接部分引脚电路图如图 3-10 所示。




          图 3-10 VS1003 与 LM3S8962 连接部分引脚电路图



VS1003 电源模块设计
  根据 VS1003 数据手册得知参数容许最大范围如表 3-5 所示。
                  表 3-5 参数容许最大范围
           参数           符号   最小           最大        单位
     模拟正电源              AVDD -0.3           3.6      V
     数字正电源              CVDD -0.3           2.7      V
     I/O 正电源           IOVDD -0.3           3.6      V
     所有数字口输出电流                             ±50      mA
     所有数字口输入电压                   -0.3   IOVDD+0.3    V
     操作温度                        -40        85      ℃
     存储温度                        -60       150      ℃


  依据参考范围,模拟正电源最最大值为 3.6,采用 AMS1117-3.3 进行电压
转换。如图 3-11 所示。




                            20
哈尔滨工业大学华德应用技术学院毕业设计(论文)


               图 3-11 AMS1117-3.3 电压转换模块
  依据参考范围,数字正电源最最大值为 2.7,采用 AMS1117-2.5 进行电压
转换。如图 3-12 所示。




               图 3-12 AMS1117-2.5 电压转换模块



VS1003 音频插孔设计
  地缓冲器 GBUF 可以用做耳机的公共电压(1.24V),直接从 VS1003 连接
至耳机连接器。如图 3-13 所示。




                  图 3-13 音频插孔连接图



1.16 本章小结

   本章主要描述了网络收音机硬件功能实现的整体设计思路,主要利用了
LM3S8962 作为主控芯片,描述了各自的主要特性,给出了基本的系统框架,
并在此基础之上,阐述了电源模块,以太网模块, microSD 卡模块,OLED 显

                            21
哈尔滨工业大学华德应用技术学院毕业设计(论文)


示模块,按键模块以及 VS1003 模块的设计。




                     22
哈尔滨工业大学华德应用技术学院毕业设计(论文)




                      软件设计

  嵌入式系统软件设计的语言,可用汇编语言也可以用 C 语言来编写,但汇
编语言相对于 C 来讲比较复杂,维护比较繁琐,而 C 语言简洁,设计比较容易。
利用 KeilC 作为软件开发的平台,主要完成主控芯片与解码芯片之间的数据传
输,以及解码芯片的解码过程,网络收音机的播放流程的软件设计过程。主要
软件流程图如图 4-1 所示。

                        开始



                      系统初始化



                     文件系统系统初始化




                      LwIP 初始化



                      菜单结构初始化
                                         失败


               MP3                 流媒体

   读取 MP3 文件           选择功能              连接流媒体



                                              成功

                                         读取流媒体资源




                       VS1003 解码




                         结束



                             23
哈尔滨工业大学华德应用技术学院毕业设计(论文)


                        图 4-1 软件流程图



1.17 文件系统

  为了读取 microSD 卡上 MP3 文件,必须要有文件系统。RT-Thread 的文件
系统采用了三层的结构,如图 4-2 所示。




                     图 4-2 RT-Thread 文件系统
   RT-Thread 采用的是日本开源的 ELM Chan’s FatFS 文件系统,这个文件系
统结构清晰,移植也比较方便。下载下来的 FatFs 有两个文件夹,一个是 doc
,FatFs 的说明,包括特性,系统函数,以及可能的一些问题,另一个就是源
代码文件夹 src 了,总共 8 个文件,diskio.c 和 diskio.h 是硬件层, ff.c 和 ff.h 是
FatFs 的文件系统层和文件系统的 API 层,integer.h 是文件系统所用到的数据类
型的定义, tff.c 和 tff.h 是 Tiny 的文件系统层和文件系统的 API 层,还有一个
00readme.txt 简要的介绍了 FatFSHE FatFs/Tiny,包括他们所支持的 API,怎么
配置等等。
   移植的问题,第一个是数据类型,在 integer.h 里面去定义好数据的类型。
第二个,就是配置,打开 ff.h(我用的 FatFs,不是 Tiny),_MCU_ENDIAN,
选择你的 CPU 是大端存储( big endding )还是小端存储( little endding ),一
般的都用的小端存储,1 是小端,2 是大端。这个相当重要,这里选择小端存
储。
   第三件事情,就是写底层的驱动函数(详见附录 2),包括:
    disk_initialize - Initialize disk drive
    disk_status - Get disk status

                                24
哈尔滨工业大学华德应用技术学院毕业设计(论文)


      disk_read - Read sector(s)
      disk_write - Write sector(s)
      disk_ioctl - Control device dependent features
      get_fattime - Get current time


1.18 TCP/IP 协议栈

    要想实现网络通信, TCP/IP 协议栈是必须的。RT-Thread 本身已经移植好
LwIP,程序只需要实现 LwIP 的功能就行了。
    LwIP 是 瑞 士 计 算 机 科 学 院 ( Swedish Institute of Computer Science ) 的
Adam Dunkels 等开 发的 一 套 用于 嵌入 式系 统的 开放 源 代 码 TCP/IP 协 议栈 。
Lwip 既可以移植到操作系统上,又可以在无操作系统的情况下独立运行。
     LwIP 的特性如下:
     支持多网络接口下的 IP 转发
     支持 ICMP 协议
     包括实验性扩展的的 UDP(用户数据报协议)
     包括阻塞控制, RTT 估算和快速恢复和快速转发的 TCP(传输控制协
       议)
      提供专门的内部回调接口(Raw API)用于提高应用程序性能
      可选择的 Berkeley 接口 API(多线程情况下)
      在最新的版本中支持 ppp
      新版本中增加了的 IP fragment 的支持.
      支持 DHCP 协议,动态分配 IP 地址.


1.19 MP3 播放模块设计

  MP3 是经过编码的一种音频数据格式,要想播放 MP3 格式的文件必须进
行解码。而解码方式又有两种,一种是利用高速的的 CPU 将读取到的 MP3 流
进行解码后通过 PWM 播放出来;一种是利用硬件解码, CPU 将读取到的 MP3
文件流送入到解码芯片,解码芯片经过解码之后将音频信息输出出来。本设计
采用的是硬件解码方式,选用的是 VLSI 公司的 VS1003 解码芯片,

                                         25
哈尔滨工业大学华德应用技术学院毕业设计(论文)



正确配置 IO
  VS1003 常规使用 SPI 接口接收主控设备控制和数据传输。此外通常还另
外需要 4 跟 GPIO 控制,分别是: 控制使能、数据使能、复位以及数据请求。
  这里分别选用 PC4 、 PC5 、 PC6 、 PC7 为复位,数据请求,控制使能,数
据使能。选用 PD4、PD6、PD7 为 GPIO 模拟的 CLK,MISO,MOSI。


GPIO 模拟 SPI
     所有对 VS1003 的操作将通过 SPI 总线来完成。但是 LM3S8962 只有一组
SPI 总线,并且已经用在 microSD 卡和 OLED 显示上。所以,对于 VS1003 选
择 GPIO 模拟 SPI 会更方便。
     在默认情况下,数据位将在 SCLK 的上升沿有效(被读入 VS1003 ),因
此需要在 SCLK 的下降沿更新数据;并且字节发送以 MSB 在先。 VS1003 的
SPI 总线的输入时钟最大值为 CLKI / 6 MHz,其中 CLKI(内部时钟)= XTALI
× 倍频值。
void SPIPutData(unsigned char ucData)
{
    unsigned char i = 0;
    for(i = 0; i < 8; i ++)
    {
        GPIOPinWrite(GPIO_PORTD_BASE, SoftSSICLK, 0);
        if(ucData & 0x80)
              GPIOPinWrite(GPIO_PORTD_BASE, SoftSSITx, SoftSSITx);
        else 
              GPIOPinWrite(GPIO_PORTD_BASE, SoftSSITx, 0);
        Delay(1);
        GPIOPinWrite(GPIO_PORTD_BASE, SoftSSICLK, SoftSSICLK);
        Delay(1);
        ucData = ucData << 1;
    }
    GPIOPinWrite(GPIO_PORTD_BASE, SoftSSICLK, 0);
}

                                  26
哈尔滨工业大学华德应用技术学院毕业设计(论文)



1.20 SHOUTcast 服务模块设计

  通过 LM3S8962 芯片的以太网接口将他连接到外网上,配合 TCP/IP 软件
协议栈(根据需要裁剪)连接到网络上的音频播放服务器接受其音频数据,对
接收到的音频数据进行分析,把音频信息通过 OLED 显示出来,将音频的编码
数据送到解码器解码,并且通过耳机播出。
  要连接到 SHOUTcast 服务器就要先向服务器发送 SYN 握手信息,等收到
服务器的 ACK 后才能确保连接成功建立。如图 4-3 所示。




                   图 4-3 TCP 连接建立过程
  收到服务器的确认信息后,连接建立,服务端就会向客户端发送 MP3 元
数据以及流媒体数据。通过 recv(sock, recv_data, 1024, 0);来接收这些数据。将
接收的数据保存在 recv_data 后,将 recv_data 通过 SPI 发送到 VS1003,通过解
码后便可以听到 MP3 了。


1.21 菜单模块设计

     网络收音机通过菜单实现人机交互。菜单的主要功能就是让用户选择各个
功能。由于本设计中菜单项目个数不确定,而且菜单还要对应指向相应函数,
所以考虑建立一个结构体。
struct MenuItem
{

                            27
哈尔滨工业大学华德应用技术学院毕业设计(论文)


     short MenuCount;
     char *DisplayString;
     void (*Subs)();
     struct MenuItem *ChildrenMenus;
     struct MenuItem *ParentMenus;
};
     要定义一个菜单,需要做以下几步工作
      定义一个结构体数组;
      如果这个菜单是子菜单,那么把上级菜单的 ChildrenMenus 指针指向
       该数组的首地址,并且设置 ParentMenus 为上层目录的地址;
      如果这个菜单是跟菜单,那么直接将 MenuPoint 指针指向该数组的首
       地址;
      通过写一个函数为该数组的每一个元素初始化;
      如果菜单项是最终选项,那么将 ChildrenMenus 置为 NULL,将函数指
       针 Subs 指向实现功能的函数。


1.22 本章小结

   本章主要阐述了网络收音机底端软件设计,主要从 LM3S8962 与解码芯片
VS1003 之间的数据通信、 MP3 文件读取、 SHOUTcast 服务器连接等方面阐述
了软件实现过程。软件设计过程中,主要利用 C 语言来编写程序, ARM 系列
的单片机软件设计可以用汇编语言进行设计,但汇编语言相对于 C 来讲,语言
比较复杂,维护比较繁琐,而 C 语言简洁,设计比较容易。




                                       28
哈尔滨工业大学华德应用技术学院毕业设计(论文)




                第2章 系统测试

2.1 LM3S8962 与电脑连接

    FT2232 芯片实现 USB 转串口功能。 FT2232 实现两个功能: A 通道上实
现 JTAG/SWD 端口功能;B 通道上实现虚拟串口功能。这个特点使得在计算机
和 EVB 间使用一个 USB 电缆实现两个通讯连接。安装后评估板的驱动,在
系统设备管理里面会发现虚拟串口,如图 5-1 所示。




                   图 5-1 虚拟串口
  对 LM3S8962 的调试主要都通过串口通信进行,所以要进行串口的设置。
打开串口调试助手,会在右面看到设置选项,根据 RT-Thread 中串口的配置来
设置这里的选项。如图 5-2 所示。




                         29
哈尔滨工业大学华德应用技术学院毕业设计(论文)




                   图 5-2 串口调试助手界面
  这里将串口号设置为 COM5,波特率设置为 115200,校验位无,数据位 8
位,停止位 1 位。


2.2 RT-Thread 启动测试

  将评估板连接到电脑,配置好串口调试助手, RT-Thread 内核编译好后,
可以用通过 Keil 下载到评估板。下载完成后,按 Reset 键,便可以在串口调试
助手中看到 RT-Thread 的启动界面:
               |/
               - RT - Thread Operating System
               / |  0.3.1 build Nov 27 2010
               2006 - 2009 Copyright by rt-thread team
               finsh>>File System initialized!
               TCP/IP initialized!

                           30
哈尔滨工业大学华德应用技术学院毕业设计(论文)


                vs1003_init
  在终端中发送“list()”,串口助手中便会显示当前 RT-Thread 所支持的指令
说明 RT-Thread 正常启动。


2.3 VS1003 模块测试

    首先将 VS1003 模块与 LM3S8962 正常连接。 PC4、PC5、PC6、PC7 分别
连接复位、数据请求、控制使能、数据使能。 PD4 、 PD6 、 PD7 分别连接
CLK、SO、SI。
    VS1003 的 SPI 总线用来传送 MP3 数据和控制命令。当要传送 MP3 数据时
xDCS 须置为低电平,而 xCS 置 1 。此时 SPI 总线称作 SDI (串行数据接口)。
VS1003 拥有以下几种测试模式:存储器测试、SCI 总线测试和正弦测试。所有
的这些测试都有相同的步骤:硬件复位,置位模式寄存器 SPI_MODE 的 bit5:
SM_TESTS,发送测试命令到 SDI 总线上。测试命令总共包含 8 个字节的数据,
前 4 个字节为命令代码,后四个字节为 0。正弦测试属于芯片内部的测试功能,
如果写 SDI 总线无误的话可以从耳机里听到单一频率的正弦音(可以通过命令
更改频率),强烈建议大家对此项步骤测试时不要将耳塞直接塞入耳中,因为
系统不同可能导致声音大小会不同,有可能极其刺耳。正弦测试步骤如下:
     进入 VS1003 的测试模式:SPI_MODE = 0x0820;
     等待 DREQ 为高;
     xDCS 拉低(xCS 置 1),选择 vs1003 的数据接口;
     向 VS1003 发送正弦测试命令: 0x53 0xEF 0x6E 0x30 0x00 0x00 0x00
       0x00;
     延时 500ms;
     退 出 正 弦 测 试 , 发 送 命 令 : 0x45 0x78 0x69 0x74 0x00 0x00 0x00
       0x00;
     延时 500ms;
     循环。




                                31
哈尔滨工业大学华德应用技术学院毕业设计(论文)



2.4 文件系统测试


2.4.1 目录读取测试
      正常启动 RT-Thread 后,会在串口调试助手中看到提示信息“ File System
initialized!”,说明文件系统初始化完成。向串口发送“ ls("/")”,可以看到当前
microSD 中的目录结构。输入“ ls("/MP3")”,可以看到预存在 microSD 卡中的
MP3 文件,如图 5-3 所示。




                       图 5-3 读取 MP3 目录



2.4.2 播放 MP3 测试
   由于 VS1003 有 32Byte 的数据缓冲区,一次可以发 32 个字节的数据,然
后 检 测 DREQ , 当 DREQ 为 高 时 送 下 一 个 32Byte 的 数 据 , 直 到 发 完 为 止 。
DREQ 为高表明 VS1003 可以接受新的数据,如果不考虑 DREQ 的话直接连续

                               32
哈尔滨工业大学华德应用技术学院毕业设计(论文)


的给 VS1003 发的 mp3 数据的话将会出现音乐断断续续的情况。
Mp3SelectData();                         //VS1003 数据选择
fd = open("/mp3/64.mp3",O_RDONLY,0);
while(read(fd, buf, sizeof(buf)))        //判断是否读取到文件尾
{
      for(i = 0; i < 512; i = i + 1)
      {
             while(VS_DREQ_READ() == 0); //等待 DREQ 为高
             SPIPutData(buf[i]);         //发送 buf 中的 MP3 数据
      }
}
Mp3DeselectData();                       //VS1003 数据禁止


2.5 网络连接测试


2.5.1 局域网测试
  要将 LM3S8962 连接到局域网,首先要设置 LM3S8962 的网络配置。在串
口助手中输入“list_if ()”显示当前配置为:
  ip address: 192.168.81.1
    gw address: 192.168.81.250
    net mask : 255.255.255.0
    dns server : 208.67.222.222
    如果将 LM3S8962 与电脑连接,还需要将电脑配置成评估板的网关。
    配置好后,在电脑端打开命令提示符,输入“ ping 192.168.81.1” ,如果
数据包全部接收到,则说明 LM3S8962 已经与 PC 端正常连接。然后打开“网
络调试助手”,在“通讯设置”中将协议类型选为“ TCP 服务器”, IP 地址
填写刚才配置的地址“ 192.168.81.2” ,本地端口填写一个当前没有被占用的
端口,这里填写“ 8080” ,点击连接, PC 端就会被配置成 TCP 服务器,监听
来 自 8080 端 口 的 请 求 。 此 时 , 在 串 口 助 手 中 输 入
“ tcpclient(“192.168.81.2”,8080)”,LM3S8962 的客户端程序就会和 PC 端 TCP
服务器建立 TCP 连接。此时,在网络调试助手中发送文本信息, LM3S8962

                                33
哈尔滨工业大学华德应用技术学院毕业设计(论文)


的串口端就会接收到服务端发送的文本信息。


2.5.2 因特网测试
   因特网的连接和局域网的连接类似,只不过连接的服务器是远程
SHOUTcast 服务器,建立 SHOUTcast 服务器连接首先要知道服务器的握手信息。
建立一个字符数组用来存储要发送到 SHOUTcast 服务器的信息。
   static char send_data[] =
   {
      "GET "RADIO_URL" HTTP/1.0rn"
      "Host: "RADIO_IPADDR"rn"
      "User-Agent: WebRadio/0.01rn"
      "Accept: */*rn"
      "Icy-MetaData:1rn"
      "Connection: Keep-Alivern"
      "rn"
   };
   通过 send(sock,send_data,strlen(send_data), 0) 函数将 send_data 发送到服务
器端,如果服务器连接成功,将收到以下信息,如图 5-4 所示。




                    图 5-4 SHOUTcast 服务器返回信息




                                 34
哈尔滨工业大学华德应用技术学院毕业设计(论文)



2.5.3 播放流媒体测试
     和 SHOUTcast 服务器建立连接后,就会收到流媒体信息以及元数据,用
recv(sock, recv_data, 1024, 0) 函数将接收到的数据存入 recv_data,并且将 recv()
的返回值存入 bytes_received 用以记录接收到的字节数。然后将 recv_data 通过
SPI 传送到 VS1003 进行解码。
     void PlayMp3Stream(char *mp3buf, int bytes_received)
     {
      unsigned int i;
      Mp3SelectData();                            //VS1003 数据选择
      for(i = 0; i < bytes_received; i++)
      {
             while(VS_DREQ_READ() == 0);          //等待 DREQ 为高
             SPIPutData(mp3buf[i]);               //发送 mp3buf 中的数据
      }
      Mp3DeselectData();                          //VS1003 数据禁止
     }


2.6 本章小结

   本章主要详细设计了网络收音机的测试环境,对网络收音机所用到的
RTOS,读取 MP3 文件,局域网连接和因特网连接,播放 MP3 文件以及播放流
媒体数据做了详细的测试。测试结果与预计结果基本一致。




                                  35
哈尔滨工业大学华德应用技术学院毕业设计(论文)




                   结  论

   本设计以 32 位 Cortex-M3 LM3S8962 为核心,完成了一个简单网络收音机
的设计。分别从硬件与软件的角度阐述了整个设计的过程。硬件设计主要阐述
了网络收音机所用到的 LM3S8962 评估板中电源管理,以太网模块, microSD
卡模块,OLED 显示模块,按键模块的功能以及相关的电路连接图。所用到的
解码模块为 ICDev 网站开发的 VS1003 解码模块。软件设计中主要学习了 Keil
C 的开发环境,利用 C 语言开发了 OLED 显示以及键盘控制。在驱动 VS1003
的时候,按照网上的驱动并不能让 VS1003 正常工作,我只有按照数据手册一
步一步的重写驱动部分,这期间虽然碰到的问题多,但学到的东西也多。做网
络连接部分期间了解了 TCP/IP 协议栈的一些相关知识,以及 Winamp 播放软件
的一些知识,初步了解了 SHOUTcast 网络电台服务器的知识,同时还对流媒体
技术做了浅入的了解。在测试环节中,对于系统的整体测试过程以及测试的结
果也做了比较详细的说明,以实际的数据证明了所设计的网络收音机的可行性。
    现在所设计的网络收音机只是一个初步的设计方案,设计中存在不成熟的
地方,有待进一步改进。因为 microSD 卡和 OLED 使用的是同一个 SPI,所以
在 SPI 的复用方面做的还不是很好,按键就会死机。在收听效果方面,播放本
地 64K 比特率的 MP3 还能流畅播放,但是再高比特率的 MP3 就会断断续续的,
播放网络流媒体也是断断续续,这和网络速度也有一定的关系。可以考虑增加
线程或者通过优化协议,利用流媒体的相关技术使网络收音机能达到一个更好
的收听效果。在网络接入方式上,也可以增加多种方式,例如通过 3G 技术或
者 WIFI,并且使其可以实现图像的无线传输,以达到便携化目的。




                        36
哈尔滨工业大学华德应用技术学院毕业设计(论文)




                  致  谢

  经过三个多月的努力,终于完成了网络收音机的大致功能。在从自己设计
的收音机里听到 MP3 的那一刹那,最能形容的词就是幸福。
  感谢熊谱翔老师,他设计的 RT-Thread 是国内做好的 RTOS。
  感谢邱祎,在调试 RT-Thread 方面给了我很大的帮助,特别是在最关键的
时刻将 RT-Thread 0.4.0 LM3S 分支升级完毕。
  还要感谢我的导师,他的严格要求,无微不至的关怀,使我受益匪浅。在
他的帮助下,我实现了用 GPIO 模拟 SPI,完成了 VS1003 最重要的通信问题。
  更要感谢广大网友,没有他们的帮助与激励,我是不可能在这三个月中完
成网络收音机的设计的。
  还要感谢同我一起学习的同学们,论文的完成离不开你们的关心和帮助,
非常感谢你们,愿同窗之间友谊长存。




                      37
哈尔滨工业大学华德应用技术学院毕业设计(论文)




                               参考文献

1    周立功.ARM 微控制器基础与实践.北京航空航天大学出版社.2003
2    周立功.ARM 嵌入式系统基础教程.第二版.北京航空航天大学出版社.
     2008
3  黄志伟.全国大学生电子设计大赛技能训练.北京航空航天大学出版社.
   2007
4 博创科技.MP3 播放器与 U 盘设计.清华大学出版社.2004
5 冯博琴,陈文革.计算机网络.第二版.高等教育出版社.2008
6 何嘉斌,陈适.嵌入式 Internet 技术应用.单片机与嵌入式系统应用杂志
   社.2002.3
7 沙剑胜.基于 FS8610 网络收音机的设计与实现.贵州大学硕士论文.
   2008
8 袁海林.基于 ARM 的嵌入式网络收音机的设计.微计算机信息(嵌入式与
   SOC).2007.2
9 江小玲.嵌入式系统设计 Flash 存储器的应用.科技创新导报.2007.3
10 卓碧华,唐英,李淤.基于 ARM 内核的网络收音机的设计与实现.西南
   民族大学学报自然科学版.2007.4
11 陈兵 沈学馗.SOCKET 通信平台的设计与实现.小型微型计算机系统.
     1996.6
12   topsun.驱动你的 VS1003.ICDev 开发网.2006
13   周立功.Stellaris 外设驱动库.http://www.zlgmcu.com
14   RT-Thread 工作室.RT-Thread 实时操作系统编程指南.http://www.rt-
     thread.org
15   Chan.FatFs Generic FAT File System Module.http://elm-
     chan.org/fsw/ff/00index_e.html
16   Ebook.TCP/IP Networking: Internet Radio Using OLED Display and MP3
     Audio Decoder.Microchip Technology.2008
17   Ebook.Stellaris® LM3S8962 Evaluation Board USER’S
     MANUAL.TI.2009
18    Josh Beggs ,Dylan Thede.Designing Web Audio.O'Reilly Media.2001

                                      38
哈尔滨工业大学华德应用技术学院毕业设计(论文)




附录 1

                  流媒体技术简介
   互联网流媒体改变了网站,正如我们所知道的,它把网站从静态文本和图
形转变为基于声音和动画的多媒体网站。现在流媒体已纳入所有其他媒体,包
括电视、 广播电视电影。流媒体实际指的是一种新的媒体传送方式,而非一
种新的媒体。流媒体技术全面应用后,人们在网上聊天可直接语音输入;如果
想彼此看见对方的容貌、表情,只要双方各有一个摄像头就可以了;在网上看
到感兴趣的商品,点击以后,讲解员和商品的影像就会跳出来;更有真实感的
影像新闻也会出现。
   流媒体技术发端于美国。在美国目前流媒体的应用已很普遍,比如惠普公
司的产品发布和销售人员培训都用网络视频进行。
   流式传输方式则是将整个 A/V 及 3D 等多媒体文件经过特殊的压缩方式分
成一个个压缩包,由视频服务器向用户计算机连续、实时传送。在采用流式传
输方式的系统中,用户不必像采用下载方式那样等到整个文件全部下载完毕,
而是只需经过几秒或几十秒的启动延时即可在用户的计算机上利用解压设备
(硬件或软件)对压缩的 A/V、3D 等多媒体文件解压后进行播放和观看。此时多
媒体文件的剩余部分将在后台的服务器内继续下载。
    最大的突破是使用一个新的互联网协议和新的编码称为用户数据报协议
(UDP),压缩成数据包非常小的音频文件的技术。流媒体的传输需要合适的
传输协议,目前在 internet 上的文件传输大部分都是建立在 tcp 协议的基础上,
也有一些是以 ftp 传输协议的方式进行传输,但采用这些传输协议都不能实现
实时方式的传输。随着流媒体技术的深入研究,目前比较成熟的流媒体传输一
般都是采用建立在 udp 协议上的 rtp/rtsp 实时传输协议。
    为何要在 udp 协议而不在 tcp 协议上进行实时数据的传输呢?这是因为 udp
和 tcp 协议在实现数据传输时的可靠性有很大的区别。 tcp 协议中包含了专门的
数据传送校验机制,当数据接受方收到数据后,将自动向发送方发出确认信息 ,
发送方在接收到确认信息后才继续传送数据,否则将一直处于等待状态。而
udp 协议则不同,udp 协议本身并不能做任何校验。由此可以看出, tcp 协议注
重传输质量,而 udp 协议则注重传输速度.因此,对于对传输质量要求不是很

                       39
哈尔滨工业大学华德应用技术学院毕业设计(论文)


高,而对传输速度则有很高的要求的视音频流媒体文件来说,采用 udp 协议则
更合适。MP3 已经获得了作为一个伟大的,因为它的音质的编码格式巨大的人
气。 用于无线电广播节目的风格,专业人士一致认为这是最好的冠冕堂皇的
格式。 MP3 是最常用的方便,高效地上传和下载音乐文件到网站。 在下载的
MP3 是音乐爱好者,尤其是受欢迎,因为它保留了音频质量的同时,建立档案
大小最大为小于未压缩的 WAV 或 AIFF 音频文件的 12 倍。 MP3 是也迅速成为
流媒体音乐,以及首选格式,尽管它比建立一个复杂的 RealMedia 服务器。




                       40
哈尔滨工业大学华德应用技术学院毕业设计(论文)




附录 2

                       Introduction to Streaming Media
      Internet streaming media changed the Web as we knew it-- changed it from a
static text- and graphics-based medium into a multimedia experience populated
by sound and moving pictures. Now streaming media is poised to become the de
facto global media broadcasting and distribution standard, incorporating all other
media, including television, radio, and film. The low cost, convenience,
worldwide reach, and technical simplicity of using one global communications
standard makes web broadcasting irresistible to media publishers, broadcasters,
corporations, and individuals. Businesses and individuals once denied access to
such powerful means of communication are now using the Web to connect with
people all over the world.
      UDP and RTSP are ideal for audio broadcasting since they place a high
priority on continuous streaming rather than on absolute document security.
Unlike TCP and HTTP transmission, when a UDP audio packet drops out, the
server keeps sending information, causing only a brief glitch instead of a huge
gap of silence. TCP, on the other hand, keeps trying to resend the lost packet
before sending anything further, causing greater delays and breakups in the audio
broadcast.
      Prior to UDP and RTSP transmission, data was sent over the Web primarily
via TCP and HTTP. TCP transmission, in contrast to UDP and RTSP transmission,
is designed to reliably transfer text documents, email, and HTML web pages over
the Internet while enforcing maximum reliability and data integrity rather than
timeliness. Since HTTP transmission is based on TCP, it is also not well-suited
for transmitting multimedia presentations that rely on time-based operation or for
large-scale broadcasting.
      Later in the chapter, you will learn why protocols are important. Some
streaming technologies such as RealAudio and Windows Media utilize dedicated
servers that support superior UDP and RTSP transmission. Other formats such as

                                          41
哈尔滨工业大学华德应用技术学院毕业设计(论文)


Shockwave, Flash, MIDI, QuickTime, and Beatnik are primarily designed to
stream from a standard HTTP web server. While these formats are cheaper and
often easier to use since they do not require the installation of a new server, they
are typically not used in professional broadcasting situations that require the
delivery of hundreds or thousands of simultaneous streams.
      MP3 has gained huge popularity as an encoding format because of its great
sound quality. For radio-style broadcasts, professionals unanimously agree that it
is the best-sounding format. MP3 is most commonly used for easily and
efficiently uploading and downloading music files to the Web. MP3 is especially
popular among downloadable music enthusiasts because it preserves audio quality
while creating file sizes that are up to 12 times smaller than uncompressed WAV
or AIFF audio files. MP3 is also quickly becoming the preferred format for
streaming music as well, even though it is more complicated than setting up a
RealMedia Server.




                                           42
哈尔滨工业大学华德应用技术学院毕业设计(论文)




附录 3

                           文件系统底层驱动函数
DSTATUS disk_initialize (BYTE drv)
{
  BYTE n, ty, ocr[4];
  if (drv) return STA_NOINIT;
  if (Stat & STA_NODISK) return Stat;
  power_on();
  send_initial_clock_train();
  SELECT();
  ty = 0;
  if (send_cmd(CMD0, 0) == 1) {
     Timer1 = 100;
     if (send_cmd(CMD8, 0x1AA) == 1) {
        for (n = 0; n < 4; n++) ocr[n] = rcvr_spi();
        if (ocr[2] == 0x01 && ocr[3] == 0xAA) {
           do {
             if (send_cmd(CMD55, 0) <= 1 && send_cmd(CMD41, 1UL << 30) ==
0)   break;
           } while (Timer1);
           if (Timer1 && send_cmd(CMD58, 0) == 0) {/
              for (n = 0; n < 4; n++) ocr[n] = rcvr_spi();
              ty = (ocr[0] & 0x40) ? 6 : 2;
           }
        }
     } else {
        ty = (send_cmd(CMD55, 0) <= 1 && send_cmd(CMD41, 0) <= 1) ? 2 : 1;
        do {
           if (ty == 2) {

                                              43
哈尔滨工业大学华德应用技术学院毕业设计(论文)


                if (send_cmd(CMD55, 0) <= 1 && send_cmd(CMD41, 0) == 0) break;
             } else {
                if (send_cmd(CMD1, 0) == 0) break;
             }
          } while (Timer1);
          if (!Timer1 || send_cmd(CMD16, 512) != 0)
             ty = 0;
      }
    }
    CardType = ty;
    DESELECT();
    rcvr_spi();
    if (ty) {
       Stat &= ~STA_NOINIT;
       set_max_speed();
    } else {
       power_off();
    }
    return Stat;
}
DRESULT disk_read (
    BYTE drv,
    BYTE *buff,
    DWORD sector,
    BYTE count
)
{
    if (drv || !count) return RES_PARERR;
    if (Stat & STA_NOINIT) return RES_NOTRDY;
    if (!(CardType & 4)) sector *= 512;
    SELECT();
    if (count == 1) {
       if ((send_cmd(CMD17, sector) == 0)

                                          44
哈尔滨工业大学华德应用技术学院毕业设计(论文)


         && rcvr_datablock(buff, 512))
         count = 0;
    }
    else {
       if (send_cmd(CMD18, sector) == 0) {
          do {
             if (!rcvr_datablock(buff, 512)) break;
             buff += 512;
          } while (--count);
          send_cmd(CMD12, 0);
       }
    }
    DESELECT();
    rcvr_spi();
    return count ? RES_ERROR : RES_OK;
}
#if _READONLY == 0
DRESULT disk_write (
   BYTE drv,
   const BYTE *buff,
   DWORD sector,
    BYTE count
)
{
    if (drv || !count) return RES_PARERR;
    if (Stat & STA_NOINIT) return RES_NOTRDY;
    if (Stat & STA_PROTECT) return RES_WRPRT;
    if (!(CardType & 4)) sector *= 512;
    SELECT();
    if (count == 1) {
       if ((send_cmd(CMD24, sector) == 0)
          && xmit_datablock(buff, 0xFE))
          count = 0;

                                               45
哈尔滨工业大学华德应用技术学院毕业设计(论文)


    }
    else {
       if (CardType & 2) {
          send_cmd(CMD55, 0); send_cmd(CMD23, count);
       }
       if (send_cmd(CMD25, sector) == 0) {
          do {
             if (!xmit_datablock(buff, 0xFC)) break;
             buff += 512;
          } while (--count);
          if (!xmit_datablock(0, 0xFD))
             count = 1;
       }
    }
    DESELECT();
    rcvr_spi();
    return count ? RES_ERROR : RES_OK;
}




                                        46

More Related Content

Viewers also liked

Viewers also liked (10)

Rani Pinchuk
Rani PinchukRani Pinchuk
Rani Pinchuk
 
The Fruitcake Special
The Fruitcake SpecialThe Fruitcake Special
The Fruitcake Special
 
Verslag congres gebiedsontwikkeling
Verslag congres gebiedsontwikkelingVerslag congres gebiedsontwikkeling
Verslag congres gebiedsontwikkeling
 
Voorstellen vip
Voorstellen vipVoorstellen vip
Voorstellen vip
 
网络收音机-答辩ppt
网络收音机-答辩ppt网络收音机-答辩ppt
网络收音机-答辩ppt
 
40piecesofadvice
40piecesofadvice40piecesofadvice
40piecesofadvice
 
Single film
Single filmSingle film
Single film
 
noticias en el aula
noticias en el aulanoticias en el aula
noticias en el aula
 
Society30
Society30Society30
Society30
 
Powerpoint confiserie
Powerpoint confiseriePowerpoint confiserie
Powerpoint confiserie
 

Similar to 网络收音机-毕业论文

Vhdl教程
Vhdl教程Vhdl教程
Vhdl教程Mac_X
 
Al32 v1 使用手册
Al32 v1 使用手册Al32 v1 使用手册
Al32 v1 使用手册ayman_hendawy
 
Tiny6410um hw-20101026
Tiny6410um hw-20101026Tiny6410um hw-20101026
Tiny6410um hw-20101026syed_sifa
 
数据中心网络架构与全球化服务-Qcon2011
数据中心网络架构与全球化服务-Qcon2011数据中心网络架构与全球化服务-Qcon2011
数据中心网络架构与全球化服务-Qcon2011Yiwei Ma
 
2009.05.Windows Media 网络直播 Howto
2009.05.Windows Media 网络直播 Howto2009.05.Windows Media 网络直播 Howto
2009.05.Windows Media 网络直播 Howtocaipenglong
 
computer organization
computer organization computer organization
computer organization zwjreg
 
Alibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconAlibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconYiwei Ma
 
防火墙产品原理介绍20080407
防火墙产品原理介绍20080407防火墙产品原理介绍20080407
防火墙产品原理介绍20080407paulqi
 
MyPBX_Standard_UserManual_tw
MyPBX_Standard_UserManual_twMyPBX_Standard_UserManual_tw
MyPBX_Standard_UserManual_twdiymyweb
 
twMVC#09 | RFID 與 NFC 在 Windows8/Windows Phone 8 開發概論
twMVC#09 | RFID 與 NFC 在 Windows8/Windows Phone 8 開發概論twMVC#09 | RFID 與 NFC 在 Windows8/Windows Phone 8 開發概論
twMVC#09 | RFID 與 NFC 在 Windows8/Windows Phone 8 開發概論twMVC
 
NFC近場通訊-twMVC#9
NFC近場通訊-twMVC#9NFC近場通訊-twMVC#9
NFC近場通訊-twMVC#9twMVC
 
Ad9850 mc145151
Ad9850 mc145151Ad9850 mc145151
Ad9850 mc145151kcarring
 
Mini6410+++º +¦ß-20101121
Mini6410+++º +¦ß-20101121Mini6410+++º +¦ß-20101121
Mini6410+++º +¦ß-20101121meru2ks
 
Mini6410+++º +¦ß-20101121
Mini6410+++º +¦ß-20101121Mini6410+++º +¦ß-20101121
Mini6410+++º +¦ß-20101121meru2ks
 
项目2-认识ARM嵌入式系统.pdf
项目2-认识ARM嵌入式系统.pdf项目2-认识ARM嵌入式系统.pdf
项目2-认识ARM嵌入式系统.pdfyangmeng22
 
TI702_Android_MID
TI702_Android_MIDTI702_Android_MID
TI702_Android_MIDguestd2ec7f
 

Similar to 网络收音机-毕业论文 (20)

Vhdl教程
Vhdl教程Vhdl教程
Vhdl教程
 
Al32 v1 使用手册
Al32 v1 使用手册Al32 v1 使用手册
Al32 v1 使用手册
 
Tiny6410um hw-20101026
Tiny6410um hw-20101026Tiny6410um hw-20101026
Tiny6410um hw-20101026
 
数据中心网络架构与全球化服务-Qcon2011
数据中心网络架构与全球化服务-Qcon2011数据中心网络架构与全球化服务-Qcon2011
数据中心网络架构与全球化服务-Qcon2011
 
2009.05.Windows Media 网络直播 Howto
2009.05.Windows Media 网络直播 Howto2009.05.Windows Media 网络直播 Howto
2009.05.Windows Media 网络直播 Howto
 
computer organization
computer organization computer organization
computer organization
 
Alibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconAlibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qcon
 
Technotrend
TechnotrendTechnotrend
Technotrend
 
02
0202
02
 
防火墙产品原理介绍20080407
防火墙产品原理介绍20080407防火墙产品原理介绍20080407
防火墙产品原理介绍20080407
 
MyPBX_Standard_UserManual_tw
MyPBX_Standard_UserManual_twMyPBX_Standard_UserManual_tw
MyPBX_Standard_UserManual_tw
 
twMVC#09 | RFID 與 NFC 在 Windows8/Windows Phone 8 開發概論
twMVC#09 | RFID 與 NFC 在 Windows8/Windows Phone 8 開發概論twMVC#09 | RFID 與 NFC 在 Windows8/Windows Phone 8 開發概論
twMVC#09 | RFID 與 NFC 在 Windows8/Windows Phone 8 開發概論
 
NFC近場通訊-twMVC#9
NFC近場通訊-twMVC#9NFC近場通訊-twMVC#9
NFC近場通訊-twMVC#9
 
Ad9850 mc145151
Ad9850 mc145151Ad9850 mc145151
Ad9850 mc145151
 
Jiuzhou
JiuzhouJiuzhou
Jiuzhou
 
Mini6410+++º +¦ß-20101121
Mini6410+++º +¦ß-20101121Mini6410+++º +¦ß-20101121
Mini6410+++º +¦ß-20101121
 
Mini6410+++º +¦ß-20101121
Mini6410+++º +¦ß-20101121Mini6410+++º +¦ß-20101121
Mini6410+++º +¦ß-20101121
 
项目2-认识ARM嵌入式系统.pdf
项目2-认识ARM嵌入式系统.pdf项目2-认识ARM嵌入式系统.pdf
项目2-认识ARM嵌入式系统.pdf
 
Technotrend
TechnotrendTechnotrend
Technotrend
 
TI702_Android_MID
TI702_Android_MIDTI702_Android_MID
TI702_Android_MID
 

网络收音机-毕业论文

  • 1. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 摘  要 随着网络技术和集成电路技术飞速发展,利用嵌入式设备进行数字处理 及传送成为可能。嵌入式设备具有体积小、功耗低、数字化、安装方便、价 格低等优点,同时嵌入式设备便于连入网络,实现远程数据交换。本文就是 利用嵌入式微控制芯片,完成一个简单的网络收音机的设计。 本课题选择基于 ARMv7 内核的 32 位芯片 LM3S8962 为主控微处理器和 基于 DSP 内核的 VS1003 芯片为 MP3 解码芯片,以此为基础搭建硬件平台, 详细阐述了硬件电路的设计,包含了主控芯片、电源管理,microSD 卡, OLED 显示、VS1003 解码芯片电路以及键盘控制电路设计,进行了相关模块 的驱动设计。最后测试了网络收音机的可行性。 关键词 网络收音机;ARM 微处理器;流媒体;RT-Thread I
  • 2. 哈尔滨工业大学华德应用技术学院毕业设计(论文) Abstract In recent years, as the development of the internet and integrate circuit technology, it is possible to process data in embedded device. The embedded device has many virtues, such as small volume, low power loss, digitization, convenient installment, low price, simultaneously the embedded equipment is easy to connect network for realization long-distance exchange data. This article introduces an Internet Radio project by embedded chip. The article chose LM3S8962 based on Kernel ARMv7 as main microprocessor and choseVS1003 based on Kernel DSP as MP3 decoder, which had been produced by VLSI. And then build hardware flat roof, particularly expatiate how to build hardware flat ,which include circuit of main chip , Power management, OLED display ,VS1003 decode and KEY control circuit design, for the relevant module driven design. Finally, test the feasibility of network radio. Keywords InternetRadio ARM microprocessor StreamingMedia RT-Thread II
  • 3. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 目 录 摘  要........................................................I Abstract.......................................................II  绪论..........................................................1 1.1 课题背景..................................................1 1.2 目的和意义................................................1 1.3 系统设计思想..............................................2 1.4 系统开发环境..............................................3 群星 LM3S8962 简介..........................................3 VS1003-MP3/WMA 音频解码器简介..............................3 实时操作系统 RT-Thread.....................................4 RealView MDK...............................................6 网络调试工具...............................................6  可行性分析及总体设计..........................................7 1.5 可行性分析................................................7 1.6 总体设计..................................................8 1.7 本章小结..................................................9  硬件设计.....................................................10 1.8 硬件设计概述..............................................10 1.9 主控芯片电路设计.........................................11 LM3S8962 控制器特点.......................................11 LM3S8962 管脚连接图.......................................12 1.10 电源电路设计............................................13 1.11 以太网模块设计..........................................14 1.12 microSD 卡模块设计......................................15 1.13 OLED 显示模块设计.......................................16 1.14 按键模块设计............................................17 1.15 VS1003 模块设计.........................................18 VS1003 最小系统部分设计...................................18 VS1003 与 LM3S8962 连接部分设计.............................19 VS1003 电源模块设计.......................................20 III
  • 4. 哈尔滨工业大学华德应用技术学院毕业设计(论文) VS1003 音频插孔设计.......................................21 1.16 本章小结................................................21  软件设计.....................................................23 1.17 文件系统................................................24 1.18 TCP/IP 协议栈...........................................25 1.19 MP3 播放模块设计........................................25 正确配置 IO...............................................26 GPIO 模拟 SPI..............................................26 1.20 SHOUTcast 服务模块设计..................................27 1.21 菜单模块设计............................................27 1.22 本章小结................................................28 第 2 章  系统测试...............................................29 2.1 LM3S8962 与电脑连接......................................29 2.2 RT-Thread 启动测试.......................................30 2.3 VS1003 模块测试..........................................31 2.4 文件系统测试.............................................32 2.4.1 目录读取测试.........................................32 2.4.2 播放 MP3 测试.........................................32 2.5 网络连接测试.............................................33 2.5.1 局域网测试...........................................33 2.5.2 因特网测试...........................................34 2.5.3 播放流媒体测试.......................................35 2.6 本章小结.................................................35 结  论.......................................................36 致  谢.......................................................37 参考文献.......................................................38 附录 1.........................................................39 附录 2.........................................................41 附录 3.........................................................43 IV
  • 5. 哈尔滨工业大学华德应用技术学院毕业设计(论文)  绪论 1.1 课题背景 时代在发展,网络已经成为人们日常生活不可或缺的工具,不管是工作, 学习,还是娱乐,都已离不开网络。网络的出现,人们的生活方式也在改变, 当然也伴随着新生物品的出现。收音机是上一辈人娱乐和获取信息的平台, 收音机作为接收广播的工具,经过漫长的发展过程,由单波段发展到多波段, 由电子管,晶体管发展到集成电路,由机械调谐发展到数字调谐功能等,其 技术和品质都有了长足的进步。如今,在收音机这个家族中新的成员也在不 断加入, 如卫星广播接收机等。当社会进入网络时代后,更是出现了网络收音 机这种跨越全球的信息接收设备。网络收音已经成为一个新的方式,网络电 台主持人也在很多高校流行。网络收音机依赖于两个因素,一是网络的发展, 二是集成电路的发展。 1.2 目的和意义 网络收音机有两种方案收听网络电台利用实时流媒体技术发布的音频节目: 软件网络收音机和硬件网络收音机。目前这种网络收音机大多是通过基于 PC 机上的软件开发来实现的其功能的,也就是说这种网络收音机克服 PC 机形式 的网络收音机的缺点,本设计研究了一种基于 ARM 的嵌入式技术的网络收音 机的设计方案。该方案以 ARM 处理器及其外围模块作为硬件平台,实现了嵌 入式网络收音机的基本功能。同时,随着网络技术的高速发展,该设计将具有 极好的市场应用前景。 到目前为止,全球的网络收音机开发主要集中在欧美,涉足的厂家有近 10 多家,但主要流派却只有 5 个,在美国有 Roku 公司和 Slimdevice 公司,在英 国有 Reciva 公司,在德国有 TerraTee 公司,在澳大利亚有 Torian 公司。这几家 都有相应的成熟产品上市。尤其是美国的 Roku 公司和英国的 Reciva 公司都有 其技术授权许可的公司推出贴牌产品,相比之下,Reciva 公司的授权公司要多 1
  • 6. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 一些。所有的公司大展身手,使得网络收音机发展显得格外令人瞩目。但遗憾 的是,在中国大陆,网络收音机的发展却显得有点谨小慎微,真正了解网络收 音机的人并不多,所以在国内很少见到网络收音机。 收音机经历了一个从可懂性向欣赏性的发展过程,最早的收音机用来传递 消息为主,而现在大多数人应该更看重收音机的欣赏功能。在现有频率资源的 限制下,要不断提高欣赏品质又要有很多的电台频道,增加网络收听这个途径 是一个很好的选择,网络收音机是从普通的收音机演变而来,但有别于普通收 音机,具体区别见表 1-1。 表 1-1 网络收音机与普通收音机区别 网络收音机 交互性 实用性 音质 网络收音机的跨地 内容种类繁多,使得 音质已经逼近 CD, 域性,不存在电波 收听者的选择性呈爆 超越了 DAB 数字广 的干扰。 炸性增长,同时还可 播,音乐类的大多是 以通过显示屏了解到 128Kbps,新闻类的 正在播出的歌曲名和 为 32Kbps。 演唱者的名字、电台 信息等,各种语言的 节目应有尽有。 普通收音机 地域性明显,中波 最常见的中短波收音 普通 FM 的音质,信 收音机传输距离不 机的频率波段 号不好时。噪音比较 远,短波传输较远, FM87.5—108 MHz。 大。 但易受干扰,受外 界环境因素影响比 较大。 1.3 系统设计思想 本设计采用 TI LM3S8962 为主控芯片,配合硬件解码芯片 VS1003 来实 现 MP3 播放以及网络流媒体播放。 1.LM3S8962 通过文件系统读取 SD 卡中存储的 MP3 文件,将文件通过 SPI 方式发送到 VS1003 进行解码播放。 2.LM3S8962 与流媒体服务器握手成功后接受网络流媒体,将流媒体信息 通过 SPI 方式发送到 VS1003 进行解码播放。 2
  • 7. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 1.4 系统开发环境 软件条件:开发工具 KEIL;串口调试以及网络调试工具等 硬件条件:电脑一台; EKK-LM3S8962 评估板; VS1003 解码模块;万 用表;焊接工具等。 群星 LM3S8962 简介 群星 LM3S8962 评估板是一个基于群星 LM3S8962 ARM ® Cortex™- M3 的微控制器紧凑型和 通用评估平台的。该评估套件的设计着重突出了 LM3S8962 微控制器的集成 CAN 和 10/100 以太网控制器的特性。为了实 现一个嵌入式 Web 服务器,开发套件提供两块包括 LM3S8962 和 LM3S2110 控制器的评估板演示一个完整( CAN )控制器功能。主板提供 CAN 控制器 为主。小设备板提供 CAN 控制器为从,用带状电缆连接。其实每个板 CAN 控制器的职责是可用软件配置。您可以使用该 EVB(评估板 )作为评估平台或 作为低成本电路调试界面( ICDI )。在调试接口方式,板上微控制器是旁路 的,允许调试信号到连接外部目标群星微控制器的(换句话说,可以作为仿 真器仿真其他群星控制器)。该套件还兼容高性能的 JTAG 调试器外部。此 评估套件,可以快速评估,原型开发,并创造对于以太网和 CAN 网络应用 程序特定的设计。该套件还包括广泛的源代码的例子,让您迅速开始建立 C 代码的应用。 VS1003-MP3/WMA 音频解码器简介 VS1003 是一个单片 MP3/WMA/MIDI 音频解码器和 ADPCM 编码器。它 包含一个高性能,自主产权的低功耗 DSP 处理器核 VS_DSP4,工作数据存储 器,为用户应用提供 5KB 的指令 RAM 和 0.5KB 的数据 RAM 。串行的控 制和数据接口, 4 个常规用途的 I/O 口,一个 UART ,也有一个高品质可变 采样率的 ADC 和立体声 DAC,还有一个耳机放大器和地线缓冲器。 VS1003 通过一个串行接口来接收输入的比特流,它可以作为一个系统的 从机。输入的比特流被解码,然后通过一个数字音量控制器到达一个 18 位 过采样多位 ε-Δ DAC 。通过串行总线控制解码器。除了基本的解码,在用户 3
  • 8. 哈尔滨工业大学华德应用技术学院毕业设计(论文) RAM 中它还可以做其他特殊应用,例如 DSP 音效处理。 VS1003 内部结构如 图 1-1 所示。 图 1-1 VS1003 内部结构 实时操作系统 RT-Thread RT-Thread RTOS 是一款来自中国的开源实时操作系统,由国内一些专业 开发人员开发、维护。它不仅仅是一款高效、稳定的实时核心,也是一套面 向嵌入式系统的软件平台,覆盖了全抢占的实时操作系统内核,小巧而与底 层具体实现无关的文件系统,轻型的 TCP/IP 协议栈以及轻型的多窗口多线程 图形用户界面。  内核对象系统 系统具备内核对象管理系统,能够访问/ 管理所有内核对象。内核对象包 含了内核中绝大部分设施,而这些内核对象可以是静态分配的静态对象,也 可以是从系统内存堆中分配的动态对象。通过内核对象系统, RT-Thread 可以 做到不依赖于具体的内存分配方式,伸缩性得到极大的加强。  任务/线程调度 4
  • 9. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 支持以线程为调度单位的多任务系统。调度算法是基于优先级的全抢占 式线程调度,支持 256 个线程优先级, 0 优先级代表最高优先级, 255 优先级 留给空闲线程使用;支持创建同优先级线程,相同优先级的线程采用可设置 时间片的轮转调度;调度器寻找下一个最高优先级就绪线程的时间是恒定的 (O(1))。系统不限制线程数量的多少,只和物理平台的具体内存相关。  同步机制 系统支持 semaphore , mutex 等线程间同步机制。 mutex 采用优先级继存 方式以防止优先级翻转。 semaphore 释放动作可安全用于中断服务例程中。同 步机制支持线程按优先级等待或按先进先出方式获取信号量或互斥锁。  通信机制 系统支持 event/fast event , mailbox , message queue 通信机制等。 event 支持多事件 " 或触发 " 及 " 与触发 " ,适合于线程等待多个事件情况。 fast event 支持事件队列,确定事件阻塞线程的时间值固定。 mailbox 中一个 mail 的长 度固定为 4 字节,效率较 messagequeu 高。通信设施中的发送动作可安全用 于中断服务例程中。通信机制支持线程按优先级等待或按先进先出方式获取。  时钟,定时器 系统默认使用时钟节拍来完成同优先级任务的时间片轮转调度;线程对 内核对象的时间敏感性是通过系统定时器来实现的,此外,定时也支持一次 定时及周期性定时。  内存管理 系统支持静态内存池管理及动态内存堆管理。从静态内存池中获取内存 块时间恒定,而当内存池空时,可把申请内存块的线程阻塞 (或立刻返回,或 等待一段时间仍未获得返回,取决于内存块申请时设置的等待时间 ),当其他 线程释内存块到内存池时,将把阻塞线程唤醒。  FinSH FinSH 是 RT-Thread 内核中的 shell 系统,通过它能够直接在 shell 中调用 系统函数,访问系统变量;接受 C 语言中大多数运算符 ( 包括指针运算符 ) 进 行简单计算;通过定义指针(函数)变量并指向某特定地址,可以完成匿名函数 调用的功能。  诊断 通过系统提供的 FinSH shell 系统,能够观测线程,信号量,互斥锁,事 件,邮箱,消息队列的运行情况,能够获得各个线程的栈使用情况。 内核对象管理器中也提供了 Hook 机制,可以用于辅助纪录 / 跟踪内核对 5
  • 10. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 象的使用情况。  可移植性 系统采用核心与 BSP 分离的方式,其中内核采用 100% 标准 C 编写,具 备优秀的可移植性,适合于多种体系结构多种编译器。抽象出的 BSP 层采用 标准 C 和汇编混合编写。 RealView MDK RealView MDK 开发工具源自德国 Keil 公司,被全球超过 10 万的嵌入式 开发工程师验证和使用,是 ARM 公司目前最新推出的针对各种嵌入式处理器 的软件开发工具。 RealView MDK 集成了业内最领先的技术,包括 µVision3 集成开发环境与 RealView 编译器。支持 ARM7 、ARM9 和最新的 Cortex-M3 核处理器,自动配置启动代码,集成 Flash 烧写模块,强大的 Simulation 设 备模拟,性能分析等功能,与 ARM 之前的工具包 ADS 等相比, RealView 编 译器的最新版本可将性能改善超过 20%。 RealView MDK 出众的价格优势和功能优势,势将成为 ARM 软件开发工 具的标准,预计一年之内,RealView MDK 将占有国内 ARM 开发工具市场的 90%以上。 网络调试工具 网络调试助手是一款能够自由配置 PC 端电脑为 TCP 服务器, TCP 客户 端的网络调试工具。在实际工程应用中,根据实际的普遍的需求而开发的网 络调试工具。支持 UDP,TCP 协议,支持单播 / 广播,集成 TCP 服务器和客户 端。支持 ASCII/Hex 发送 ,发送和接收的数据可以在 16 进制和 AscII 码之间任 意转换。可以自动发送校验位,支持多种校验格式。支持间隔发送,循环发 送,批处理发送,输入数据可以从外部文件导入。 6
  • 11. 哈尔滨工业大学华德应用技术学院毕业设计(论文)  可行性分析及总体设计 市场对网络收音机的需求有不断增加的趋势。基于市场的定位,将网络 收音机的功能做如下界定:具有强大的信息处理能力,能够适用于网上电台 的主要数据格式 ( 包括: REALPLAYG2 、 MP3 等 ) ;多种数据传输形式;高效 的网络数据接收能力,在网络带宽满足最低语音传输条件的情况下也能平稳 地播放数据,使收听效果连续,平滑;操作方便快捷,以满足大众化的需求; 支持多种上网方式,适应不同的用户群;有一定的信息存储能力,以存储各 个电台的广播资源 URL 、存储用户常用信息;环绕立体声,保证良好的音质; 收音机小巧、轻便,美观大方;价位适中。这些功能定位和市场定位是软硬 件设计的重要参考。 1.5 可行性分析 网络 收音 机主 控方 面采 用 LM3S8962 最 为主 控芯 片, LM3S8962 具有 256KB FLASH ,64KB SRAM, CAN,10/100 ETH ,10bit ADC ,PWM,价格 上 似 乎 单 个 芯 片 有 点 高 , 但 是 和 类 似 产 品 比 较 如 : STM32 系 列 的 M3 , LPC2148 相比,在存储器大小相当时再外廓 ETH 芯片的是查不多的, 最大的问题是,他用一个芯片就解决了以太网通讯问题,简单,可靠,减小 了产品的体积, 64KB 的 RAM 做一般的以太网通讯完全足够应用,这对一些 不可以外壳存储器,而且内部存储器又不是很大的产品是一次改善,是业内 非常完善的真正意义上的但芯片以太网通讯解决方案。 LM3S8962 评估板资 源主要有以太网接口, OLED 屏,大容量的片上 SRAM ,用来做网络收音机 已经完全足够。 而 MP3 解码方面,如果硬件速度足够快,完全可以用软解码来实现 MP3 解码,然后驱动 PWM 输出。但考虑软解码技术难度较高,从而改为硬件解 码。硬件解码的优点在于解码芯片完全能够独立解码 MP3 数据流,程序部分 不用考虑,只需要将 MP3 数据通过 SPI 送入解码芯片即可。硬件解码芯片考 虑选择 VLSI VS1003。VS1003 是由芬兰 VLSI 公司出品的一款单芯片的 MP3/ WMA/MIDI 音频解码和 ADPCM 编码芯片,其拥有一个高性能低功耗的 DSP 7
  • 12. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 处理器核 VS_DSP,5K 的指令 RAM,0.5K 的数据 RAM,串行的控制和数据 输入接口, 4 个通用 IO 口,一个 UART 口;同时片内带有一个可变采样率的 ADC、一个立体声 DAC 以及音频耳机放大器。 硬件条件基本具备,根据功能,可以知道网络收音机需要能够读取 SD 卡,能够获取网络数据,这就要求软件方面要实现文件系统以及 TCP/IP 协议 栈。并且,单从读取播放 MP3 的功能上考虑,还要实现线程的功能,因为读 取 MP3 和播放 MP3 要同时进行,这就要考虑到一直一款什么样的实时操作 系统, uC/OS-II 是当初考虑的一个操作系统,但是考虑到 Cortex 是比较新的 架构,uC/OS 并没有相关移植,而且相关的文件系统和 TCP/IP 协议栈还要移 植,并没有太多的时间用来研究操作系统的移植,所以要找一款现在能够直 接在 LM3S8962 评估板上运行的操作系统。 LM3S8962 自带的例程里面有一 款 freeRTOS ,由于接触少而且并没有带文件系统,所以放弃。在网上搜集了 一下资料。最终选择了国人近些年开发的一款实时操作系统 RT-Thread。经过 分析,RT-Thread 目前发布的版本完全符合我的需求,既满足了系统的实时性, 有本身带有文件系统 FatFS 以及 LwIP 协议栈。而且现在网上已经有一批人在 用 RT-Thread 做项目,例程也比较多。 基于以上分析,用 LM3S8962 和 VS1003 完全可以实现网络收音机的设 计。 1.6 总体设计 基于市场的定位,本人将网络收音机的功能做如下界定:  具有强大的信息处理能力;  能够适用于网上电台的主要数据格式,例如 MP3 等;  网络数据接收能力;  操作方便快捷;  有一定的信息存储能力,以存储各个电台的广播资源 URL 、存储用 户常用信息;  环绕立体声,保证良好的音质; 在以上功能基本实现的基础上,本人还想增加支持多种上网方式,适应 不同的用户群。 基于以上功能,将网络收音机硬件部分分为主控模块, microSD 卡模块, 8
  • 13. 哈尔滨工业大学华德应用技术学院毕业设计(论文) OLED 模块,按键模块,通过 SPI 与 VS1003 模块通信。 MP3 音频信息通过 VS1003 解码后输出到用户。 总体设计框图如图 2-1 所示。 VS1003 音频解码 用户   按键     Internet   microSD Ethernet LM3S8962   OLED PHY   MCU   显示 LM3S8962 评估板 图 2-1 总体设计框图 1.7 本章小结 本章主要阐述了对网络收音机从硬件上以及软件上实现功能的可行性分 析,硬件上选择有先天优势的 LM3S8962 评估板作为主控,并且这款评估板 已经自带了 OLED 显示,按键,以及最重要的网络模块。配合硬件解码芯片 VS1003 。只需要将从 microSD 卡读出的 MP3 数据通过 SPI 传送到 VS1003 就 可以实现 MP3 解码。软件方面选择了国人开发的 RT-Thread ,其优秀的实时 性,以及本身自带的文件系统和 TCP/IP 协议栈使得在移植上的工作量大大减 少。 9
  • 14. 哈尔滨工业大学华德应用技术学院毕业设计(论文)  硬件设计 1.8 硬件设计概述 硬件电路的总体设计是根据系统的总体功能,将各硬件功能模块整合在 一个电路板子上,根据各个模块之间的关系设计连接线路。 网络收音机硬件与其他嵌入式系统硬件系统设计大同小异,主要就是选 配各种接口控制芯片,确定存储空间分配。此硬件系统是基于 LM3S8962 评 估板,作为 LM3S8962 的一个应用而设计的。 本系统一共分为 microSD 卡文件管理、网络接口、音频解码、 OLED 显示 和键盘输入五大模块,每个模块之间虽然在表面上是相互独立的,但是在对数 据库的访问上是紧密相连的。硬件框图如图 3-1 所示。 10
  • 15. 哈尔滨工业大学华德应用技术学院毕业设计(论文) OLED Ethernet PHY 显示 按键模块 microSD 卡 电源管理 VS1003 LM3S8962 5V , 3.3V , 2.8 MCU 解码芯片 音频输出 图 3-1 硬件框图 LM3S8962 主要负责全局控制, microSD 卡模块负责存储 MP3 文件,网络 接口负责网络信息的接受与发送,音频解码部分采用的是 VS1003 解码芯片, 主要负责解码由 SPI 送过来的音频数据,OLED 显示以及键盘输入模块负责人 机交互。 1.9 主控芯片电路设计 LM3S8962 控制器特点 32 位 RISC 性能的 ARM ® Cortex™使用- M3 的 v7M 架构  50 MHz 运行  硬件处和单周期乘法  内存保护单元( MPU ),提供了一个受保护的操作系统特权模式功 能  集成的嵌套向量中断控制器(NVIC)  42 个中断通道,每个通道 8 个优先级的  256 KB 的单周期闪存  64 KB 的单周期 SRAM  4 个通用 32 位定时器 11
  • 16. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 集成以太网 MAC 和 PHY 控制器区域网络(CAN)模块 三个完全可编程的 16C550 型 UART 接口 4 个 10 位 ADC 通道(输入)时为单端输入使用 一个集成模拟比较器 一个 I2C 模块 两个 PWM 发生器模块  1 个 16 位计数器  两个比较  产生两个独立的 PWM 信号 LM3S8962 管脚连接图 LM3S8962 芯片复位电路以及晶振连接电路如图 3-2 所示。 12
  • 17. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 图 3-2 管脚连接图 1.10 电源电路设计 该 LM3S8962 供 电 是 +3.3 V 电 源 。 一 个 低 压 降 ( LDO ) 电 源 芯 片 LP8345ILD-3.3 把从 USB 电缆上的+5 V 转换为 3.3 V 的。 3.3 -V 电源可用于 驱动外部电路。+5 V 转+3.3 V 电源转换模块如图 3-3 所示。 13
  • 18. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 图 3-3 LP8345ILD-3.3 电源转换模块 +15 V 通道电源可用使 OLED 显示电源处于活动状态。扬声器和 OLED 显示器升压转换器操作需要+5- V 通道。如图 3-4 所示。 图 3-4 OLED 供电模块 1.11 以太网模块设计 LM3S8962 微控制器的一个主要特点是其完全集成的以太网控制器。只需 要一个采用磁集成技术的 RJ45 和少数无源元件就可以完成一个 10/100M 以太 网接口。 RJ45 插孔集成发光二极管,指示交通和连接状态。这些都是自动被 片上微控制器硬件管理的。另外,发光二极管可软件控制由配置为通用输出的 引脚。该 LM3S8962 支持自动 MDI /的 MDI - X 的,以便该评估板可以直接连 接到网络或另一种无需交叉电缆以太网设备。如图 3-5 所示。 14
  • 19. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 图 3-5 以太网模块 1.12 microSD 卡模块设计 可移动存储卡是存储网页内容等数据的理想介质。光盘上的源代码包括从 标准 FAT 格式的 SD 上读数据。使用 SD 卡的 SPI 接口进行读写控制。但是 SD 卡规范不需要 SD 卡支持 SPI 模式,但实际上大多数厂家仍然支持。来 自多家 SD 卡厂商的 SD 卡已经用于 EVB 上。MicroSD 卡是非常小,需要慎 重处理。关于 EVB 的 SD 卡插槽 1 按压式(推插入,再次推到退出)。注意: 为避免损坏,插入或取出之前请关掉 SD 卡电源。 由于 LM3S8962 只有一个 SPI 接口所以, microSD 和 OLED 只能通过片选 来复用 SPI,microSD 卡引脚分配如表 3-1 所示: 表 3-1 microSD 模块引脚分配 引脚 功能 PG0 microSD 卡片选 PA4/SSI0RX microSD 卡数据输出 PA5/SSI0TX microSD 卡数据输入 PA2/SSI0CLK 时钟 15
  • 20. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 引脚电路连接如图 3-6 所示。 图 3-6 microSD 卡模块 1.13 OLED 显示模块设计 显 示 部 分 为 一 块 128X98 像 素 4 位 灰 度 的 OLED 图 像 显 示 屏 。 这 个 OLED 内部自动控制 IC,该 IC 支持同步串行接口(SSI)和并行接口。SSI 接口 用在 EVB 上, 仅需少数 LM3S8962 管脚, 不能从 OLED 控制器读数据, 因为仅需一条数据线。SSI 接口和迷你 SD 卡槽共享数据线。 15V 电源需要给 OLED 偏置, FAN5331 和几个外部元件一起完成高压转 换。PA7 用来控制控制器上电顺序。OLED 工作时,15V 电源不能为其他器件 供电。 由于 LM3S8962 只有一个 SPI 接口所以, microSD 和 OLED 只能通过片选 来复用 SPI,OLED 引脚分配如表 3-2 所示: 表 3-2 OLED 引脚分配 引脚 功能 PA3 片选 PA5/SSI0TX OLED 数据输入 PA2/SSI0CLK 时钟 PA6/CCP1 OLED 显示数据/控制选择 16
  • 21. 哈尔滨工业大学华德应用技术学院毕业设计(论文) OLED 显示模块电路连接如图 3-7 所示。 图 3-7 OLED 显示模块 1.14 按键模块设计 一共设计了 5 个通用输入的按钮开关, 4 个是按照导航风格配置的,第 5 个是选择开关。 按键模块引脚分配如表 3-3 所示。 表 3-3 按键模块引脚分配 引脚 功能 PF1 按键“选择” PE0 按键“上” PE2 按键“左” PE3 按键“右” PE1 按键“下” 按键模块电路连接如图 3-8 所示。 17
  • 22. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 图 3-8 按键模块 1.15 VS1003 模块设计 VS1003 最小系统部分设计 VS1003 最大的采样率 XTAL1/256,决定了能以正确的速度播放的音频采样 率。因此,为了能播放 48KHz 采样率的音频,XTAL1 至少为 12.288MHz 才能 获得正确的播放速度。如图 3-9 所示。 18
  • 23. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 图 3-9 VS1003 最小系统 VS1003 与 LM3S8962 连接部分设计 VS1003 模块通过 SPI 与 LM3S8962 连接。 VS1003 与 LM3S8962 连接部分 引脚如表 3-4 所示。 表 3-4 VS1003 与 LM3S8962 连接部分引脚 引脚 功能 PC4 复位 PC5 数据请求 PC6 控制使能 PC7 数据使能 PD4 CLK PD6 SO 19
  • 24. 哈尔滨工业大学华德应用技术学院毕业设计(论文) PD7 SI VS1003 与 LM3S8962 连接部分引脚电路图如图 3-10 所示。 图 3-10 VS1003 与 LM3S8962 连接部分引脚电路图 VS1003 电源模块设计 根据 VS1003 数据手册得知参数容许最大范围如表 3-5 所示。 表 3-5 参数容许最大范围 参数 符号 最小 最大 单位 模拟正电源 AVDD -0.3 3.6 V 数字正电源 CVDD -0.3 2.7 V I/O 正电源 IOVDD -0.3 3.6 V 所有数字口输出电流 ±50 mA 所有数字口输入电压 -0.3 IOVDD+0.3 V 操作温度 -40 85 ℃ 存储温度 -60 150 ℃ 依据参考范围,模拟正电源最最大值为 3.6,采用 AMS1117-3.3 进行电压 转换。如图 3-11 所示。 20
  • 25. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 图 3-11 AMS1117-3.3 电压转换模块 依据参考范围,数字正电源最最大值为 2.7,采用 AMS1117-2.5 进行电压 转换。如图 3-12 所示。 图 3-12 AMS1117-2.5 电压转换模块 VS1003 音频插孔设计 地缓冲器 GBUF 可以用做耳机的公共电压(1.24V),直接从 VS1003 连接 至耳机连接器。如图 3-13 所示。 图 3-13 音频插孔连接图 1.16 本章小结 本章主要描述了网络收音机硬件功能实现的整体设计思路,主要利用了 LM3S8962 作为主控芯片,描述了各自的主要特性,给出了基本的系统框架, 并在此基础之上,阐述了电源模块,以太网模块, microSD 卡模块,OLED 显 21
  • 27. 哈尔滨工业大学华德应用技术学院毕业设计(论文)  软件设计 嵌入式系统软件设计的语言,可用汇编语言也可以用 C 语言来编写,但汇 编语言相对于 C 来讲比较复杂,维护比较繁琐,而 C 语言简洁,设计比较容易。 利用 KeilC 作为软件开发的平台,主要完成主控芯片与解码芯片之间的数据传 输,以及解码芯片的解码过程,网络收音机的播放流程的软件设计过程。主要 软件流程图如图 4-1 所示。 开始 系统初始化 文件系统系统初始化 LwIP 初始化 菜单结构初始化 失败 MP3 流媒体 读取 MP3 文件 选择功能 连接流媒体 成功 读取流媒体资源 VS1003 解码 结束 23
  • 28. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 图 4-1 软件流程图 1.17 文件系统 为了读取 microSD 卡上 MP3 文件,必须要有文件系统。RT-Thread 的文件 系统采用了三层的结构,如图 4-2 所示。 图 4-2 RT-Thread 文件系统 RT-Thread 采用的是日本开源的 ELM Chan’s FatFS 文件系统,这个文件系 统结构清晰,移植也比较方便。下载下来的 FatFs 有两个文件夹,一个是 doc ,FatFs 的说明,包括特性,系统函数,以及可能的一些问题,另一个就是源 代码文件夹 src 了,总共 8 个文件,diskio.c 和 diskio.h 是硬件层, ff.c 和 ff.h 是 FatFs 的文件系统层和文件系统的 API 层,integer.h 是文件系统所用到的数据类 型的定义, tff.c 和 tff.h 是 Tiny 的文件系统层和文件系统的 API 层,还有一个 00readme.txt 简要的介绍了 FatFSHE FatFs/Tiny,包括他们所支持的 API,怎么 配置等等。 移植的问题,第一个是数据类型,在 integer.h 里面去定义好数据的类型。 第二个,就是配置,打开 ff.h(我用的 FatFs,不是 Tiny),_MCU_ENDIAN, 选择你的 CPU 是大端存储( big endding )还是小端存储( little endding ),一 般的都用的小端存储,1 是小端,2 是大端。这个相当重要,这里选择小端存 储。 第三件事情,就是写底层的驱动函数(详见附录 2),包括:  disk_initialize - Initialize disk drive  disk_status - Get disk status 24
  • 29. 哈尔滨工业大学华德应用技术学院毕业设计(论文)  disk_read - Read sector(s)  disk_write - Write sector(s)  disk_ioctl - Control device dependent features  get_fattime - Get current time 1.18 TCP/IP 协议栈 要想实现网络通信, TCP/IP 协议栈是必须的。RT-Thread 本身已经移植好 LwIP,程序只需要实现 LwIP 的功能就行了。 LwIP 是 瑞 士 计 算 机 科 学 院 ( Swedish Institute of Computer Science ) 的 Adam Dunkels 等开 发的 一 套 用于 嵌入 式系 统的 开放 源 代 码 TCP/IP 协 议栈 。 Lwip 既可以移植到操作系统上,又可以在无操作系统的情况下独立运行。 LwIP 的特性如下:  支持多网络接口下的 IP 转发  支持 ICMP 协议  包括实验性扩展的的 UDP(用户数据报协议)  包括阻塞控制, RTT 估算和快速恢复和快速转发的 TCP(传输控制协 议)  提供专门的内部回调接口(Raw API)用于提高应用程序性能  可选择的 Berkeley 接口 API(多线程情况下)  在最新的版本中支持 ppp  新版本中增加了的 IP fragment 的支持.  支持 DHCP 协议,动态分配 IP 地址. 1.19 MP3 播放模块设计 MP3 是经过编码的一种音频数据格式,要想播放 MP3 格式的文件必须进 行解码。而解码方式又有两种,一种是利用高速的的 CPU 将读取到的 MP3 流 进行解码后通过 PWM 播放出来;一种是利用硬件解码, CPU 将读取到的 MP3 文件流送入到解码芯片,解码芯片经过解码之后将音频信息输出出来。本设计 采用的是硬件解码方式,选用的是 VLSI 公司的 VS1003 解码芯片, 25
  • 30. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 正确配置 IO VS1003 常规使用 SPI 接口接收主控设备控制和数据传输。此外通常还另 外需要 4 跟 GPIO 控制,分别是: 控制使能、数据使能、复位以及数据请求。 这里分别选用 PC4 、 PC5 、 PC6 、 PC7 为复位,数据请求,控制使能,数 据使能。选用 PD4、PD6、PD7 为 GPIO 模拟的 CLK,MISO,MOSI。 GPIO 模拟 SPI 所有对 VS1003 的操作将通过 SPI 总线来完成。但是 LM3S8962 只有一组 SPI 总线,并且已经用在 microSD 卡和 OLED 显示上。所以,对于 VS1003 选 择 GPIO 模拟 SPI 会更方便。 在默认情况下,数据位将在 SCLK 的上升沿有效(被读入 VS1003 ),因 此需要在 SCLK 的下降沿更新数据;并且字节发送以 MSB 在先。 VS1003 的 SPI 总线的输入时钟最大值为 CLKI / 6 MHz,其中 CLKI(内部时钟)= XTALI × 倍频值。 void SPIPutData(unsigned char ucData) { unsigned char i = 0; for(i = 0; i < 8; i ++) { GPIOPinWrite(GPIO_PORTD_BASE, SoftSSICLK, 0); if(ucData & 0x80) GPIOPinWrite(GPIO_PORTD_BASE, SoftSSITx, SoftSSITx); else  GPIOPinWrite(GPIO_PORTD_BASE, SoftSSITx, 0); Delay(1); GPIOPinWrite(GPIO_PORTD_BASE, SoftSSICLK, SoftSSICLK); Delay(1); ucData = ucData << 1; } GPIOPinWrite(GPIO_PORTD_BASE, SoftSSICLK, 0); } 26
  • 31. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 1.20 SHOUTcast 服务模块设计 通过 LM3S8962 芯片的以太网接口将他连接到外网上,配合 TCP/IP 软件 协议栈(根据需要裁剪)连接到网络上的音频播放服务器接受其音频数据,对 接收到的音频数据进行分析,把音频信息通过 OLED 显示出来,将音频的编码 数据送到解码器解码,并且通过耳机播出。 要连接到 SHOUTcast 服务器就要先向服务器发送 SYN 握手信息,等收到 服务器的 ACK 后才能确保连接成功建立。如图 4-3 所示。 图 4-3 TCP 连接建立过程 收到服务器的确认信息后,连接建立,服务端就会向客户端发送 MP3 元 数据以及流媒体数据。通过 recv(sock, recv_data, 1024, 0);来接收这些数据。将 接收的数据保存在 recv_data 后,将 recv_data 通过 SPI 发送到 VS1003,通过解 码后便可以听到 MP3 了。 1.21 菜单模块设计 网络收音机通过菜单实现人机交互。菜单的主要功能就是让用户选择各个 功能。由于本设计中菜单项目个数不确定,而且菜单还要对应指向相应函数, 所以考虑建立一个结构体。 struct MenuItem { 27
  • 32. 哈尔滨工业大学华德应用技术学院毕业设计(论文) short MenuCount; char *DisplayString; void (*Subs)(); struct MenuItem *ChildrenMenus; struct MenuItem *ParentMenus; }; 要定义一个菜单,需要做以下几步工作  定义一个结构体数组;  如果这个菜单是子菜单,那么把上级菜单的 ChildrenMenus 指针指向 该数组的首地址,并且设置 ParentMenus 为上层目录的地址;  如果这个菜单是跟菜单,那么直接将 MenuPoint 指针指向该数组的首 地址;  通过写一个函数为该数组的每一个元素初始化;  如果菜单项是最终选项,那么将 ChildrenMenus 置为 NULL,将函数指 针 Subs 指向实现功能的函数。 1.22 本章小结 本章主要阐述了网络收音机底端软件设计,主要从 LM3S8962 与解码芯片 VS1003 之间的数据通信、 MP3 文件读取、 SHOUTcast 服务器连接等方面阐述 了软件实现过程。软件设计过程中,主要利用 C 语言来编写程序, ARM 系列 的单片机软件设计可以用汇编语言进行设计,但汇编语言相对于 C 来讲,语言 比较复杂,维护比较繁琐,而 C 语言简洁,设计比较容易。 28
  • 33. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 第2章 系统测试 2.1 LM3S8962 与电脑连接 FT2232 芯片实现 USB 转串口功能。 FT2232 实现两个功能: A 通道上实 现 JTAG/SWD 端口功能;B 通道上实现虚拟串口功能。这个特点使得在计算机 和 EVB 间使用一个 USB 电缆实现两个通讯连接。安装后评估板的驱动,在 系统设备管理里面会发现虚拟串口,如图 5-1 所示。 图 5-1 虚拟串口 对 LM3S8962 的调试主要都通过串口通信进行,所以要进行串口的设置。 打开串口调试助手,会在右面看到设置选项,根据 RT-Thread 中串口的配置来 设置这里的选项。如图 5-2 所示。 29
  • 34. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 图 5-2 串口调试助手界面 这里将串口号设置为 COM5,波特率设置为 115200,校验位无,数据位 8 位,停止位 1 位。 2.2 RT-Thread 启动测试 将评估板连接到电脑,配置好串口调试助手, RT-Thread 内核编译好后, 可以用通过 Keil 下载到评估板。下载完成后,按 Reset 键,便可以在串口调试 助手中看到 RT-Thread 的启动界面: |/ - RT - Thread Operating System / | 0.3.1 build Nov 27 2010 2006 - 2009 Copyright by rt-thread team finsh>>File System initialized! TCP/IP initialized! 30
  • 35. 哈尔滨工业大学华德应用技术学院毕业设计(论文) vs1003_init 在终端中发送“list()”,串口助手中便会显示当前 RT-Thread 所支持的指令 说明 RT-Thread 正常启动。 2.3 VS1003 模块测试 首先将 VS1003 模块与 LM3S8962 正常连接。 PC4、PC5、PC6、PC7 分别 连接复位、数据请求、控制使能、数据使能。 PD4 、 PD6 、 PD7 分别连接 CLK、SO、SI。 VS1003 的 SPI 总线用来传送 MP3 数据和控制命令。当要传送 MP3 数据时 xDCS 须置为低电平,而 xCS 置 1 。此时 SPI 总线称作 SDI (串行数据接口)。 VS1003 拥有以下几种测试模式:存储器测试、SCI 总线测试和正弦测试。所有 的这些测试都有相同的步骤:硬件复位,置位模式寄存器 SPI_MODE 的 bit5: SM_TESTS,发送测试命令到 SDI 总线上。测试命令总共包含 8 个字节的数据, 前 4 个字节为命令代码,后四个字节为 0。正弦测试属于芯片内部的测试功能, 如果写 SDI 总线无误的话可以从耳机里听到单一频率的正弦音(可以通过命令 更改频率),强烈建议大家对此项步骤测试时不要将耳塞直接塞入耳中,因为 系统不同可能导致声音大小会不同,有可能极其刺耳。正弦测试步骤如下:  进入 VS1003 的测试模式:SPI_MODE = 0x0820;  等待 DREQ 为高;  xDCS 拉低(xCS 置 1),选择 vs1003 的数据接口;  向 VS1003 发送正弦测试命令: 0x53 0xEF 0x6E 0x30 0x00 0x00 0x00 0x00;  延时 500ms;  退 出 正 弦 测 试 , 发 送 命 令 : 0x45 0x78 0x69 0x74 0x00 0x00 0x00 0x00;  延时 500ms;  循环。 31
  • 36. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 2.4 文件系统测试 2.4.1 目录读取测试 正常启动 RT-Thread 后,会在串口调试助手中看到提示信息“ File System initialized!”,说明文件系统初始化完成。向串口发送“ ls("/")”,可以看到当前 microSD 中的目录结构。输入“ ls("/MP3")”,可以看到预存在 microSD 卡中的 MP3 文件,如图 5-3 所示。 图 5-3 读取 MP3 目录 2.4.2 播放 MP3 测试 由于 VS1003 有 32Byte 的数据缓冲区,一次可以发 32 个字节的数据,然 后 检 测 DREQ , 当 DREQ 为 高 时 送 下 一 个 32Byte 的 数 据 , 直 到 发 完 为 止 。 DREQ 为高表明 VS1003 可以接受新的数据,如果不考虑 DREQ 的话直接连续 32
  • 37. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 的给 VS1003 发的 mp3 数据的话将会出现音乐断断续续的情况。 Mp3SelectData(); //VS1003 数据选择 fd = open("/mp3/64.mp3",O_RDONLY,0); while(read(fd, buf, sizeof(buf))) //判断是否读取到文件尾 { for(i = 0; i < 512; i = i + 1) { while(VS_DREQ_READ() == 0); //等待 DREQ 为高 SPIPutData(buf[i]); //发送 buf 中的 MP3 数据 } } Mp3DeselectData(); //VS1003 数据禁止 2.5 网络连接测试 2.5.1 局域网测试 要将 LM3S8962 连接到局域网,首先要设置 LM3S8962 的网络配置。在串 口助手中输入“list_if ()”显示当前配置为: ip address: 192.168.81.1 gw address: 192.168.81.250 net mask : 255.255.255.0 dns server : 208.67.222.222 如果将 LM3S8962 与电脑连接,还需要将电脑配置成评估板的网关。 配置好后,在电脑端打开命令提示符,输入“ ping 192.168.81.1” ,如果 数据包全部接收到,则说明 LM3S8962 已经与 PC 端正常连接。然后打开“网 络调试助手”,在“通讯设置”中将协议类型选为“ TCP 服务器”, IP 地址 填写刚才配置的地址“ 192.168.81.2” ,本地端口填写一个当前没有被占用的 端口,这里填写“ 8080” ,点击连接, PC 端就会被配置成 TCP 服务器,监听 来 自 8080 端 口 的 请 求 。 此 时 , 在 串 口 助 手 中 输 入 “ tcpclient(“192.168.81.2”,8080)”,LM3S8962 的客户端程序就会和 PC 端 TCP 服务器建立 TCP 连接。此时,在网络调试助手中发送文本信息, LM3S8962 33
  • 38. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 的串口端就会接收到服务端发送的文本信息。 2.5.2 因特网测试 因特网的连接和局域网的连接类似,只不过连接的服务器是远程 SHOUTcast 服务器,建立 SHOUTcast 服务器连接首先要知道服务器的握手信息。 建立一个字符数组用来存储要发送到 SHOUTcast 服务器的信息。 static char send_data[] = { "GET "RADIO_URL" HTTP/1.0rn" "Host: "RADIO_IPADDR"rn" "User-Agent: WebRadio/0.01rn" "Accept: */*rn" "Icy-MetaData:1rn" "Connection: Keep-Alivern" "rn" }; 通过 send(sock,send_data,strlen(send_data), 0) 函数将 send_data 发送到服务 器端,如果服务器连接成功,将收到以下信息,如图 5-4 所示。 图 5-4 SHOUTcast 服务器返回信息 34
  • 39. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 2.5.3 播放流媒体测试 和 SHOUTcast 服务器建立连接后,就会收到流媒体信息以及元数据,用 recv(sock, recv_data, 1024, 0) 函数将接收到的数据存入 recv_data,并且将 recv() 的返回值存入 bytes_received 用以记录接收到的字节数。然后将 recv_data 通过 SPI 传送到 VS1003 进行解码。 void PlayMp3Stream(char *mp3buf, int bytes_received) { unsigned int i; Mp3SelectData(); //VS1003 数据选择 for(i = 0; i < bytes_received; i++) { while(VS_DREQ_READ() == 0); //等待 DREQ 为高 SPIPutData(mp3buf[i]); //发送 mp3buf 中的数据 } Mp3DeselectData(); //VS1003 数据禁止 } 2.6 本章小结 本章主要详细设计了网络收音机的测试环境,对网络收音机所用到的 RTOS,读取 MP3 文件,局域网连接和因特网连接,播放 MP3 文件以及播放流 媒体数据做了详细的测试。测试结果与预计结果基本一致。 35
  • 40. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 结  论 本设计以 32 位 Cortex-M3 LM3S8962 为核心,完成了一个简单网络收音机 的设计。分别从硬件与软件的角度阐述了整个设计的过程。硬件设计主要阐述 了网络收音机所用到的 LM3S8962 评估板中电源管理,以太网模块, microSD 卡模块,OLED 显示模块,按键模块的功能以及相关的电路连接图。所用到的 解码模块为 ICDev 网站开发的 VS1003 解码模块。软件设计中主要学习了 Keil C 的开发环境,利用 C 语言开发了 OLED 显示以及键盘控制。在驱动 VS1003 的时候,按照网上的驱动并不能让 VS1003 正常工作,我只有按照数据手册一 步一步的重写驱动部分,这期间虽然碰到的问题多,但学到的东西也多。做网 络连接部分期间了解了 TCP/IP 协议栈的一些相关知识,以及 Winamp 播放软件 的一些知识,初步了解了 SHOUTcast 网络电台服务器的知识,同时还对流媒体 技术做了浅入的了解。在测试环节中,对于系统的整体测试过程以及测试的结 果也做了比较详细的说明,以实际的数据证明了所设计的网络收音机的可行性。 现在所设计的网络收音机只是一个初步的设计方案,设计中存在不成熟的 地方,有待进一步改进。因为 microSD 卡和 OLED 使用的是同一个 SPI,所以 在 SPI 的复用方面做的还不是很好,按键就会死机。在收听效果方面,播放本 地 64K 比特率的 MP3 还能流畅播放,但是再高比特率的 MP3 就会断断续续的, 播放网络流媒体也是断断续续,这和网络速度也有一定的关系。可以考虑增加 线程或者通过优化协议,利用流媒体的相关技术使网络收音机能达到一个更好 的收听效果。在网络接入方式上,也可以增加多种方式,例如通过 3G 技术或 者 WIFI,并且使其可以实现图像的无线传输,以达到便携化目的。 36
  • 41. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 致  谢 经过三个多月的努力,终于完成了网络收音机的大致功能。在从自己设计 的收音机里听到 MP3 的那一刹那,最能形容的词就是幸福。 感谢熊谱翔老师,他设计的 RT-Thread 是国内做好的 RTOS。 感谢邱祎,在调试 RT-Thread 方面给了我很大的帮助,特别是在最关键的 时刻将 RT-Thread 0.4.0 LM3S 分支升级完毕。 还要感谢我的导师,他的严格要求,无微不至的关怀,使我受益匪浅。在 他的帮助下,我实现了用 GPIO 模拟 SPI,完成了 VS1003 最重要的通信问题。 更要感谢广大网友,没有他们的帮助与激励,我是不可能在这三个月中完 成网络收音机的设计的。 还要感谢同我一起学习的同学们,论文的完成离不开你们的关心和帮助, 非常感谢你们,愿同窗之间友谊长存。 37
  • 42. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 参考文献 1 周立功.ARM 微控制器基础与实践.北京航空航天大学出版社.2003 2 周立功.ARM 嵌入式系统基础教程.第二版.北京航空航天大学出版社. 2008 3 黄志伟.全国大学生电子设计大赛技能训练.北京航空航天大学出版社. 2007 4 博创科技.MP3 播放器与 U 盘设计.清华大学出版社.2004 5 冯博琴,陈文革.计算机网络.第二版.高等教育出版社.2008 6 何嘉斌,陈适.嵌入式 Internet 技术应用.单片机与嵌入式系统应用杂志 社.2002.3 7 沙剑胜.基于 FS8610 网络收音机的设计与实现.贵州大学硕士论文. 2008 8 袁海林.基于 ARM 的嵌入式网络收音机的设计.微计算机信息(嵌入式与 SOC).2007.2 9 江小玲.嵌入式系统设计 Flash 存储器的应用.科技创新导报.2007.3 10 卓碧华,唐英,李淤.基于 ARM 内核的网络收音机的设计与实现.西南 民族大学学报自然科学版.2007.4 11 陈兵 沈学馗.SOCKET 通信平台的设计与实现.小型微型计算机系统. 1996.6 12 topsun.驱动你的 VS1003.ICDev 开发网.2006 13 周立功.Stellaris 外设驱动库.http://www.zlgmcu.com 14 RT-Thread 工作室.RT-Thread 实时操作系统编程指南.http://www.rt- thread.org 15 Chan.FatFs Generic FAT File System Module.http://elm- chan.org/fsw/ff/00index_e.html 16 Ebook.TCP/IP Networking: Internet Radio Using OLED Display and MP3 Audio Decoder.Microchip Technology.2008 17 Ebook.Stellaris® LM3S8962 Evaluation Board USER’S MANUAL.TI.2009 18 Josh Beggs ,Dylan Thede.Designing Web Audio.O'Reilly Media.2001 38
  • 43. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 附录 1 流媒体技术简介 互联网流媒体改变了网站,正如我们所知道的,它把网站从静态文本和图 形转变为基于声音和动画的多媒体网站。现在流媒体已纳入所有其他媒体,包 括电视、 广播电视电影。流媒体实际指的是一种新的媒体传送方式,而非一 种新的媒体。流媒体技术全面应用后,人们在网上聊天可直接语音输入;如果 想彼此看见对方的容貌、表情,只要双方各有一个摄像头就可以了;在网上看 到感兴趣的商品,点击以后,讲解员和商品的影像就会跳出来;更有真实感的 影像新闻也会出现。 流媒体技术发端于美国。在美国目前流媒体的应用已很普遍,比如惠普公 司的产品发布和销售人员培训都用网络视频进行。 流式传输方式则是将整个 A/V 及 3D 等多媒体文件经过特殊的压缩方式分 成一个个压缩包,由视频服务器向用户计算机连续、实时传送。在采用流式传 输方式的系统中,用户不必像采用下载方式那样等到整个文件全部下载完毕, 而是只需经过几秒或几十秒的启动延时即可在用户的计算机上利用解压设备 (硬件或软件)对压缩的 A/V、3D 等多媒体文件解压后进行播放和观看。此时多 媒体文件的剩余部分将在后台的服务器内继续下载。 最大的突破是使用一个新的互联网协议和新的编码称为用户数据报协议 (UDP),压缩成数据包非常小的音频文件的技术。流媒体的传输需要合适的 传输协议,目前在 internet 上的文件传输大部分都是建立在 tcp 协议的基础上, 也有一些是以 ftp 传输协议的方式进行传输,但采用这些传输协议都不能实现 实时方式的传输。随着流媒体技术的深入研究,目前比较成熟的流媒体传输一 般都是采用建立在 udp 协议上的 rtp/rtsp 实时传输协议。 为何要在 udp 协议而不在 tcp 协议上进行实时数据的传输呢?这是因为 udp 和 tcp 协议在实现数据传输时的可靠性有很大的区别。 tcp 协议中包含了专门的 数据传送校验机制,当数据接受方收到数据后,将自动向发送方发出确认信息 , 发送方在接收到确认信息后才继续传送数据,否则将一直处于等待状态。而 udp 协议则不同,udp 协议本身并不能做任何校验。由此可以看出, tcp 协议注 重传输质量,而 udp 协议则注重传输速度.因此,对于对传输质量要求不是很 39
  • 44. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 高,而对传输速度则有很高的要求的视音频流媒体文件来说,采用 udp 协议则 更合适。MP3 已经获得了作为一个伟大的,因为它的音质的编码格式巨大的人 气。 用于无线电广播节目的风格,专业人士一致认为这是最好的冠冕堂皇的 格式。 MP3 是最常用的方便,高效地上传和下载音乐文件到网站。 在下载的 MP3 是音乐爱好者,尤其是受欢迎,因为它保留了音频质量的同时,建立档案 大小最大为小于未压缩的 WAV 或 AIFF 音频文件的 12 倍。 MP3 是也迅速成为 流媒体音乐,以及首选格式,尽管它比建立一个复杂的 RealMedia 服务器。 40
  • 45. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 附录 2 Introduction to Streaming Media Internet streaming media changed the Web as we knew it-- changed it from a static text- and graphics-based medium into a multimedia experience populated by sound and moving pictures. Now streaming media is poised to become the de facto global media broadcasting and distribution standard, incorporating all other media, including television, radio, and film. The low cost, convenience, worldwide reach, and technical simplicity of using one global communications standard makes web broadcasting irresistible to media publishers, broadcasters, corporations, and individuals. Businesses and individuals once denied access to such powerful means of communication are now using the Web to connect with people all over the world. UDP and RTSP are ideal for audio broadcasting since they place a high priority on continuous streaming rather than on absolute document security. Unlike TCP and HTTP transmission, when a UDP audio packet drops out, the server keeps sending information, causing only a brief glitch instead of a huge gap of silence. TCP, on the other hand, keeps trying to resend the lost packet before sending anything further, causing greater delays and breakups in the audio broadcast. Prior to UDP and RTSP transmission, data was sent over the Web primarily via TCP and HTTP. TCP transmission, in contrast to UDP and RTSP transmission, is designed to reliably transfer text documents, email, and HTML web pages over the Internet while enforcing maximum reliability and data integrity rather than timeliness. Since HTTP transmission is based on TCP, it is also not well-suited for transmitting multimedia presentations that rely on time-based operation or for large-scale broadcasting. Later in the chapter, you will learn why protocols are important. Some streaming technologies such as RealAudio and Windows Media utilize dedicated servers that support superior UDP and RTSP transmission. Other formats such as 41
  • 46. 哈尔滨工业大学华德应用技术学院毕业设计(论文) Shockwave, Flash, MIDI, QuickTime, and Beatnik are primarily designed to stream from a standard HTTP web server. While these formats are cheaper and often easier to use since they do not require the installation of a new server, they are typically not used in professional broadcasting situations that require the delivery of hundreds or thousands of simultaneous streams. MP3 has gained huge popularity as an encoding format because of its great sound quality. For radio-style broadcasts, professionals unanimously agree that it is the best-sounding format. MP3 is most commonly used for easily and efficiently uploading and downloading music files to the Web. MP3 is especially popular among downloadable music enthusiasts because it preserves audio quality while creating file sizes that are up to 12 times smaller than uncompressed WAV or AIFF audio files. MP3 is also quickly becoming the preferred format for streaming music as well, even though it is more complicated than setting up a RealMedia Server. 42
  • 47. 哈尔滨工业大学华德应用技术学院毕业设计(论文) 附录 3 文件系统底层驱动函数 DSTATUS disk_initialize (BYTE drv) { BYTE n, ty, ocr[4]; if (drv) return STA_NOINIT; if (Stat & STA_NODISK) return Stat; power_on(); send_initial_clock_train(); SELECT(); ty = 0; if (send_cmd(CMD0, 0) == 1) { Timer1 = 100; if (send_cmd(CMD8, 0x1AA) == 1) { for (n = 0; n < 4; n++) ocr[n] = rcvr_spi(); if (ocr[2] == 0x01 && ocr[3] == 0xAA) { do { if (send_cmd(CMD55, 0) <= 1 && send_cmd(CMD41, 1UL << 30) == 0) break; } while (Timer1); if (Timer1 && send_cmd(CMD58, 0) == 0) {/ for (n = 0; n < 4; n++) ocr[n] = rcvr_spi(); ty = (ocr[0] & 0x40) ? 6 : 2; } } } else { ty = (send_cmd(CMD55, 0) <= 1 && send_cmd(CMD41, 0) <= 1) ? 2 : 1; do { if (ty == 2) { 43
  • 48. 哈尔滨工业大学华德应用技术学院毕业设计(论文) if (send_cmd(CMD55, 0) <= 1 && send_cmd(CMD41, 0) == 0) break; } else { if (send_cmd(CMD1, 0) == 0) break; } } while (Timer1); if (!Timer1 || send_cmd(CMD16, 512) != 0) ty = 0; } } CardType = ty; DESELECT(); rcvr_spi(); if (ty) { Stat &= ~STA_NOINIT; set_max_speed(); } else { power_off(); } return Stat; } DRESULT disk_read ( BYTE drv, BYTE *buff, DWORD sector, BYTE count ) { if (drv || !count) return RES_PARERR; if (Stat & STA_NOINIT) return RES_NOTRDY; if (!(CardType & 4)) sector *= 512; SELECT(); if (count == 1) { if ((send_cmd(CMD17, sector) == 0) 44
  • 49. 哈尔滨工业大学华德应用技术学院毕业设计(论文) && rcvr_datablock(buff, 512)) count = 0; } else { if (send_cmd(CMD18, sector) == 0) { do { if (!rcvr_datablock(buff, 512)) break; buff += 512; } while (--count); send_cmd(CMD12, 0); } } DESELECT(); rcvr_spi(); return count ? RES_ERROR : RES_OK; } #if _READONLY == 0 DRESULT disk_write ( BYTE drv, const BYTE *buff, DWORD sector, BYTE count ) { if (drv || !count) return RES_PARERR; if (Stat & STA_NOINIT) return RES_NOTRDY; if (Stat & STA_PROTECT) return RES_WRPRT; if (!(CardType & 4)) sector *= 512; SELECT(); if (count == 1) { if ((send_cmd(CMD24, sector) == 0) && xmit_datablock(buff, 0xFE)) count = 0; 45
  • 50. 哈尔滨工业大学华德应用技术学院毕业设计(论文) } else { if (CardType & 2) { send_cmd(CMD55, 0); send_cmd(CMD23, count); } if (send_cmd(CMD25, sector) == 0) { do { if (!xmit_datablock(buff, 0xFC)) break; buff += 512; } while (--count); if (!xmit_datablock(0, 0xFD)) count = 1; } } DESELECT(); rcvr_spi(); return count ? RES_ERROR : RES_OK; } 46