3无线电子琴小组总结报告_第1页
3无线电子琴小组总结报告_第2页
3无线电子琴小组总结报告_第3页
3无线电子琴小组总结报告_第4页
3无线电子琴小组总结报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、无线电子琴目录1.项目摘要42.43. 项目设计背景和实施方案43.1 项目背景43.2 实施方案44. 项目功能指标和实现情况44.1 基本功能实现情况44.2 扩展功能实现情况55. 系统设计方案55.1 原计划设计方案55.2 最终实现方案55.3 开发环境75.3.1 硬件开发环境75.3.2 软件开发环境76. 各模块工作原理76.1 LaunchPad 与矩阵键盘76.2nRF905 无线与接收模块86.2.1 概述86.2.2 引脚说明96.2.3 时序图和接收时序图96.2.4流程106.2.5 接收流程116.3 主模块136.4 VGA 输出模块156.4.1 加载按键15

2、6.4.2机制156.4.3.串口通讯166.4.4 3D 小球的绘制167. 项目测试及结果197.1 LaunchPad 与矩阵键盘197.2nRF905 无线与接收模块197.3 主模块208.项目实施总结及心得体会219.致谢2210.参考文献2211.附录2211.1 电路图2211.1.1 LaunchPad 和 5*4 矩阵键盘的连接图2211.1.2 无线模块 nRF905 与 430F2619 的连接图(无线信号接收部分)2311.1.3 无线模块 nRF905 与 LaunchPad 的连接图(无线信号部分)2311.1.4 音色选择电路2411.2 组员信息和团队分工24

3、2无线电子琴11.2.1 组员信息2411.2.2 团队分工2411.3 元器件11.4 源码.24.2611.4.1 主程序2611.4.2 无线.2611.4.3 VGA 显示2611.5.TI 创新项目成果展示.263无线电子琴1.项目摘要本项目以 MSP430 为设计并实现一个无线电子琴,该装置能够实现用数字键产生“1,2,3,4,5,6,7”对应音调的电子琴功能,并通过无线传输实现按键输入的音乐输出,同时用界面显示输出电子琴发音音调、音阶和幅度等信号参数,在此基础上添加若干扩展功能。Abstract: This project produces a wireless electron

4、ic piano based on TI's MSP430 single-chip. This device will implement functions of a typical piano, and can also be played with a wireless keyboard, meanwhile the tones, scales, amplitudes will be displayed on LCD. Moreover, it can create songs automatically and record songsthat have been played

5、. It can also be connected with PC to produce more fun.2.电子琴设计,MSP430,LCD 显示,VGA 接口,无线键盘Key Words: electroeyboard ,MSP430 ,LCD, VGA port, Wireless input3. 项目设计背景和实施方案3.1 项目背景电子琴是以键盘形态出现的一种乐器, 于乐音与振动频率之间有着一一对应的由音色、自动节奏, 自动和弦三大部分组成。由, 所以我们可以通过单片机内部的定时/计数器T0 来产生不同频率的方波, 驱动喇叭发出不同音节。再利用延迟来发音时间的长短, 即可以音调的

6、节拍。3.2 实施方案我们通过编写乐曲驱动脉冲的频率和持续时间,为了通过不同按键输出不同的音调,需要实现键盘输入识别功能,并且需要建立一张表,使键入字符与频率及其他功能建立对应。项目计划用 LCD 输出显示界面显示输出电子琴发音音调、音阶和幅度等信号参数,同时通过 VGA 输出接口实现电子琴界面。本项目以 MSP430 作为主控,接收来自无线键盘的输入信息,产生相应的信号给 DDS从外部,以产生音频输出,同时或保存相应的文件。LCD 与 VGA 产生对应的显示。需要或保存时,为了实现多种功能,程序内设多种模式,通过键盘进行切换。每种模式有着相应的显示, 切换模式时相应的显示同时切换,同时实现不

