毕业设计:一种简易的语音通信系统(无线)_第1页
毕业设计:一种简易的语音通信系统(无线)_第2页
毕业设计:一种简易的语音通信系统(无线)_第3页
毕业设计:一种简易的语音通信系统(无线)_第4页
毕业设计:一种简易的语音通信系统(无线)_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、一种简易的无线通信系统设计 摘要: 随着单片机功能集成化的发展,其应用领域也逐渐地由传统的控制,扩展为控制处理、数据处理以及数字信号处理(DSP,Digital Signal Processing)等领域。本设计是基于单片机控制的短距离无线语音通信系统,具有抗干扰性能强,可靠性高,安全性好,受地理条件限制少,安装灵活等优点,在许多领域有着广泛的应用前景。本系统采用凌阳SPEC061A单片机的语音功能,借助nRF2401A的无线收发模块,实现简易的双向无线语音传输功能。 关键词:凌阳SPEC061A;nRF2401A;单片机,无线语音传输Abstract:Along with the devel

2、opment of single-chip function integration, and its application field also gradually from the traditional control, expanded to control Processing, data Processing and Digital Signal Processing (DSP, Digital Signal allow), etc. This design is based on single-chip microcomputer control short-range wir

3、eless voice communication system, has the strong anti-jamming performance, high reliability, good safety, less influenced by geographic restrictions, installation, flexible, and other advantages in many fields has wide application prospects. The system USES the SPEC061A MCU speech function of sunplu

4、s, by nRF2401A wireless transceiver module, achieve simple two-way radio voice transmission function.Keywords: LingYang SPEC061A; RF2401A; Microcontroller;wireless voice transmission目录1.绪论31.1引言31.2 内容编排42.设计任务要求52.1设计任务52.2毕业设计要求53.设计方案介绍63.1 方案简介63.2 SPEC061A单片机介绍73.2.1 资料介绍73.2.2 结构介绍83.2.3 小结:10

5、3.3 NRF2401无线模块介绍113.3.1 资料简介113.3.2 应用电路简介133.3.3 小结:134.硬件设计与实现144.1 单片机硬件设计144.1.1 系统总体框图144.1.2 系统工作原理154.1.3 连接结构框图164.1.4 SPCE061A周围电路模块选择174.2 nRF2401模块硬件设计214.2.1 nRF2401A 及其外围电路214.3小结:225.系统软件设计与实现235.1 软件总体设计235.1.1主程序235.2 子程序设计255.2.1录音子程序255.2.2放音子程序265.3 初始化265.3.1初始化程序275.4 数据发送程序295

6、.5 数据接收程序325.5其他程序335.6 系统编程简介345.6.1 系统软件要求:346.总结387 致谢398. 参考文献409.附 录411.绪论1.1引言通信,也就是人与人之间的信息交流,纵观历史从最初的只有面对面的交流才能达到信息交流的目的发展到现在,我们的通信技术,是古人所不敢想象的,从古到今,我们人类完成了一场漫长的通信革命,打破了传统信息交流的各种约束,不受时空等各种客观因素的限制。科技的发展,各种技术的涌现,为的是服务人类,让人类能够最方便舒适的达到想要实现目的。近年来,随着无线通信技术的迅猛发展,无线技术在人类生活中有着广泛的应用,无线数据传输在人类社会随处可见。无线

7、传输技术方面的不断发展,使得各种各样高速,方便的无线通信产品涌现在我们眼前。人类在物质和精神方面的追求是无穷无尽的,所以对知识技术的追求也是五穷无尽的,我认为将来大部分通信将通过无线技术来实现,不久的将来有线通信将成为历史。就通信技术而言,建立一个通信系统需要考虑很多因素,要因地制宜,考虑多方面的技术才决定采取怎样的核心技术,无线通信技术还处于一个刚起步的状况,要取代有线通信技术的主导地位还是有很长的路要走,相信不久的将来,无线技术将会处于通信技术的主导地位,配合有线通信的辅佐,人类之间的交流将更方便,不受时间,地点等各种客观因素的约束。本设计是基于单片机控制的短距离无线通信系统,采用凌阳SP

