版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数字fm电台设计开发昆明理工大学津桥学院arm实作课程报告实作设计题目: 数字fm电台设计开发 专业: 电子信息科学与技术 年级: 2011级 姓名: 学号: 指导教师: 王剑平 日期: 2013.11.20津桥学院arm实际应用系统开发选题报告指导教师王剑平 职称 副教授 学生年级11级学生专业电 信 开发题目数字fm电台设计开发选题的依据、目的、要求、工作量大小: 数字fm电台在日常生活中有广泛应用,本题目旨在帮助学生掌握数字电台的开发和应用。选题的主要内容和意义: 设计数字fm电台,任务: (1)了解数字fm电台的基本工作原理。进行芯片选型、电路设计。(2)实现电台发射频率可调。要求:
2、(1)实现68mhz107mhz范围可调。 (2)实现音频信号发射。 (3)实时显示发射频率。 课程所需材料清单及材料费预算: (1)stm32开发板700元(2)数字fm电台模块50元; (3)液晶显示模块100元(4)其它辅料200 元共计 1050元拟采用方法及预期成果: 采用stm32 主控芯片实现功能,液晶显示结果。采用无线耳机接受fm信号并进行测试。教师意见: 同意选题摘 要 数字fm电台在日常生活中有广泛应用,战舰stm32开发板上载了一颗 fm 收发芯片: rda5820。该芯片不但可以用来做用来做 fm 接收,实现音机功能;还可以用来做 fm 发射,实现电台的功能。在接下来的
3、实作中本文将就如何利用rda5820的发射功能在一定的频率上实现发射sd卡中的音乐和通过麦克风传音作出详细的阐述。【关键词】: fm rda5820 发射电台abstractdigital fm radio is widely applied in daily life, the battleship stm32 development board to upload a fm transceiver chip: rda5820 the chip not only can be used to do to do fm receiver, achieve sound machine functi
4、on; fm emission can also be used to do, to realize the function of the radio in the next implementation in this article will discuss how to use the launch rda5820 function implemented in certain frequency launch the music in sd card and pass through a microphone sound to make a detail 【keyword】: fm
5、rda5820 launch radio目 录津桥学院arm实际应用系统开发选题报告i摘 要iiabstractii第1章 绪论11.1 课题背景11.2 主要芯片介绍11.2.1 rda5820介绍11.2.2 vs1053简介31.2.3 74hc4052 简介51.2.4 sd卡简介61.2.5 tftlcd简介9第2章 硬件设计及模块功能实现102.1 fm电台设计框图102.2硬件设计102.2.1 rda5820与stm32的连接电路102.2.2 vs1053解码芯片电路原理112.2.3 sd卡接口和stm32的连接122.2.4 tftlcd显示模块142.3 模块功能实现1
6、52.3.1 sd卡模块指令152.3.2 tftlcd模块控制162.3.3 vs1053的spi数据传送和sci寄存器18第3章 软件设计233.1 fm电台软件设计流程图233.2 软件设计结构框图243.3 主函数介绍243.3.1 系统初始化243.3.2 fm信号发射设置253.3.3 tftlcd显示基本信息253.3.4 音频源的选择253.4 iic驱动rda5820 fm收发芯片253.5 spi驱动vs1053音频解码器273.6 sd卡读写驱动283.7 74hc4052音频选择283.8 tft-lcd显示驱动29第4章 下载调试314.1 调试环境314.2下载验证
7、31结 论34主要工作34心得体会34参考文献35ii第1章 绪论1.1 课题背景自20世纪90年代以来,无线通信在全球范围内取得了突飞猛进的发展。无论是军用或民用通信,在各种频段上出现了许多新的系统和模式,满足了社会上各种各样的需求。发射机作为无线通信设备的重要组成部分,其发展极大的促进了无线通信技术的发展。无线电技术诞生以来,信息传输和信息处理始终是其主要任务。为了有效地进行传输,必须将携带信息的低频电信号调制到几十mhz几百mhz以上的高频振荡信号上,再经天线发送出去。为减小各种因素引起的系统不稳定,增强系统的可靠性,系统必须包括自动增益控制、自动频率控制和自动相位控制在内的反馈控制电路
8、。本文所讨论的就是一个利用锁相环组成的直接调频信号发射器。fm发射电台具有使接收机接收灵敏度高,抗干扰力强、音质清晰等特点,但往往在制作、调试过程中易出现电路易停振、抗干扰力差、失真等故障。该fm发射机电路工作频率稳定,抗干扰力强,制作调试简单。本设计是一个调频发射电台,调频就是频率调制,所谓频率调制就是原来等幅恒频的高频信号的频率,随着调制信号的幅度变化而变化,调频发射电台就是发送这些频率调制的无线电信号,经过解调变换成无限信号并发送信号的电子设备。本设计就是利用stm32开发板,设计一个数字fm发射电台系统。通过教师的悉心指导和自己的不断努力,最终完成了毕业设计的各项任务,成功设计一小功率
9、调频发射电台,基本完成其各项功能。随着消费类电子的兴起和繁荣以及数字电子技术的发展,收音机逐渐数字化,集成化,而且成本越来越低,这使得在各种设备中嵌入收音机的现象更加普遍。广大从事消费类电子设计的厂商都不忘在诸如mp3、智慧手机、便携式video播放器等产品中嵌入fm接收部分。这样电台的建设就更加有意义了。高频电子线路本是一门较为复杂的电路。其中更有精髓的知识值的我们去学习。同时随着计算机技术与高频电子技术的发展,模拟电子技术,得到广泛应用,在模拟电子电路中尤其得到广泛应用,成为现代电子电器必不可少的电子技术。在高频电子线路中,lc振荡电路是无孔不入,无所不在。应用于发射机中,加上简单的电路及
10、连线,就可以组成各种形式的、任意信号,广泛应用。小功率调频发射电台在使用中,控制方法科学、简单、明了,控制电路及连线简单、易行,工作稳定性好,从而得到广泛应用。在此,我们就调频发射电台的应用作较完整和系统的研究,促进小功率调频发射电台的正确使用。1.2 主要芯片介绍1.2.1 rda5820介绍 rda5820是北京锐迪科推出的一款集成度非常高的立体声fm收发芯片。该芯片具有以下特点:l fm发射和接收一体l 支持65mhz115mhz的全球fm接收频段,收发天线共用l 支持iic/spi接口l 支持32.768k晶振l 数字音量及自动agc控制l 支持立体声/单声道切换,带软件静音功能 支持
11、i2s接口(输入/输出) 内置ldo,使用电压范围宽(2.75.5v) 高功率32欧负载音频输出、可以直接驱动耳机l 集成度高、功耗低、尺寸小(4mm*4mm qfn封装)、应用简单rda5820应用范围很宽,在很多手机、mp3、mp4甚至平板电脑上都有应用。rda5820的引脚图如图1.1所示:l rda5820支持2种通信模式,spi和iic,在战舰stm32开发板上面,使用的是rda5820的iic模式。通过将图1.1 的mode脚接gnd,rda5820即进入iic模式,此时sclk充当iic的scl,sdio充当iic的sda。rda5820的iic地址为0x11(不包含最低位),对
12、应读为0x23,写为0x20。 模式设置rda5820的模式设置通过40h(寄存器地址0x40)寄存器的chip_func3:0位来设置,rda5820可以工作在rx模式、tx模式、pa模式和dac模式等,本章我们只介绍rx模式和tx模式。图 1.1 rda5820引脚图通过设置chip_func3:0=0即可定义当前工作模式为fm接收模式。在该模式下,我们即可实现fm收音机功能。通过设置chip_func3:0=1即可定义当前工作模式为fm发送模式。在该模式下,我们即可实现fm电台的功能。频点设置软件可以通过配置03h(寄存器地址0x30)寄存器来选择fm频道。搜台(seek)的步进长度(1
13、00khz、200khz或50khz)由space1:0 来选择,频道由chan9:0来选择,频率范围(76mhz91mhz、87mhz108mhz或76mhz108mhz 或用户自定义65mhz115mhz 范围内频段)由band1:0来选择。自定义的频段由寄存器53h(chan_bottom)和54h(chan_top)来设置,单位为100khz,即定义65mhz76mhz,可设置band1:0=3(用户自定义频段),并且设置chan_bottom=0x028a,chan_top=0x02f8。频点计算方法如下(该公式也适用于fm频点的读取):fmfreq=space*chan+fmbtm
14、其中fmfreq即我们需要的fm频率(mhz),space为我们设置的步进长度(khz),chan是我们设置的频点值,fmbtm则是我们在band里面所选频段的最低频率,当band=0的实惠,fmbtm=87mhz;band=1的时候,fmbtm=76mhz;band=2的时候,fmbtm=chan_bottom*0.1mhz。例如,我们要设置fm频率为93.0mhz,假设band=0,space=100khz。那么我们只需要设置chan=60即可。频点设置部分,fm接收和fm发送是共用的,对两者都适用。1.2.2 vs1053简介vs1053是继vs1003后荷兰vlsi公司出品的又一款高性
15、能解码芯片。该芯片可以实现对mp3/ogg/wma/flac/wav/aac/midi等音频格式的解码,同时还可以支持adpcm/ogg等格式的编码,性能相对以往的vs1003提升不少。vs1053拥有一个高性能的dsp处理器核vs_dsp,16k的指令ram,0.5k的数据ram,通过spi控制,具有8个可用的通用io口和一个串口,芯片内部还带了一个可变采样率的立体声adc(支持咪头/咪头+线路/2线路)、一个高性能立体声dac及音频耳机放大器。vs1053的特性如下: 支持众多音频格式解码,包括ogg/mp3/wma/wav/flac(需要加载patch)/midi/aac等。 对话筒输入
16、或线路输入的音频信号进行ogg(需要加载patch)/ima adpcm编码 高低音控制 带有earspeaker空间效果(用耳机虚拟现场空间效果) 单时钟操作12.13mhz 内部pll锁相环时钟倍频器 低功耗 内含高性能片上立体声dac,两声道间无相位差 过零交差侦测和平滑的音量调整 内含能驱动30 欧负载的耳机驱动器 模拟,数字,i/o 单独供电 为用户代码和数据准备的16kb片上ram 可扩展外部dac的i2s接口用于控制和数据的串行接口(spi) 可被用作微处理器的从机 特殊应用的spi flash引导 供调试用途的uart接口 新功能可以通过软件和8 gpio 添加vs1053相对
17、于它的前辈vs1003,增加了编解码格式的支持(比如支持ogg/flac,还支持ogg编码,vs1003不支持)、增加了gpio数量到8个(vs1003只有4个)、增加了内部指令ram容量到16kib(vs1003只有5.5kib)、增加了i2s接口(vs1003没有)、支持earspeaker空间效果(vs1003不支持)等。同时vs1053的dac相对于vs1003有不少提高,同样的歌曲,用vs1053播放,听起来比1003效果好很多。 vs1053的封装引脚和vs1003完全兼容,所以如果你以前用的是vs1003,则只需要把vs1003换成vs1053,就可以实现硬件更新,电路板完全不用
18、修改。不过需要注意的是vs1003的cvdd是2.5v,而vs1053的cvdd是1.8v,所以你还需要把稳压芯片也变一下,其他都可以照旧了。vs1053通过spi接口来接受输入的音频数据流,它可以是一个系统的从机,也可以作为独立的主机。这里我们只把它当成从机使用。我们通过spi口向vs1053不停的输入音频数据,它就会自动帮我们解码了,然后从输出通道输出音乐,这时我们接上耳机就能听到所播放的歌曲了。 图 1.2 vs1053封装图 1.2.3 74hc4052 简介74hc4052是一款高速cmos器件,74hc4052引脚兼容hef4052b。74hc4052遵循jedec标准no.7a。
19、74hc4052是双路4通道模拟多路选择器/多路分配器,带有公共选择逻辑。每个多路选择器包含4个独立输入/输出端(ny0至ny3)和1个公共输入/输出端(nz)。公用通道选择逻辑包含2个数字选择端(s0和s1)和1个低有效使能端(e)。e为低时,4个开关的其中之一将被s0和s1选中(低阻态)。e为高时,所有开关都进入高阻态,直接无视s0和s1。vcc和gnd是数字控制端(s0和s1,e)的供电引脚,74hc4052的vcc至gnd范围为2.0 v10.0 v。74hc4052的模拟输入/输出端(ny0至ny3,nz)在上限vcc和下限vee之间摆动,vcc-vee应当不超过10.0 v。作为一
20、个数字多路选择器/多路分配器,vee将被连接到gnd上(一般是接地)宽模拟输入电压范围:-5 v+5 v低导通阻抗vcc - vee = 4.5 v时,80 欧姆(典型)vcc - vee = 6.0 v时,70 欧姆(典型)vcc - vee = 9.0 v时,60 欧姆(典型)逻辑电平转换:沟通5 v逻辑和+- 5 v模拟信号典型的内置“先断后合”遵循jedec标准no.7aesd保护人体模式(hbm) eia/jesd22-a114e超过2000 v机械模式(mm) eia/jesd22-a115-a超过200 v温度范围:-40+85 和-40+125 74hc4052 基本参数电压
21、2.010.0v传输延迟 4 ns5v74hc4052 其他特性导通阻抗 60 ohms逻辑电平 cmos功耗考量 低功耗或电池供电应用74hc4052 封装与引脚so16, ssop16, dip16, tssop16表1.1 74hc4052 基本参数 1.2.4 sd卡简介sd卡(secure digital memory card)中文翻译为安全数码卡,它是在mmc的基础上发展而来,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(pda)和多媒体播放器等。sd卡由日本松下、东芝及美国sandisk公司于1999年8月共同开发研制。大
22、小犹如一张邮票的sd记忆卡,重量只有2克,但却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性。按容量分类,可以将sd卡分为3类:sd卡、sdhc卡、sdxc卡。如下表1.2所示:容量 命名 简称 02g standard capacity sd memory card sdsc或sd 2g32g high capacity sd memory card sdhc 32g2t extended capacity sd memory card sdxc 表1.2 sd卡按容量分类sd卡和sdhc卡协议基本兼容,但是sdxc卡,同这两者区别就比较大了,本章我们讨论的主要是sd/sd
23、hc卡(简称sd卡)。sd卡一般支持2种操作模式:1,sd卡模式(通过sdio通信);2,spi模式;主机可以选择以上任意一种模式同sd卡通信,sd卡模式允许4线的高速数据传输。spi模式允许简单的通过spi接口来和sd卡通信,这种模式同sd卡模式相比就是丧失了速度。sd卡的引脚排序如下图1.4所示:图1.4 sd卡引脚排序图sd卡引脚功能描述如表1.3所示:表1.3sd卡引脚功能表sd卡只能使用3.3v的io电平,所以,mcu一定要能够支持3.3v的io端口输出。注意:在spi模式下,cs/mosi/miso/clk都需要加10100k左右的上拉电阻。sd卡有5个寄存器,如表1.4所示:名称
24、宽度描述cid128卡标识寄存器rca16相对卡地址(relative card address)寄存器:本地系统中卡的地址,动态变化,在主机初始化的时候确定*spi模式中没有csd128卡描述数据:卡操作条件相关的信息数据scr64sd配置寄存器:sd卡特定信息数据ocr32操作条件寄存器表1.4 sd卡相关寄存器sd卡初始化过程因为我们使用的是spi模式,所以先得让sd卡进入spi模式。方法如下:在sd卡收到复位命令(cmd0)时,cs为有效电平(低电平)则spi模式被启用。不过在发送cmd0之前,要发送74个时钟,这是因为sd卡内部有个供电电压上升时间,大概为64个clk,剩下的10个c
25、lk用于sd卡同步,之后才能开始cmd0的操作,在卡初始化的时候,clk时钟最大不能超过400khz!。接着我们看看sd卡的初始化,sd卡的典型初始化过程如下:1、初始化与sd卡连接的硬件条件(mcu的spi配置,io口配置);2、上电延时(74个clk);3、复位卡(cmd0),进入idle状态;4、发送cmd8,检查是否支持2.0协议;5、根据不同协议检查sd卡(命令包括:cmd55、cmd41、cmd58和cmd1等);6、取消片选,发多8个clk,结束初始化这样我们就完成了对sd卡的初始化,注意末尾发送的8个clk是提供sd卡额外的时钟,完成某些操作。通过sd卡初始化,我们可以知道sd
26、卡的类型(v1、v2、v2hc或者mmc),在完成了初始化之后,就可以开始读写数据了。sd卡读取数据,这里通过cmd17来实现,具体过程如下:1、发送cmd17;2、接收卡响应r1;3、接收数据起始令牌0xfe;4、接收数据;5、接收2个字节的crc,如果不使用crc,这两个字节在读取后可以丢掉。6、禁止片选之后,发多8个clk;以上就是一个典型的sd卡读数据过程,sd卡的写于读数据差不多,写数据通过cmd24来实现,具体过程如下:1、发送cmd24;2、接收卡响应r1;3、发送写数据起始令牌0xfe;4、发送数据;5、发送2字节的伪crc;6、禁止片选之后,发多8个clk;以上就是一个典型的
27、写sd卡过程。1.2.5 tftlcd简介tft-lcd即薄膜晶体管液晶显示器。其英文全称为:thin film transistor-liquid crystal display。tft-lcd与无源tn-lcd、stn-lcd的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(tft),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。tft-lcd也被叫做真彩液晶显示器。上一章介绍了oled模块,本章,我们给大家介绍alientek tftlcd模块,该模块有如下特点:1,2.4/2.8/3.53种大小的屏幕可选。2,320240的
28、分辨率(3.5分辨率为:320*480)。3,16位真彩显示。4,自带触摸屏,可以用来作为控制输入。本章,我们以2.8寸的alientek tftlcd模块为例介绍,该模块支持65k色显示,显示分辨率为320240,接口为16位的80并口,自带触摸屏。图1.5 alientek 2.8寸tftlcd外观图第2章 硬件设计及模块功能实现2.1 fm电台设计框图 本文设计sd卡音源和mic音源两种音源输入,经音频选择,cpu处理之后输出2.2硬件设计实验设计为fm发射模式,设计发射频率为92.2mhz,开机显示发射频率,key_up键选择音源输入等信息。按一下key_up键即进入sd卡音源输入模式
29、,这时key0:m+(下一曲) key2:m-(上一曲)起效,再按第二下进入mic音源模式,这时key_down键起效,可以用它来选择直接播放或者录音储存后播放模式。同时用ds0提示程序正在运行。所要用到的部分硬件资源如下:1) 指示灯ds02) key0、key1、key2和wk_up等四个按键3) tftlcd模块4) sd卡5) rda58206) 74hc40527) vs1053b 2.2.1 rda5820与stm32的连接电路这里rda5820用iic总线,接在stm32的pb10和pb11两个脚上,下图中outl和outr接在rda5820的lin和rin,outr和outl是
30、来自音频选择器(74hc4052)的输出端,作为fm发送时的音源输入。图2.1 rda5820与stm32的连接图2.2.2 vs1053解码芯片电路原理vs1053通过7根线同stm32连接,他们是:vs_miso、vs_mosi、vs_sck、vs_xcs、vs_xdcs、vs_dreq和vs_rst。这7根线同stm32的连接关系如表2.1所示: 表2.1 vs1053各信号线与stm32连接关系其中vs_rst是vs1053的复位信号线,低电平有效。vs_dreq是一个数据请求信号,用来通知主机,vs1053可以接收数据与否。vs_miso、vs_mosi和vs_sck则是vs1053
31、的spi接口他们在vs_xcs和vs_xdcs下面来执行不同的操作。从上表可以看出,vs1053的spi是接在stm32的spi1上面的。 1) 复位vs1053 这里包括了硬复位和软复位,是为了让vs1053的状态回到原始状态,准备解码下一首歌曲。2) 配置vs1053的相关寄存器这里我们配置的寄存器包括vs1053的模式寄存器(mode)、时钟寄存器(clockf)、音调寄存器(bass)、音量寄存器(vol)等。图2.2 vs1053b音频解码模块原理图 3) 发送音频数据 当经过以上两步配置以后,我们剩下来要做的事情,就是往vs1053里面扔音频数据了,只要是vs1053支持的音频格式
32、,直接往里面丢就可以了,vs1053会自动识别,并进行播放。不过发送数据要在dreq信号的控制下有序的进行,不能乱发。这个规则很简单:只要dreq变高,就向vs1053发送32个字节。然后继续等待dreq变高,直到音频数据发送完。经过以上三步,我们就可以播放音乐了。2.2.3 sd卡接口和stm32的连接 我们用跳线帽将p10的sd_dt3、sd_cmd、sd_sck、sd_dt0分别同p12的sd_cs、spi2_mosi、spi2_sck、spi2_miso连接起来,即实现sd卡的spi模式连接。硬件连接示意图如图2.4所示: 图2.3 sd卡接口与stm32连接原理图 图2.4 sd卡s
33、pi方式硬件连接示意图 将图中所示的4处,用跳线帽短接,接口实现sd卡与stm32的spi连接。最后,你还得自备一个sd卡,将其插入板子下面的sd卡接口。2.2.4 tftlcd显示模块 模块原理图如图2.5所示:图 2.5 alientek 2.8寸tftlcd模块原理图tftlcd模块采用2*17的2.54公排针与外部连接,接口定义如图2.6所示:图2.6 alientek 2.8寸tftlcd模块接口图从图2.6可以看出,alientek tftlcd模块采用16位的并方式与外部连接,之所以不采用8位的方式,是因为彩屏的数据量比较大,尤其在显示图片的时候,如果用8位数据线,就会比16位方
34、式慢一倍以上,我们当然希望速度越快越好,所以我们选择16位的接口。图18.1.3还列出了触摸屏芯片的接口,关于触摸屏本章我们不多介绍,后面的章节会有详细的介绍。该模块的80并口有如下一些信号线:cs:tftlcd片选信号。wr:向tftlcd写入数据。rd:从tftlcd读取数据。d15:0:16位双向数据线。rst:硬复位tftlcd。rs:命令/数据标志(0,读写命令;1,读写数据)。80并口在上一节我们已经有详细的介绍了,这里我们就不再介绍,需要说明的是,tftlcd模块的rst信号线是直接接到stm32的复位脚上,并不由软件控制,这样可以省下来一个io口。另外我们还需要一个背光控制线来
35、控制tftlcd的背光。所以,我们总共需要的io口数目为21个。这里还需要注意,我们标注的db1db8,db10db17,是相对于lcd控制ic标注的,实际上大家可以把他们就等同于d0d15,这样理解起来就比较简单一点。tftlcd显示需要的相关设置步骤如下:1)设置stm32与tftlcd模块相连接的io。这一步,先将我们与tftlcd模块相连的io口进行初始化,以便驱动lcd。这里我们用到的是fsmc,fsmc将在18.1.2节向大家详细介绍。2)初始化tftlcd模块。其实这里就是上和上面oled模块的初始化过程差不多。通过向tftlcd写入一系列的设置,来启动tftlcd的显示。为后续
36、显示字符和数字做准备。3) 通过函数将字符和数字显示到tftlcd模块上。2.3 模块功能实现2.3.1 sd卡模块指令sd卡的命令格式,如表2.2所示:字节1 字节2-5 字节6 7 6 5 0 31 0 7 1 0 0 1 command 命令参数 crc 1 表2.2 sd卡命令格式sd卡的指令由6个字节组成,字节1的最高2位固定为01,低6位为命令号(比如cmd16,为10000即16进制的0x10,完整的cmd16,第一个字节为01010000,即0x10+0x40)。字节25为命令参数,有些命令是没有参数的。字节6的高七位为crc值,最低位恒定为1。sd卡的命令总共有12类,分为c
37、lass0class11,下面几个比较重要的命令,如表2.3所示:命令 参数 回应 描述 cmd0(0x00) none r1 复位sd卡 cmd8(0x08) vhs+check pattern r7 发送接口状态命令 cmd9(0x09) none r1 读取卡特定数据寄存器 cmd10(0x0a) none r1 读取卡标志数据寄存器 cmd16(0x10) 块大小 r1 设置块大小(字节数) cmd17(0x11) 地址 r1 读取一个块的数据 cmd24(0x18) 地址 r1 写入一个块的数据 cmd41(0x29) none r3 发送给主机容量支持信息和激活 卡初始化过程 cm
38、d55(0x37) none r1 告诉sd卡,下一个是特定应用命令 cmd58(0x3a) none r3 读取ocr寄存器 表 2.3 sd卡部分命令上表中,大部分的命令是初始化的时候用的。表中的r1、r3和r7等是sd卡的回应,sd卡和单片机的通信采用发送应答机制,如图2.7所示:图2.7 sd卡命令传输过程每发送一个命令,sd卡都会给出一个应答,以告知主机该命令的执行情况,或者返回主机需要获取的数据。spi模式下,sd卡针对不同的命令,应答可以使r1r7,r1的应答,各位描述如表2.4所示:r1响应格式 位 7 6 5 4 3 2 1 0 含义 开始位 始终为0 参数 错误 地址 错误
39、 擦除序列 错误 crc错误 非法 命令 擦除 复位 闲置 状态 表2.4 r1响应各位描述2.3.2 tftlcd模块控制我们仅以ili9320控制器为例进行介绍,其他的控制基本都类似。ili9320液晶控制器自带显存,其显存总大小为172820(240*320*18/8),即18位模式(26万色)下的显存量。模块的16位数据线与显寸的对应关系为565方式,如图2.8所示:图2.8 16位数据与显存对应关系图最低5位代表蓝色,中间6位为绿色,最高5位为红色。数值越大,表示该颜色越深。接下来,我们介绍一下ili9320的几个重要命令,因为ili9320的命令很多,我们这里不可能一一介绍,有兴趣
40、的大家可以找到ili9320的datasheet看看。里面对这些命令有详细的介绍。这里我们要介绍的命令列表如表2.5所示:表2.5 ili9320常用命令表r0,这个命令,有两个功能,如果对它写,则最低位为osc,用于开启或关闭振荡器。而如果对它读操作,则返回的是控制器的型号。这个命令最大的功能就是通过读它可以得到控制器的型号,而我们代码在知道了控制器的型号之后,可以针对不同型号的控制器,进行不同的初始化。因为93xx系列的初始化,其实都比较类似,我们完全可以用一个代码兼容好几个控制器。r3,入口模式命令。我们重点关注的是i/d0、i/d1、am这3个位,因为这3个位控制了屏幕的显示方向。am
41、:控制gram更新方向。当am=0的时候,地址以行方向更新。当am=1的时候,地址以列方向更新。i/d1:0:当更新了一个数据之后,根据这两个位的设置来控制地址计数器自动增加/减少1,其关系如图2.9所示:图2.9 gram显示方向设置图通过这几个位的设置,我们就可以控制屏幕的显示方向了,这种方法虽然简单,但是不是很通用,比如不同的液晶,可能这里差别就比较大,有的甚至无法通用!比如9341和9320就完全不通用。r7,显示控制命令。该命令cl位用来控制是8位彩色,还是26万色。为0时26万色,为1时八位色。d1、d0、basee这三个位用来控制显示开关与否的。当全部设置为1的时候开启显示,全0
42、是关闭。我们一般通过该命令的设置来开启或关闭显示器,以降低功耗。r32,r33,设置gram的行地址和列地址。r32用于设置列地址(x坐标,0239),r33用于设置行地址(y坐标,0319)。当我们要在某个指定点写入一个颜色的时候,先通过这两个命令设置到改点,然后写入颜色值就可以了。r34,写数据到gram命令,当写入了这个命令之后,地址计数器才会自动的增加和减少。该命令是我们要介绍的这一组命令里面唯一的单个操作的命令,只需要写入该值就可以了,其他的都是要先写入命令编号,然后写入操作数。r80r83,行列gram地址位置设置。这几个命令用于设定你显示区域的大小,我们整个屏的大小为240*32
43、0,但是有时候我们只需要在其中的一部分区域写入数据,如果用先写坐标,后写数据这样的方式来实现,则速度大打折扣。此时我们就可以通过这几个命令,在其中开辟一个区域,然后不停的丢数据,地址计数器就会根据r3的设置自动增加/减少,这样就不需要频繁的写地址了,大大提高了刷新的速度。2.3.3 vs1053的spi数据传送和sci寄存器vs1053的spi数据传送vs1053的spi支持两种模式:1,vs1002有效模式(即新模式)。2,vs1001兼容模式。这里我们仅介绍vs1002有效模式(此模式也是vs1053的默认模式)。表2.6是在新模式下vs1053的spi信号线功能描述: 表2.6 vs10
44、53新模式下spi口信号线功能 vs1053的spi数据传送,分为sdi和sci,分别用来传输数据/命令。sdi和前面介绍的spi协议一样的,不过vs1053的数据传输是通过dreq控制的,主机在判断dreq有效(高电平)之后,直接发送即可(一次可以发送32个字节)。这里我们重点介绍一下sci。sci串行总线命令接口包含了一个指令字节、一个地址字节和一个16位的数据字。读写操作可以读写单个寄存器,在sck的上升沿读出数据位,所以主机必须在下降沿刷新数据。sci的字节数据总是高位在前低位在后的。第一个字节指令字节,只有2个指令,也就是读和写,读为0x03,写为0x02。一个典型的sci读时序如图
45、2.10所示: 图2.10 sci读时序从图2.10可以看出,向vs1053读取数据,通过先拉低xcs(vs_xcs),然后发送读指令(0x03),再发送一个地址,最后,我们在so线(vs_miso)上就可以读到输出的数据了。而同时si(vs_mosi)上的数据将被忽略。看完了sci的读,我们再来看看sci的写时序,如图2.11 所示: 图2.11 sci写时序图2.11中,其时序和图2.10基本类似,都是先发指令,再发地址。不过写时序中,我们的指令是写指令(0x02),并且数据是通过si写入vs1053的, so则一直维持低电平。细心的读者可能发现了,在这两个图中,dreq信号上都产生了一个
46、短暂的低脉冲,也就是执行时间。这个不难理解,我们在写入和读出vs1053的数据之后,它需要一些时间来处理内部的事情,这段时间,是不允许外部打断的,所以,我们在sci操作之前,最好判断一下dreq是否为高电平,如果不是,则等待dreq变为高。vs1053的sci寄存器vs1053的所有sci寄存器如表2.7所示: sci寄存器 寄存器 类型 复位值 缩写 描述 0x00 rw 0x0800 mode 模式控制 0x01 rw 0x000c status vs0153状态 0x02 rw 0x0000 bass 内置低音/高音控制 0x03 rw 0x0000 clockf 时钟频率+倍频数 0x
47、04 rw 0x0000 decode_time 解码时间长度(秒) 0x05 rw 0x0000 audata 各种音频数据 0x06 rw 0x0000 wram ram 写/读 0x07 rw 0x0000 wramaddr ram 写/读的基址 0x08 r 0x0000 hdat0 流的数据标头0 0x09 r 0x0000 hdat1 流的数据标头1 0x0a rw 0x0000 aiaddr 应用程序起始地址 0x0b rw 0x0000 vol 音量控制 0x0c rw 0x0000 aictrl0 应用控制寄存器0 0x0d rw 0x0000 aictrl1 应用控制寄存器
48、1 0x0e rw 0x0000 aictrl2 应用控制寄存器2 0x0f rw 0x0000 aictrl3 应用控制寄存器3 表2.7 sci寄存器 首先,我们介绍一下clockf寄存器,这个寄存器用来设置时钟频率、倍频等相关信息,该寄存器的各位描述如表2.8所示: 表2.8 clockf寄存器各位描述此寄存器,重点说明sc_freq,sc_freq是以4khz为步进的一个时钟寄存器,当外部时钟不是12.288m的时候,其计算公式为: sc_freq=(xtali-8000000)/4000式中为xtali的单位为hz。表2.8中clki是内部时钟频率,xtali是外部晶振的时钟频率。由
49、于我们使用的是12.288m的晶振,在这里设置此寄存器的值为0x9800,也就是设置内部时钟频率为输入时钟频率的3倍,倍频增量为1.0倍。接下来是mode寄存器,该寄存器用于控制vs1053的操作,是最关键的寄存器之一,该寄存器的复位值为0x0800,其实就是默认设置为新模式。表2.9是mode寄存器的各位描述: 表2.9 mode寄存器各位描述这个寄存器,我们这里只介绍一下第2和第11位,也就是sm_reset和sm_sdinew。其他位,我们用默认的即可。这里sm_reset,可以提供一次软复位,建议在每播放一首歌曲之后,软复位一次。sm_sdinew为模式设置位,这里我们选择的是vs10
50、02新模式(本地模式), 所以设置该位为1(默认的设置)。接着我们看看bass寄存器,该寄存器可以用于设置vs1053的高低音效。该寄存器的各位描述如表2.10所示: 表2.10 bass寄存器各位描述通过这个寄存器以上位的一些设置,我们可以随意配置自己喜欢的音效(其实就是高低音的调节)。vs1053的earspeaker效果则由mode寄存器控制,请参考表2.9。接下来,我们看看decode_time这个寄存器。该寄存器是一个存放解码时间的寄存器,以秒钟为单位,我们通过读取该寄存器的值,就可以得到解码时间了。不过它是一个累计时间,所以我们需要在每首歌播放之前把它清空一下,以得到这首歌的准确解
51、码时间。 hdat0和hdta1是两个数据流头寄存器,不同的音频文件,读出来的值意义不一样,我们可以通过这两个寄存器来获取音频文件的码率,从而可以计算音频文件的总长度。最后我们介绍一下vol这个寄存器,该寄存器用于控制vs1053的输出音量,该寄存器可以分别控制左右声道的音量,每个声道的控制范围为0254,每个增量代表0.5db的衰减,所以该值越小,代表音量越大。比如设置为0x0000则音量最大,而设置为0xfefe则音量最小。注意:如果设置vol的值为0xffff,将使芯片进入掉电模式!第3章 软件设计3.1 fm电台软件设计流程图3.2 软件设计结构框图3.3 主函数介绍3.3.1 系统初
52、始化该模块实现对系统各模块的初始化工作,以便后面程序使用这些模块时正常工作。以下是所有初始化函数:delay_init(); /延时函数初始化 nvic_configuration(); /设置nvic中断分组2:2位抢占优先级,2位响应优先级uart_init(9600); /串口初始化为9600lcd_init(); /显示屏初始化key_init(); /按键初始化font_init(); /初始化字库audiosel_init(); /初始化音源选择usmart_dev.init(72); /usmart初始化mem_init(sramin); /初始化内部内存池vs_init(); /初始化vs1053 exfuns_init();/为fatfs相关变量申请内存 f_mount(0,fs0); /挂载sd卡 f_mount(1,fs1); /挂载flash.usmart_dev.init(72); /初始化usmartrda5820_init(); /初始化fm收发3.3.2 fm信号发射设置该模块实现对rda5820配置,根据需要这里将模式设置为发射,频率配置为93.6,发射功率设置为最大。以下是所有相关配置函数的调用:rda5820_band_set(0); /设置频段为87108
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智慧医疗创新驱动的医疗模式探索
- 高效安全教育培训策略的实践与分享
- 在医疗科技中寻找家庭教育的灵感为孩子的全面发展提供支持
- 编程教育培养学生科技素养的课堂活动设计
- 教育行业的创新型组织文化建设
- 客户服务与售后支持的现代趋势
- 智能教育引领未来人才培养的浪潮
- 科技助力客户服务问题处理的新模式
- 现代教育中家长沟通的关键技巧
- 艺术教育实践中的教师专业成长
- 2025年湖南高速铁路职业技术学院高职单招高职单招英语2016-2024年参考题库含答案解析
- 2025江苏太仓水务集团招聘18人高频重点提升(共500题)附带答案详解
- 2024-2025学年人教新版高二(上)英语寒假作业(五)
- 借款人解除合同通知书(2024年版)
- 江苏省泰州市靖江市2024届九年级下学期中考一模数学试卷(含答案)
- 沐足店长合同范例
- 《旅游资料翻译》课件
- 2024年安徽省中考数学试卷含答案
- 2024年湖南省公务员录用考试《行测》真题及答案解析
- 中国证监会证券市场交易结算资金监控系统证券公司接口规范
- 2025届天津市部分学校高三年级八校联考英语试题含解析
评论
0/150
提交评论