7、同的功能。例如:切换到节拍器模式时,屏幕上显示节拍器的频率,能够通过无线键盘调整其频率并在屏幕上实时显示,按下对应按键开始对应频率的节拍,再次按下该按键则停止。4. 项目功能指标和实现情况4.1 基本功能实现情况(1) 具有使用数字键产生“1,2,3,4,5,6,7”即电子琴应音调的电子琴功能;以及 5 个黑键共 12 个对4无线电子琴(2) 可通过 nRF905 无线传输模块实现按键输入的音乐输出;(3) 可通过按键增大或输出波形幅度,即增大或减小乐音音量;(4) 可通过按键抬高或降低输出音阶(至少有三组);(3)(4)由外界按键输入选择产生电子琴发音的音调、音阶和幅度;界面显示输出电子琴发

8、音音调、音阶和幅度等信号参数,可切换到相应模式通过按键调节这些参数;(5)将特定音乐的曲谱按一定规则转换成数据文件并放入,由此实现特定音乐的自动;4.2 扩展功能实现情况(1) 扩展输出音阶组数,以中音为中心共输出五组音阶;(2) 界面显示节拍器模式,通过按键选择节拍器输出;(3)乐曲记忆功能,可并重播用户通过键盘敲击输入的乐曲。(4)通过 VGA 输出接口实现电子琴界面,并可显示乐音频率高低和节拍器。5. 系统设计方案5.1 原计划设计方案以 MSP430 作为主控,接收来自无线键盘的输入信息,产生相应的信号给 DDS,以产生音频输出,同时LCD 与 VGA 产生对应的显示。需要或保存时,从

9、外部或保存相应的文件。框图表示如下:MSP4305.2 最终实现方案随着课程设计的进一步深入,我们发觉原来的设计方案以下面的问题。一是的 DDS的选型问题,经过查找相关资料及汇总讨论发现我们原计划DDSAD9854 管脚较多且价格较贵,故打算改用廉价但又能满足我们需求的 AD9830,后来我们又详细了解了电子、中音、低音的频率和实验箱上的 DA 模块,输出三组音阶时对应的频率如下表所示,考虑到后期可能扩展到 5 组音阶输出的情况(最高频率约为 4KHZ),我们认为用 261 实验箱上的 DA 模块可以完成需要的数模转换,我们先进行软件室用示波器进行了调试,输出频率范围满足我们的需求。至此确定不

10、用 DDS,并在实验,而直接5无线键盘声音输出功放(LM386)DDS外部(预设音乐和用户音乐)VGA输出(4:3)LCD输出(4:3)无线电子琴用实验板上的 DAC12 模块完成数模转换。电子琴音符频率表二是无线模块的选型问题: 在最初设计方案中由于系里和 TI 公司可以提供EMB-2520-RF-A_RM 标准无线通讯模块,所以我们计划采用该模块进行无线通讯。项目进行到中期时我们通过查找资料发现该无线模块文档太少,开发难度大,几乎没有范例代码,我们无从下手。唯一的范例代码还要依赖基板,而基板是不应该使用的,我们与商量后决定的描述。采用应用更的无线模块 nRF905,该的具体特点可见无线收发

11、部分三是去掉原计划用于预设音乐和用户音乐的外部器 SD 卡,我们在中后期音频处理部分把预设音乐和用户音乐以一定规则转换成数据文件,并以常量数组写入。这样虽然有掉电的确定,但简化了我们设计预设音乐、用户音乐的过程,并节省了SD 卡的开销;另一方面,我们调试过程中发现输出电压足够大,不需要再用功放进行放大,可直接输出到外接,所以我们调试过程中直接用小音箱输出,这样也有利于我们集中精力进行电子琴各项功能和无线收发的设计。MSP430F2619主程序的软件流程图如下:65*4矩阵键盘LaunchPadnRF905无线模块音箱输出音色选择有线键盘DAC12模块nRF905无线接收模块VGA输出(4:3)

12、LCD输出(4:3)低音音符频率 HZ中音音符频率 HZ高音音符频率 HZ1261.631523.2511045.52293.672587.3321174.663329.633659.4631318.514349.234698.4641396.925391.995738.9951567.986440.006880.0061760.007493.887987.7671975.52无线电子琴开始NP1端口中断是否被关闭?Y5.3 开发环境5.3.1 硬件开发环境LSD-TEST430F2619 开发实验箱,LaunchPad5.3.2 软件开发环境IAR Embedded Workbench fo