8、EC061A单片机的语音功能,借助于nRF2401A无线收发芯片,实现简易的双向无线语音传输功能。本通信系统立足于实现短距离信息交流,能够实现约50m以内既无线语音通信,体积小巧,信号稳定,为人类在一定范围内进行语音交流提供了很大的方便。1.2 内容编排一.绪论主要讲述个人对无线技术的一些观点,以及系统的基本描述。二.设计任务要求主要介绍毕业设计的题目以及学校所下达的要求目标。三.设计方案介绍主要讲述了系统器材的选择,以及系统可行性的分析。四.系统硬件设计与实现本设计论文的核心内容,讲述整个系统的总体原理框图,以及各部分模块的原理电路图分析。 五.系统软件设计与实现主要讲述系统各部分的编程以及

9、软件实现。 六.总结七.致谢八.参考文献 九.附录2.设计任务要求2.1设计任务运用所学的专业知识,设计一种简易的无线通信系统2.2毕业设计要求该系统,包括一台主机、一台或一台以上从机,采用无线模块发射和接收,适合会场或教室等小范围内使用,选择合适的收发模块和微处理芯片。要求系统功耗低、辐射小、使用简单、便于安装等。具体工作包括:1 选择合适的收发模块和微处理芯片并指出其特性。2 阐明总体的设计思路及系统工作原理。3 设计系统主要工作程序和各模块程序。4 绘出系统的电路图、注明主要元件的规格、型号和数据。5 完成电路装配、调试和优化改进。6 写入程序运行、调试,能演示。最终提交: 1,毕业设计

10、说明书; 2,控制模块电路板实物; 3,电路原理图; 4,系统驱动程序。3.设计方案介绍3.1 方案简介随着单片微型计算机技术的成熟与发展,单片机的应用在人类生活中随处可见,为人类物质生活提供了很大的方便。经过相关资料的查阅,了解到凌阳SPEC061A单片机具有相当多的功能,用它和nRF2401来做无线语音通信是绝对可行的,在此设计过后,还可以用它来实现其它自己感兴趣的设计。总体设计思路如图3-1所示: 图3-1 设计思路我认为一个方案的决定基于两点,方案的可行性和个人兴趣爱好,经过资料的搜寻后决定用凌阳SPEC061A + nRF2401这一组合,用此组合来实现无线语音通信的确有点大材小用,

11、我认为,要是仅仅为了毕业设计而设计是浪费时间的,毕业设计是对学生四年学习的一个综合应用的考核。在做毕业设计的过程中,我们通过它来考察自己学得怎么样,尽自己的能力做到认真负责,在这过程中,一定可以收获很多。重要的是在这个学校下达的最后一个学习任务中,我们能够发挥自己的能力爱好,把毕业设计应用在我们感兴趣的方面。3.2 SPEC061A单片机介绍3.2.1 资料介绍SPCE061A 是凌阳说明科技推出的一款16位结构的微控制器。SPCE061A里面只内嵌32K字的闪存(FLASH)。具有较高的处理速度使nSP 能够非常容易地、快速地处理复杂的数字信号。SPCE061A微控制器是适用于数字语音识别应

12、用领域产品中的一种最经济选择,使用它可以很方便地实现复杂的数据处理,包括基本的加减乘除运算和复杂的乘积运算处理,该芯片拥有8路10位精度的ADC,其中一路为音频转换通道,另外7路可以作为普通的AD转换通道。另外凌阳十六位单片机具有一套易学易用的效率很高,容易上手的指令系统和集成开发环境。在这样的环境中,支持标准C语言,可以实现C语言与凌阳汇编语言之间的互相调用。SPEC061A单片机如图3-2所示: 图3-2 SPEC061A单片机 3.2.2 结构介绍Spec061A单片机引脚功能介绍:内部结构如图3-3所示: 图3-3 nRF2401内部结构SPEC061A可应用于许多电子产业的控制方面