13、r MSP430 V5.40 Microsoft VISIOProteus Professional_R2011BAdobe Photoshop CS5 Eclipse6各模块工作原理6.1LaunchPad 与矩阵键盘LaunchPad(MSP430G2553)与5*4 矩阵键盘的连接如下图所示,其中P2.2-P2.0 及P1.5-P1.4为列扫描引脚,初始化为输入,P1.3-P1.0 为行扫描引脚,初始化为输出。扫描原理如下:首先 P1.3-P1.0 初始化为低,检测列扫描引脚的,若有键按下,7开启P1端口中断根据矩阵键盘键值变量进行对应按键操作LCD显示模式1初始界面LCD显示欢迎界面初

14、始化系统无线电子琴则五个不为全高,根据对应的值可以确定列;然后依次对行扫描引脚置低(其他行扫描引脚均为高),若列扫描引脚出现低,则为该行。VCC0R110KR210KR310KR410KR510KP2.2P2.1P2.0P1.5S1S2S3S4S5P1.4P1.3S6S7S8S9S10P1.2S11S12S13S14S15P1.1S16S17S18S19S20P1.06.2 nRF905 无线6.2.1 概述与接收模块nRF905 单片无线收发器是挪威公司推出的单片射频,工作电压为Nordic1.9-3.6V,32 引脚 QFN 封装(5mm×5mm) ,工作于 433/868/91

15、5MHz 共 3 个 ISM 频道(可以由频率使用)。其工作在 433/868/915MHZ 的 ISM 频段,是一个完全集成的频率调制器,器、接收解调器、功率放大器、晶体振荡器、调制器等功能模块组成,不需要外加声表滤波器也可以有良好的通信效果。nRF905 使用 SPI 接口可以和任何 MCU 进行通信, 其中地址、输出功率和通信频道可通过程序进行配置,所以可以用于多机通信。nRF905 融合了 ShockBurstTM 技术,可以自动处理数据包字头,且内置 CRC 校验功能,确保数据可靠传输。该器件有 4 种工作模式,即模式,接受模式,掉电模式和 standby 模式。工作在收发状态时即为

16、工作在 ShockBurst 模式。该模式的特点是自动产生前导码和 CRC,客户以很容易通过 SPI 口进行编程配置。电流消耗很低,在为-10dbm 时发射电流为 11mA,接收电流为 12.5mA.进入 powerdown 模式以后可以很容易实现节电。适合工业线及安全系统等诸多领用。、无本项目中用MSP430作为主控,分别以两片nRF905作为无线和接收模块,用IO82121212121无线电子琴口来模拟SPI通讯,移植到其它单片机上十分容易。相应的引脚连接在COMMUNICATION.H程序来的定义里,具体可参考相应程序。nRF905模块的调试中要注意以下几两点,一是接收和模块的配置要一致

17、,二是程序不能正常工作,很有可能是配置不正确或配置命令没有正确写入。检验配置是否正确的最简单的就是,nRF905时钟输出,并改变不同的频率输出,用示波器观测输出频率与设置的频率是否一致即可。6.2.2 引脚说明6.2.3时序图和接收时序图时序9管脚名称管脚功能说明1VCC电源电源+1.9-3.6V DC2TX_EN数字输入TX_EN=1 TX模式;TX_EN=0,RX模式3TRX_CE数字输入使能发射或接收4PWR_UP数字输入上电5uCLK时钟输出模块中该引脚废弃,便于兼容6CD数字输出载波检测7AM数字输出地址匹配8DR数字输出接收或发射数据完成9MISOSPI 接口SPI 输出10MOS

18、ISPI 接口SPI 输入11SCKSPI 时钟SPI 时钟12CSNSPI 使能SPI 使能13GND数字地接地14GND数字地接地无线电子琴接收时序6.2.4流程Ø当微器有数据要时,通过模拟 SPI 的 IO 接口按时序把的地址和要的数据送传给 nRF905,IO 接口的速率在通信协议和器件配置时确定;ØØ微器置高 TRX_CE 和 TX_EN,激发 nRF905 的 ShockBurstTM模式;nRF905 的 ShockBurstTM(1) 射频寄存器自动开启;(2) 数据打包(加字头和 CRC:);数据包;(3)(4) 当数据完成,数据准备好引脚被置高

19、;AUTO_RETRAN 被置高,RF905 不断重发,直到 TRX_CE 被置低;ØØ当 TRX_CE 被置低,RF905过程完成,自动进入空闲模式。由上述步骤可得以下流程图:10无线电子琴6.2.5 接收流程ØØØØØ当 TRX_CE 为高、TX_EN 为低时,nRF905 进入 ShockBurstTM 接收模式;650us 后,nRF905 不断监测,等待接收数据;当 nRF905 检测到同一频段的载波时,载波检测引脚被置高; 当接收到一个相匹配的地址,AM 引脚被置高;当一个正确的数据包接收完毕,nRF905 自动

20、移去字头、地址和 CRC 校验位,然后把 DR引脚置高ØØØØ微微器把 TRX_CE 置低,nRF905 进入空闲模式;器通过 SPI 口,以一定的速率把数据移到微器内;当所有的数据接收完毕,nRF905 把 DR 引脚和 AM 引脚置低;nRF905 此时可以进入 ShockBurstTM 接收模式、ShockBurstTM模式或关机模式。由上述步骤可得如下接收流程图:11无线电子琴NTRX_CE=HIGH?Y检测到频道被占用,CD被置高地址正确?YDR被拉低AM被拉低DR被拉低AM被拉低CRC正确?YYTRX_CE=HIGH?N12进入延时等待状态保

21、持接收状态DR被置高MCU通过IO口数据MCU通过IO口数据接收数据AM被置高NAM被拉低NPWR_UPZ置高, TX_EN置低待初始化系统无线电子琴6.3 主模块主模块基于 LSD-TEST430F261X 实验平台,它的系统层次图如下图所示:其中 DAC、DMA、Timer、UART 等为 MSP430F2619 内置的模块,矩阵键盘、LCD 为LSD-TEST261X 上已有的模块,无线模块为另外添加的模块。各模块通过内置、印刷电路板、外接排线等方式与 MSP430F2619 连接。组成主系统。模块连接完成之后,并不能直接进行工作,仍然需要在代码中进行一定的初始化设置之后才能使用。以下按

22、照实际代码中初始化的顺序对初始化的具体过程进行解释。Ø初始化 MSP430F2619:MSP430F2619 中包含 DAC、DMA、Timer、UART 等多个模块,需逐一进行初始化。a)初始化系统时钟该步骤初始化 MSP430F2619 中的基础时钟模块+(basic clock module+),基础时钟模块+为 MSP430F2619 提供了供整个使用的系统时钟。在本项目中,基础时钟模块+从内部的时钟源DCOCLK 获得时钟信号,并提供ACLK、MCLK、SMCLK 三个时钟信号供系统使用。由于 IAR 提供的头文件中已经包含了可读性良好的定义设置,因此可不必具体关注其设置,

23、仅将 DCOCTL 的值设置为 CALDCO_16MHZ,BCSCTL1 设置为 CALBC1_16MHZ,使系统时钟为 16MHz 即可。b) 初始化端口MSP430F2619 提供了 8 个端口 P1P8,每个端口提供 8 个 I/O 引脚。每个 I/O 引脚均可以设置为输入/输出状态,也可以进行读写操作。其中,P1 与 P2 端口更支持设置为中断引脚,可用其的上升沿跳变或下降沿跳变作为中断的触发信号。使用 MSP430F2619 的各端口引脚进行输入输出之前,应当指定其为输入或输出引脚。对于部分复用引脚,还应当设置其功能选择寄存器以选择该引脚功能。具体端口设置如下所述:llLCD 屏幕所

24、用端口均设为输出引脚。按键指示用 LED 灯使用的引脚 P5.7 设置为输出引脚,并输出高以表明“正在进行系统初始化”。llUART 模块使用的引脚P4.1 则将其设置为输出引脚,并输出低以打开通讯模块。COM 口输出使用的 P3.4 引脚设置为输出引脚,并设置其为功能 2。13无线电子琴l(被废弃)音频输出部分需将音频电源、开启 TPA301 与数字电位器对应的端口均设定为输出模式。然后音频电源所使用的端口 P3.1 与 TPA301 使用的端口 P6.1 设置输出为低以开启。l无线模块由于是通过排线与 MSP430F2619 进行连接,因而端口设置较为。具体设置时,将 P4.5、P4.7、