13、,例如家庭生活中的电视机,洗衣机,冷气,暖气等家居电器。该单片机在通信系统方面的应用尤为出色,它的语音功能,应有到多种通信设备中,例如楼宇的语音对讲系统,家庭生活中的语音存储式电话。在拓展功能方面,SPEC061A在智能互动玩具以及有声教材方面的应用受到业界广泛的关注。3.2.3 小结:决定设计方案前花了很长一段时间来选择单片机芯片,大学修读期间,没有学习单片机这门课程,多单片机的掌握不深,进行设计时,只能通过上网搜集资料和咨询同学来了解这方面的知识,凌阳SPEC061A功能的全面,且操作简便,容易上手,所以最后选择了它。3.3 NRF2401无线模块介绍3.3.1 资料简介nRF2401如图

14、3-4所示,是单片射频收发芯片,工作在2.42.5GHz ISM 频段,芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和传输频率可以通过程序编写进行修改调整。芯片的功耗不高,以-5dBm 的功率发射数据时,工作电流只有10.5mA,接收数据时,工作电流只有18mA,该芯片具有多种低功率工作模式,设计节能且方便。其DuoCeiverTM 技术使nRF2401 可以使用同一个天线,同时接收两个不同频率的数据。nRF2401 适用于多种无线通信的场合,例如如无线数据传输系统、无线鼠标、遥控开锁、遥控玩具等。 图3-4 nRF2401nRF2401 内置地址解码器、先入先出堆栈

15、区、解调处理器、时钟处理器、GFSK 滤波器、低噪声放大器、频率合成器,功率放大器等功能模块,应用电路只需要很少的外围元件,因此使用起来非常方便。nRF2401 的引脚如图3-5所示: 图3-5 nRF2401引脚nRF2401 的功能模块如图3-6所示: 图3-6 nRF2401功能模块3.3.2 应用电路简介nRF2401连接上十四个外围元件便可以构成简易的应用系统,具有基本无线收发功能。nRF2401 应用电路工作电压一般在3V,组合方便,目前市面上很多低功耗微控制器都可以对它进行控制。使用不同的天线,可以达到不同的效果,为了节能,我们不断调试,找到最大的收发距离,此过程中,电感电容的选

16、择,需要经过多次的测试,并且电路仿真来。nRF2401 的典型应用电路如图3-6所示: 图3-7 nRF2401典型应用电路3.3.3 小结:4.硬件设计与实现4.1 单片机硬件设计4.1.1 系统总体框图如图4-1所示,系统主要由两片spec061A和nRF无线模块构成, 图4-1 系统总框图硬件部分,采用SPCE061A外围接入的ADC模块,借助其MIC接口将语音信号转换为数字信号,按照选定的格式编码,最后通过 nRF2401无线收发芯片将编码数据进行传输;另一端也是通过无线模块,对来发射端的编码数据进行接收,并开始解码,解码后的信号通过SPCE061A外围接入的DAC模块,把数字信号再次

17、转换为模拟信号后输出。nRF2401无线模块与单片机SPCE061A连接好后,在单片机周围电路连接上接上数模转换模块以及数字模块,数字模块负责为单片机通过ICE接口写入编程指令,数模转换模块负责语音的输入与输出。4.1.2 系统工作原理系统硬件连接无误后,整个系统的运作流程是语音信号通过数模转换模块写入单片机,单片机通过nRF模块把转换后的数字信号无线传到另一个nRF模块,然后单片机对信号进行处理,最后通过数模转换把数字信号经过放大转换然后输出。SPCE061A与无线模块连接要用的的重要接口有:IOB1:串行接口的数据传送管脚。 IOB2:外部中断源EXT1。IOB3:外部中断源EXT2。IO

18、B4:外部中断源EXT1的反馈管脚。 IOB5:外部中断源EXT2的反馈管脚。DAC1:数据输出管脚。DAC2:数据输出管脚。上图中各模块都是通过上述接口与单片机进行数据连接传输,具体连接电路在各模块电路图中有标示。系统工作原理流程如图4-2所示: 图4-2 系统工作原理流程本系统是双向语音数据传输的设计,左右两边硬件连接以及软件编程均一致,固系统流程可逆,以达到使用者双方语音的交流的最终目的。4.1.3 连接结构框图SPCE061A与无线模块连接如图4-3所示: 图4-3 SPCE061A与无线模块连接框图上图仅为SPCE061A与无线模块连接的意会框图,下文将会详细介绍电路图,为了方便,设

19、计了SPCE061A与无线模块连接相匹配的引脚的转换电路,具体如图4-4所示:图4-4 引脚的转换电路J1是 nRF2401 的控制端口和通道1的收发通道,J2为留端口,是通道2的接收通道。J1接口是10针的插孔,排列分部与 SPCE061A 中的I/O端口排列次序相同,可以与 SPCE061A 的I/O端口直接相连使用。J2端口先保留,当两个通道都进行数据接收时,把单片机的I/O接口与S2接口中相应的三条信号引脚相连就可以了。4.1.4 SPCE061A周围电路模块选择SPCE061A最小系统如图4-5所示9: 图4-5 SPCE061A最小系统结合课题,对单片机SPCE061A的电路设计,

20、不需要焊接出61板的全部电路,经过分析,只需在基于单片机SPCE061A的最小系统电路基础上加上几个模块,就可以实现无线语音传输的效果,下面对这些模块进行一些介绍。单片机设计电路个模块布局如图4-6所示: 图4-6 模块布局数字模块和数模转换与单片连接的接口过多,在上图中难以标示,将在下一小节模块介绍电路图中会一红色字体标出。4.1.4.1时钟辅助模块时钟模块(锁相环振荡器,系统时钟,实时时钟)原理框图如图4-7所示: 图4-7 系统时钟(1) 锁相环(PLL,Phase Lock Loop)振荡器: PLL的作用是为系统提供一个实时时钟的基频(32768Hz),然后将基频进行倍频处理,调整到

21、49.152MHz、40.96MHz、32.768MHz、24.576MHz或20.480MHz。系统默认的PLL自激振荡频率为24.576MHz,电路如图4-8所示,时钟模块电路与单片机的vcp,vss接口连接。 图4-8 锁相环PLL(2) 系统时钟:系统时钟的信号源为PLL振荡器。系统时钟频率(Fosc)和CPU时钟频率(CPUCLK)通过对P_SystemClock(写)($7013H)单元编程来进行控制。默认的Fosc、CPUCLK分别是24.576MHz和Fosc/8。用户通过对P_SystemClock单元编程来定义系统时钟和CPU时钟频率。当系统被唤醒后,最初时刻的CPUCLK

22、频率也为Fosc/8,之后逐级调整到用户设定的CPUCLK频率。这样,就可避免系统在唤醒初始时刻读ROM出现错误。 (3) 实时时钟: SPCE061A对32768Hz实时时钟源的分频处理,为系统提供了多种实时时钟的中断源信号。例如,用来作为唤醒源的中断源IRQ5_2Hz,意思是系统每隔0.5秒被唤醒一次,可以作为一个精确的计时基准。该凌阳单片机芯片可以实现RTC振荡器两种模式,自动和强振。当系统处于强振模式时,RTC振荡器的运行一直处于高耗能的状态。当系统处于自动弱振模式时,上电复位的前七点五秒内处于强振模式,然后系统自动转为弱振模式来达到功耗降低的效果。4.1.4.2 数模转换辅助模块数模

23、转换辅助模块电路如图4-9所示: 图4-9 数模转换辅助模块此模块用来实现语音的输入输出,SPCE061A拥有有8个10位模-数转换通道,其中7个通道用来进行将模拟量信号(例如电压信号)转换成数字量信号,信号通过引线(IOA06)直接输入。另有一个通道专门作为语音输入通道,通过外接的数模转换模块中的麦克风原件(MIC_IN)接口输入。外接此模块电路是为了更好的实现模拟信号与数字信号之间互相变换的编码功能。 SPCE061A外接此电路,达到为语音输出提供了两个10位数/模转换子系统的目的,即DAC1和DAC2。通过AUD1和AUD2管脚来对应输出,DAC1、DAC2转换输出的模拟量电流信号。4.

24、1.4.3 数字模块数字模块也就是PROBE/下载线的电路。其中PROBE就是在线调试器主要是为凌阳十六位单片机(包括SPCE061A)提供在线编程、仿真和调试使用的工具。该调试器一端接在PC机的并口上,另一端接在开发系统的ICE 端口上(J4口)。在Spec061A单片机的集成开发环境上就可以实现在线编程、仿真和调试。数字部分电路原理如图4-10所示: 图4-10 数字部分电路ICE 基本运作方式是通过控制 clock 及通过 ICE 喂入指令方式,来控制CPU 的运行及缓存器资料和内存资料的存取,因此必须透过控制缓存器值的设定来控制目前 CPU 的动作. 每个相连接的不同ICE模块都拥有自