25、P5.0、P5.1、P5.5、P5.6 均设置为输出引脚,P5.2、P5.4设置为输入引脚,P2.7 开启中断并设置为上升沿触发。l开发板上矩阵键盘与键盘均需设置端口与中断触发,但由于键盘的特性不同,其端口设置与中断触发设置也有所不同。对于键盘,先将其对应端口的上拉电阻打开,再开启 P2.0P2.3 的中断并指定为下降沿触发,默认其为输入端口。而对于矩阵键盘,由于其按下的按键的方式不同于键盘,因而初始化其端口的方式也不同。其端口高四位设置为输入引脚,低四位设置为输出引脚。所有的输入引脚均开启中断并设置下降沿中断触发。初始化定时器c)MSP430F2619 中两个 16 位计时/计数器 Time

26、r A 与 Timer B。两个计时器均拥有多个捕捉/比较寄存器。本项目中使用 Timer A 作为 DMA 的输出光。,Timer B 作为 LCD 屏幕的背Timer A 的初始化较为简单,设置其寄存器为 TASSEL_2+MC_1+TACLR 即可。该设置表明其时钟源为 SMCLK,使用连续计数模式,同时清空计数器 TAR。然后将捕捉/比较寄存器 TACCR0 的值暂时设为 1 即可。Timer B 的初始化类似于 Timer A,寄存器的设置与 Timer A 相同。然后设置其捕捉/比较寄存器 TBCCR0 为 2000,TBCCR6 的值为 1000,然后设置捕捉/比较寄存器 6 的

27、设置为OUTMOD_6 以设置其 PWM 输出模式。d) 初始化 DACMSP430F2619 中的 DAC 模块为 12 位数模转换模块。本项目中由于不要求高精度,仅使用其 8 位模式。在使用 DAC 模块之前,应首先打开内置的 ADC 模块的参考基准,然后设置DAC 模块的设置寄存器 DAC12_0CTL,使该 DAC 模块工作于 8 位不放大高速输入输出模式, 并开启校准与打开该模块。送给 DAC 模块进行数模转换的数据将于稍后由 DMA 传输。e) 初始化 DMADMA,全称Direct Memory Access(直接内存传输数据的模块,可用于高速传输数据。),是一个不需要 CPU

28、进行操作即可初始化 DMA 时,需指定其传输数据的源地址与目的地址以及待传输数据的长度。之后设置DMA 字为 DMADT_4 + DMASRCINCR_3 + DMASWDW + DMAEN,开始源地址增加的单字重复传输。f)初始化 UARTMSP430F2619 上的 UART 模式由 Universal Serial Communication Interface(通用串口通信界面,USCI)提供。对其进行初始化时,首先将 USCI 设置中的 UCSWRST 置位以初始化寄存器,再设置其使用的时钟源为 SMCLK,接下来根据 SMCLK 的频率设置 UCBRx 与 UCBRFx 以设置波特

29、率。最后复位 USCI 设置中的 UCSWRST。Ø初始化无线模块14无线电子琴无线模块提供了丰富的范例代码以对其进行初始化。实际编写代码时,仅需使用已编写好的函数进行初始化,再设置为接收模式即可。初始化 LCDLCD 模块由利尔达公司提供了足以令其正常工作的范例代码。实际初始化时,调用相关Ø函数即可。6.4 VGA 输出模块系统工作原理为使用 java3d 绘制背景及三维圆球,并将键盘及滑块控件添加到显示面板,使用 java 的机制的时间触发来使小球按照设定的速度上下移动,通过 com 口通讯的音阶确定小球的位置。工作流程如下:6.4.1 加载按键键盘的布局都是有规律的,