25、己独特的3-bit ID,当PC在传送control信号时都会先传送该 3-bit ID,只有ICE本身的ID和control信号的ID 相同时才会执行该命令或回传资料。单片机上的74HC244主要在我们选用下载线的时候起作用,主要是奇缓存的作用和完成SDA是作为数据回送还是数据下传的选择。4.2 nRF2401模块硬件设计4.2.1 nRF2401A 及其外围电路nRF2401A 及其外围电路,包括有nRF2401A芯片部分、稳压部分、晶振部分、天线部分。电压VDD 经电容C1、C2、C3 处理后,为芯片提供合适的工作电压;晶振部分包括Y1、C9、C10,晶振Y1允许值为:4MHz、8MHz

26、、12 MHz、16 MHz,当如果需要1Mbps 的通信速率,就必须选择16MHz晶振。天线部分包括电感L1、L2,用来将nRF2401A 芯片ANT1、ANT2 管脚产生的2.4G 电平信号转换为电磁波信号,或者是将电磁波信号转换为电平信号输入芯片的ANT1、ANT2 管脚。【5】结构示意如图4-11所示: 图4-11 nRF2401结构框图本系统应用时,十针插孔J1和Spec061A的I/O端口对应连接。当需要两个通道接收时,可以将预留端口J2引出,接到单片机对应的I/O接口上就可以了。无线收发电路包括主芯片nRF2401A及其外围电路、接口电路、指示电路,如图4-12所示, 图4-12

27、 nRF2401及其外围电路为方便与SPCE061A进行功能连接,设计了两个接口J1、J2,J1是 nRF2401 的控制端口和通道1的收发通道,J2为留端口,是通道2的接收通道。J1接口是10针的插孔,排列分部与 SPCE061A 中的I/O端口排列次序相同,可以与 SPCE061A 的I/O端口直接相连使用。J2端口先保留,当两个通道都进行数据接收时,把单片机的I/O接口与S2接口中相应的三条信号引脚相连就可以了。同时,在电路板上添加了工作指示小元件,系统上电后D1将会被点亮。接口电路如图4-13所示: 图4-13 接口电路4.3小结:5.系统软件设计与实现5.1 软件总体设计程序系统运行

28、后一开始处于等待状态,在等待状态下,不断扫描按键并且判断是否接收到数据。如果检测到按键按下,就进入录音状态,进行录音并将压缩后的数据进行发送;另一端在接收到数据后进入放音状态,接收数据并对其进行解码。如果想停止录放音,可以通过释放按键来退出录音状态,停止录音和数据发送;另一端若在一定的时间内接收不到数据即退出放音状态。状态切换如图5-1: 图5-1 状态切换框图5.1.1主程序 主程序流程:系统首先初始化nRF2401A为接收状态,之后进入主循环,在主循环中扫描KEY1键和播放允许标志PlayFlag,如果检测到KEY1键按下则进入录音装态,如果检测到PlayFlag = 0xFF则进入放音状

29、态。如果KEY1键释放则退出录音状态,如果检测到PlayFlag = 0x00则退出放音状态。主程序流程如图5-2, 图5-2 主程序流程中断服务程序:中断服务包括IRQ4_1KHz中断和FIQ_TMA中断。IRQ4_1KHz中断用来接收数据,每次系统进入中断,判断无线模块是否有数据请求(接收到数据),如果有数据请求的话,便从nRF2401A中读出数据,同时置位语音播放的允许标志PlayFlag,如果连续一段时间内(0.1S)没有接收到数据,便清除语音播放允许标志PlayFlag。程序流程如下图5-3所示。 图5-3 IRQ4_1KHz中断FIQ_TMA中断用来录放音。在录音或者放音的时候,每

30、次进入中断便调用DVR1600的中断服务函数。程序流程如图5-4所示:图5-4 FIQ_TMA中断 5.2 子程序设计5.2.1录音子程序在检测到KEY1键按下后系统进入录音子程序。进入程序后首先禁止1KHz中断,屏蔽所有来自nRF2401A的数据请求,并切换nRF2401A的工作方式为接收;之后作初始化工作,初始化编码队列和设置编码格式等;如果按键KEY1都处于闭合状态,程序将会不断地进行编码操作,每产生一桢编码的数据后便将数据写入nRF2401A,再进行无线发送。一旦KEY1键释放,系统停止录音,并自行切换nRF2401A的工作方式为接收,同时允许1KHz中断。程序流程如下图所示: 图5-

31、5 录音子程序5.2.2放音子程序在检测到语音播放允许标志PlayFlag值变为0xFF后,系统进入放音子程序。初始化编码队列,并且开始语音播放;如果PlayFlag的值一直是0xFF,程序将会一直进行DVR解码操作。一旦PlayFlag的值不为0xFF,系统停止放音。程序流程如下图5-6所示: 图5-6 放音子程序5.3 初始化初始化函数void nRF2401_Initial(void)的程序包括端口初始化和向芯片写入控制字操作,初始化流程如图5-7所示: 图5-7 初始化流程5.3.1初始化程序SPCE061A 单片机的初始化:初始化I/O 将会把nRF2401A 模块用到的所有接口初始

32、化为对应的输入输出属性;设置系统时钟为49MHz,用来提高通信的速度,及延时的准确性。nRF2401A 初始化:对nRF2401A 的初始化包括nRF2401A 的上电和向nRF2401A 写入控制字。nRF2401A 上电也就是将芯片的PWR_UP 管脚设置为高电平,上电以后便可以对nRF2401A 进行控制和读写操作。nRF2401A 一共有18 Byte(144bit)的命令字,下面逐位介绍其作用。bit143bit120:测试保留区测试保留区用户不需设置。bit119bit112:通道2 接收数据长度(bit)通道2 接收数据的长度Data2_W,用于接收。如果通道2 接收到一帧数据,

33、在去掉地址和校验位后,其数据长度和bit119 bit112 值一致,则认为通道2 接收到一帧数据,置位DR2,否则丢弃。bit111bit104:通道1 接收数据长度(bit)通道1 接收数据的长度Data1_W,用于接收。如果通道1 接收到一帧数据,去掉地址和校验位后,其数据长度和bit111 bit104 值一致,则认为通道1 接收到一帧数据,置位DR1,否则丢弃。通道1 和通道2 的数据长度受nRF2401A 帧数据总长度限制,帧数据总长度为256 bit,每一帧的数据长度 Data_W = 256 Addr_W CRC。bit103bit64:通道2 地址通道2 的地址Addr_2,

34、用于接收。设置本机地址,通信过程中,发射端通过配置该地址发送数据才能与之通信。bit63bit24:通道1 地址通道1 的地址Addr_1,用于接收。设置本机地址,通信过程中,发射端通过配置该地址发送数据才能与之通信。bit23bit18:通道地址有效位数通道1 和通道2 的地址有效位数,用于接收。结合bit63bit24 和bit103bit64 选定通道的接收地址。其值不超过40。如果bit63bit24 的值为00 00 00 01 05,bit23bit18 的值为8,则通道1 的地址为05;如果bit63bit24 的值为00 00 00 01 05,bit23bit18 的值为32

35、,则通道1 的地址为00 00 01 05bit17:CRC 校验位选择选择CRC 校验位数,用于收发。如果该位为“0”,则CRC 校验为8 位;如果该位为“1”,则CRC校验为16 位;bit16:CRC 校验使能使能CRC 校验,用于收发。如果该位为“0”,则不进行CRC 校验;如果该位为“1”,则进行CRC校验。bit15:通道2 接收使能通道2 的接收允许,用于接收。如果该位为“0”,则仅有通道1 可以接收;如果该位为“1”,则通道1 和通道2 均可接收。注意通道1 通道2 同时接收时,通道2 的接收频率比通道1 的收发频率高8MHz。bit14:收发模式选择该位决定nRF2401A