30、中间有 7 个如下的按键,作为一个八度,共 7 个八度,然后两侧单独初始化。6.4.2机制通过改变图片以及键长显示按键落下效果。 public void setImage_down() 15无线电子琴在主函数中使用key.on()函数及key.off()函数即可如下命令可以将键盘置于初试状态,没有按键落下:相应按键的按下或放开。使用for(int i=0;i<87;i+) Key_Piano key2=Panel_Piano.pianoKeysi;key2.off();使用如下命令将编号为num的按键置于落下的状态,最终仍由初始化命令将其放开。因为无线电子琴一次只需响应一个按键:Key_

31、Piano key2=Panel_Piano.pianoKeysnum; key2.on();6.4.3.串口通讯使用如下命令寻找串口6.4.4 3D 小球的绘制背景知识:JAVA 3D 从次为开发者提供对三维实体的创建、和着色,使开发工作变得极为简单。同时,JAVA 3D 的低级 API 是依赖于现有的三维图形系统的,如 Direct 3D、OpenGL、QuickDraw 3D 和 XGL 等,它可以帮助我们:A. 生成简单或复杂的形体(也可以直接调用现有的三维形体)B. 使形体具有颜色、透明效果、贴图。C. 可以在三维环境中生成灯光、移动灯光。D. 可以具有行为(Behavior)的处理