36、的收发方式,用于收发。如果该位为“0”,nRF2401A 工作在Direct 模式(直接收发模式);如果该位为“1”,nRF2401A 工作在Shock Burst 模式。Direct 模式在此不作详细介绍,用户如果使用,可以参考芯片的数据手册;Shock Burst 收发操作会在后面重点介绍。bit13:RF 波特率选择nRF2401A 通信的波特率选择位,用于收发。如果该位为“0”,则选择250Kbps 波特率;如果该位为“1”,则选择1Mbps 波特率。前者的通信误码率较低,如果速度没有严格要求,通常选择250 Kbps。bit12bit10:芯片外晶振选择nRF2401A 的外晶振选择

37、,nRF2401A 支持5 种不同频率的晶振,随着外晶振频率的不同,bit12bit10值也不同,系统选用16M 晶振, bit12bit10 值为011bit9bit8:RF 发射功率选择nRF2401A 发射功率选择,用于发射。nRF2401A 有4 种不同的发射功率,通常我们选择最大发射功率0dBm,取bit9bit8 值为11。5.4 数据发送程序nRF2401A 采用Shock Burst 的方式发送数据。单片机向nRF2401A 传送数据的函数有下列4 个:(1)void nRF2401_SendByte(unsigned int TxData),用于发送一个字节数据;(2)voi

38、d nRF2401_SendWord(unsigned int TxData),用于发送一个字数据;(3)void nRF2401_SendBuffer_Byte(unsigned int TxData,unsigned int DataByte),用于发送一个字节数组;(4)void nRF2401_SendBuffer_Word(unsigned int TxData,unsigned int DataWord),用于发送一个字数组。以上几个函数的流程都是一样的,只是发送数据的长度不同。发送数据流程时,单片机向nRf写入接受机的地址,然后在写入目标数据,延时然后再进行发送。具体流程如图5-

39、8: 图5-8 发送流程单片机向nRF2401A 发送数据的时序如图5-9所示: 图5-9 发送数据时序MSB发送到LSB 数据的格式如图5-10: 图5-10 数据格式其中AnA0 为接收机地址,不会超过40 位,通过更换地址,可以向多个nRF2401A 模块发送数据;DkD0为待发送的数据。以上数据是由单片机发送到nRF2401A 之后,nRF2401A 将会进行打包并发射,打包后的数据格式如图5-11: 图5-11 数据格式其中Pre 为8 位的校验头,CRC 为8 位或16 位的校验尾,在Shock Burst 模式下由nRF2401A 自动添加。需要注意的是:1、 Address、D

40、ata、CRC 的位数之和不超过256;2、 Address 长度必须和目标接接收通道的地址一致(数据和长度);3、 Data 长度必须和目标接接收通道的接收数据宽度一致。4、 发射端和接收端的RF 频率须一致,如两端均采用通道1,则二者控制字的bit7bit1 一致,如接收端采用通道2,则发射端bit7bit1 值比接收端bit7bit1 值大8。函数的使用:void nRF2401_SetAddress(unsigned int Address,unsigned int AddrByte):设置目标nRF2401A 的地址,发送端在发送数据前调用,只需要一次即可。其中Address数组为目

41、标nRF2401A 地址,AddrByte 为有效地址的字节数。void nRF2401_SendByte(unsigned int TxData):用于向nRF2401A 发送一帧数据(目标地址 + 一个字节数据TxData);void nRF2401_SendWord(unsigned int TxData):用于向nRF2401A 发送一帧数据(目标地址 + 一个字数据TxData);void nRF2401_SendBuffer_Byte(unsigned int TxData,unsigned int DataByte):用于向nRF2401A 发送一帧数据(目标地址 + 一个字节数

42、组TxData),其中DataByte 为数组元素个数;void nRF2401_SendBuffer_Word(unsigned int TxData,unsigned int DataWord):用于向nRF2401A 发送一帧数据(目标地址 + 一个字数组TxData),其中DataWord 为数组元素个数。5.5 数据接收程序当接收端成功接收到数据后,系统将会置位对应的数据请求管脚DR1/DR2,单片机通过查询该管脚状态,或者通过中断方式接收数据,nRF2401A 读取数据的函数有两个:(1)void nRF2401_ReceiveByte(unsigned int RxData),以

43、Byte 格式从nRF2401A 读取数据;(2)void nRF2401_ReceiveWord(unsigned int RxData),以Word 格式从nRF2401A 读取数据。以上两个函数的操作流程是一样的,只是存储的数据格式不同单片机读取数据流程图如图5-12: 图5-12 读取数据流程单片机从nRF2401A 读取数据的时序如图5-13 图5-13 读取数据时序函数的使用:void nRF2401_ReceiveByte(unsigned int RxData):以Byte 格式从nRF2401A 读取数据,接收数据存储在数组RxData中。void nRF2401_Recei

44、veWord(unsigned int RxData):以Word 格式从nRF2401A 读取数据,接收数据存储在数组RxData中。5.5其他程序其他程序如下:void nRF2401_ON():nRF2401A 上电操作,在初始化nRF2401A 之前执行该操作;void nRF2401_OFF():nRF2401A 掉电操作,在需要重新初始化nRF2401A 时执行该操作;void nRF2401_Mode(unsigned int uiMode):nRF2401A 收/发模式切换,uiMode = 0,设置nRF2401A 为接收;uiMode = 1,设置nRF2401A 为发送;

45、unsigned int nRF2401_RxStatus():判断nRF2401A 是否有数据接收,如果已经接收到数据,返回值为“1”,如果没有接收到数据,返回值为“0”。5.6 系统编程简介系统为两部分,两部分的硬件连接是一样的,都是spec061a与nRF模块的结合,系统编程主要是为了实现系统两部分之间的双向无线数据交流。为了方便陈述,把系统分为1机和2机。1机发送数据时,2机接收;2机发送数据时,1机接收;1机 向2机 发送一个数据之后进入接收状态,2机 接收到数据后返回1机,1机 接收到数据后进入Sleep。5.6.1 系统软件要求:地址:32 bit 地址(1机和2机接收端地址一样

46、:0x00 00 00 01)码率:250Kbps数据:每帧1Byte频率:2.40GHz通道:通道1CRC:16 位5.6.1.2 系统编程简易分析发送的控制字:bit17bit16:11,16 位CRCbit15:0,单通道(通道1 接收,通道2 不接收)bit14:1,Shock Burst 模式bit13:0,波特率250Kbpsbit12bit10:011,16M 晶振bit9bit8:11,发射功率0dBmbit7bit1:0000000(0x0),收发频率2.4GHzbit0:0,发送模式。A 套作为接收的控制字:bit111bit104:00001000(0x08),接收数据宽

47、度1 Bytebit63bit24:00000000 00000000 00000000 00000000 00000001(0x0000000001),通道1 地址bit23bit18:100000(0x20),通道1 地址有效位32 位,故通道1 地址为 (0x0000001)bit17bit16:11,16 位CRCbit15:0,单通道(通道1 接收,通道2 不接收)bit14:1,Shock Burst 模式bit13:0,波特率250Kbpsbit12bit10:011,16M 晶振bit7bit1:0000000(0x0),收发频率2.4GHzbit0:1,接收模式。综合上述情况

48、,初始化命令字InitData15 =0x00, / 通道二接收数据宽度0x08, / 通道一接收数据宽度0x00, / 通道二地址0x00, / 通道二地址0x00, / 通道二地址0x00, / 通道二地址0x00, / 通道二地址0x00, / 通道一地址0x00, / 通道一地址0x00, / 通道一地址0x00, / 通道一地址0x01, / 通道一地址0x83, / 接收地址宽度(32 位)/ b17b16: CRC模式选择(16bit)0x4F, / b15: 接收通道选择,通道1 接收/ b14: 收发模式(ShockBurst 模式)/ b13: 波特率选择(250Kbps)

49、/ b12b10: 晶振选择(16M)0x64 / b7b1: 收发频率(2.45GHz)/ b0: 收发控制(接收/发送)只需要在程序中切换控制字bit0 的值,即可切换nRF2401A 无线模块的收发,该切换操作由函数nRF2401A_Mode()实现。5.6.1.2程序程序如下:#include nRF2401A.h#include SPCE061A.hunsigned int Address4 = 0x00,0x00,0x00,0x01; / 接收端地址:00 00 00 01unsigned int RxData1; / 接收int main()nRF2401_Initial(); / 初始化nRF2401AnRF2401_SetAddress(Address,4);

温馨提示

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

评论

0/150

提交评论