32、E. 可以生成雾、背景、声音等。能力(键盘、鼠标、定时等)16portList = CommPortIdentifier.getPortIdentifiers(); while (portList.hasMoreElements() portId = (CommPortIdentifier) portList.nextElement();if (portId.getPortType() = CommPortIdentifier.PORT_SERIAL) if (portId.getName().equals("COM4") SimpleRead reader = new S

33、impleRead();serialPort.setSerialPortParams( 9600,SerialPort.DATABITS_8, SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);this.setIcon(images.get(ch+"_down"); if(this.blackOrWhite=WHITE)this.setSize(this.getWidth(), length+change);public void setImage_up() this.setIcon(images.get(ch+"&quo

34、t;); if(this.blackOrWhite=WHITE)this.setSize(this.getWidth(), length);无线电子琴F. 可以使形体变形、移动、生成三维动画。G. 可以编写非常复杂的应用程序,用于各种领域如 VRJAVA 3D 的这种体系结构既可以使其开发的程序“到处运行”,又使其能充分利用系统的三维特性。就因为 JAVA 3D 拥有如此的强大的三维能力,使得它在中能大展姿彩。世界,特别是在小球左右移动,读出串口缓冲区的字符,根据相应字符修改小球的位置。如果为零,按键还原,减号为降低一个八度,加号为升高一个八度.String voice=new String(

35、readBuffer);switch(readBuffer0)case '0':for(int i=0;i<87;i+)Key_Piano key2=Panel_Piano.pianoKeysi;key2.off(); break;case '-': relative-=0.28;break;case '+':relative+=0.28;break;default: int tempp=readBuffer0;if(tempp>=65&&tempp<=76)temp=(readBuffer0-'A

36、9;)*0.025f;break;xloc=relative+temp;if(xloc<-0.9) xloc=-0.9;relative=-0.9; if(xloc>0.9) xloc=0.9;relative=0.9; System.out.println("xloc "+xloc); readBuffer0='0'节拍器,在面板上面添加滑块,通过修改滑块的值改变计时器的频率,从而修改小球运动速度,达到修改节拍的目的.17public void stateChanged(ChangeEvent e) JSlider source = (JSli

37、der)e.getSource(); if (!source.getValueIsAdjusting() height += .08* sign;if (Math.abs(height * 2) >= 1) sign = -1.0f * sign;/System.out.println("height"+height);if (height < -0.4f|height>0.4f) trans.setScale(new Vector3d(1.0, .6, 1.0); else trans.setScale(new Vector3d(1.0, 1.0, 1.

38、0);trans.setTranslation(new Vector3f(float)xloc, height, 0.0f); objTrans.setTransform(trans);无线电子琴打节拍演奏中18int fps = (int)source.getValue();timer.stop();timer=new Timer(fps,this); timer.start();elsetimer.start();无线电子琴7.项目测试及结果7.1LaunchPad 与矩阵键盘之前我曾用输出高读入瞬间不能被正确地波器有电阻),经过,检测按下键出现高的办法做行列扫描,结果发现高在,经过调试发

39、现是硬件的问题,而且使用示波器也无法观察(示提示使用 LauchPad 的上拉电阻 PxREN 命令,结果电压过低仍无法高,所以修改了键盘扫描的程序,使用外置的上拉电阻,采用低检测的方式才终于。外接晶振被焊坏,改变了时钟源,选择最高的时钟,后来才知道 nrf905 自带振荡器,外部时钟的频率大小对其正常工作影响不大。7.2nRF905 无线项目中无线与接收模块和接收的部分分别由和我负责,我们先查阅 nRF905 的用户手册和应用实例确定 nRF905 于主控的连接并编写出和接收的代码,软件和硬件都准备就绪后开始无线和接收的联调。以往各种实验的经验告诉我不可能这么顺利就调通,果不其然,两边不能顺

40、利和接收,我们在 Debug 模式下,收数据,但我们不知道究竟是那边显示数据出去后,我这边一直在循环延时以等待接端的问题还是接收端的问题,一时也想不到好的解决。正在一筹莫展之际,我们无意中让无线模块 nRF905 的天线靠近了输出音频的音箱,音19无线电子琴箱发出了“兹兹”,这说明数据出来了,问题在接收模块或接收和模块的配置不一致!于是我继续在 Debug 模式下调试,并用示波器依次观察 TX_EN、TRX_CE、PWR_UP、uCLK、AM、DR、MISO、MOSI、SCK、CSN 等几个与接收数据使能和是否结束有密切的引脚的变化。这发现了不对的地方,DR 引脚应该是在一个数据包接收完毕后才

41、被置高,但程序单步执行到把 P4.5、P4.7、P5.0、P5.1、P5.5、P5.6(分别接 TX_EN、TRX_CE、PWR_UP、MOSI、SCK、CSN 几个引脚)初始化为输出之后 DR 就变成高了,我之前以为与与 AM、DR、MISO 连接的 P5.4、P2.7、P5.2 几个端口默认为输出。后来了解到不能对 AM、DR、MISO 进行写操作,故与 AM、DR、MISO 连接的 P5.4、P2.7、P5.2 必须初始化为输入到主控。这样修改之后,几个重要引脚的时序是对的,但仍然不能顺利收发。我初步是寄存器的配置有问题,代码中寄存器的初始化如下:其中最后一个字节0x5d=(010111

42、01)B,BIT2为输出时钟使能,为“0”代表没有外部时钟,为“1”时表示外部时钟信号使能 (默认),我们此时配置就不对了。修改其值后寄存器的配置如下:时钟输出,那么最后字节字节的和接收两端都按上述修改寄存器的配置后,接收部分在Debug模式下便能正确收到端的数据了。这时我也深深体会到在飞思单片机原理与设计课堂上每次课必说的一句话:“对MCU外部管脚和内部模块的正是通过对寄存器的来实现!”7.3 主模块早期开发时,发现由于该 LCD 模块的行写入特性,所有待写入的区块的行宽必须为 3 的倍数。解决方案为在设计界面时,将界面上的所有元素全部按该要求设计。最终实际界面能够在满足该要求的前提下足够美

43、观。20struct RFConfigunsigned char n; unsigned char buf10;RxTxConf =10,0x6c,/CH_NO,配置频段在 430MHZ0x0c,/输出功率为 10db,不重发,节电为正常模式0x44,/地址宽度设置,为 4 字节0x08,0x08,/接收有效数据长度为 8 字节0xcc,0xcc,0xcc,0xcc,/接收地址0x58/CRC,8 位CRC 校验,外部时钟、信号不使能,16M 晶振;struct RFConfigunsigned char n; unsigned char buf10;RxTxConf =10,0x4c,0x2

44、c,0x44,0x02,0x02,0xcc,0xcc,0xcc,0xcc,0x5d;无线电子琴早期开发时,由于未设置系统时钟,导致输出频率仅能勉强满足设计需求。同时无法通过计算得出对应输出频率所需时延。设置系统时钟之后,不仅输出频率满足要求,最小频率间隔也得到了减小。音频一开始使用了开发板上的 TPA301 以方便调试。但由于该低通滤波质量较差,产生的音色较差。同时其开关周期及处理用时较长,无法进行短暂的音乐暂停。因而后期直接将 DAC 输出连至音箱。之后又制作了一小块板子方便其连接。停止音频址”方案,在一开始尝试了多种方案,最终选定在弹奏模式时使用“改变 DMA 接收地过程中的短暂停止使用“

45、产生超高频输出”方案。整合无线接收模块时,发现需要在接收到的时候产生中断,不然无法实现停止功能。将由于接收到信息的时候,DR 引脚会变为高,处理完全部接收信息之后恢复低该引脚接到可以触发中断的 P2.7 引脚并设置中断之后,问题解决。测试无线键盘时,按下左右键切换模式时很容易使无线键盘无法工作。Debug 时发现无线键盘无法工作时,DR 引脚保持高不变。分析之后确认为有接收到的数据没有处理。在无线触发的中码的最后加入多次空接收代码之后问题解决。8.项目实施总结及心得体会综上所述,我们的项目不仅完整地实现了无线电子琴的各种基本功能要求,还实现了乐谱记忆、节拍器、VGA 接口显示功能显示等较为复杂

46、的功能,同时界面显示友好美观,能在各种测试条件下保持稳定的性能,算是圆满完成了设计任务。硬件课程设计毕竟不同于我们以往电路实验、电子线路设计、汇编原理等功能比较单一的课程实验,它需要我们综合C 语言 电子技术 原理与设计等课程中的相关技术和理论问题,在硬件和软件上均完成一个完整系统的设计,对于没有什么项目经验的我们来说的确是不小的神。,另一方面也有助于我们提升实践创新能力和培养团队合作精相信每个小组的硬件设计过程都是十分曲折的,我们小组也不例外,无线模块的选型便是其中一个方面。由于我们的设计课题是“无线电子琴”,无线模块的设计自然是很重要,我们开始也把这部分放在举足轻重的位置,最初设计方案中由

47、于系里和 TI 公司可以提供EMB-2520-RF-A_RM 标准无线通讯模块,所以我们计划采用该模块进行无线通讯。16 周之前我们初步完成了 LCD 输出、VGA 输出、数模转换、键盘扫描几部分,17 周我们查阅了很多资料,发现 EMB-2520-RF-A_RM 标准无线通讯模块参考文档太少,开发难度大,几乎没有范例代码,我们无从下手。唯一的范例代码还要依赖基板,而基板是不应该使用的,我们与汪小燕商量后决定采用应用更的无线模块 nRF905。后来忙于期末无线部分没有什么进展,考完试后我们便与汪,得知我们只是完成了数模转换,电子琴并没有真正“”提醒我们注意进度,同时要注意把精力集中到主线上-电

48、子琴的基本功能,不要舍本逐末。我们也听从的建议,马上完善电子琴输出、基本弹奏、音调等的调节这些部分,这些全部完成之后已经是 20 周的周三,我们立刻开始无线部分的设计,同时 LCD 显示优化、VGA 显示、音色选择等多条幅辅线并行,到 20 周周日晚上基本完成无线接收的联调和主程序的整合。回想这一个多的日子,我们已经和编写的代码、电路和电子琴的每个输出音符融为一体,小组的成员都到了废寝忘食的地步,然而再辛苦,看21无线电子琴着我们做出来的无线电子琴心中就很欣慰了,我相信有了这份坚持与执着,我们会在以后的学习研究中走得更远!9.致谢在这次硬件课程设计的过程中,我和我们小组得到了许多人的帮助,特在此致谢。首先,特别感谢我们的指导。汪从课程设计一开始就特别关注项目的进度,经常通过邮件、和等方式和我们交流,给我们提供相关的参考资料,并对我们的方案提出了很多非常宝贵的建议,在我们的无线部分没有进展提醒我们要抓准主线。项目进行的过程中,汪为我们提供了舒适的实验环境,全天开放也让整个项目的进度能够快很多,甚至牺牲的休息时间在周末过来给需要做实验的同学开门,关注每个小组的进展和遇到的,并及时提供帮助。还要感谢其他组的成员,我们有的是相同的实验平台,有的是相似的课题,和他们的交流让我们

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论