声音导引系统的无线传输设计毕业论文.doc
目 录1 绪论11.1 本课题研究的目的和意义11.2 课题研究的内容与组成21.3 本章小结22 短距离无线数据传输系统分析设计32.1 声音导引系统无线传输总体方案32.2 控制模块的选择方案和论证32.3 无线传输模块的选择方案和论证42.4 无线传输系统软件设计语言方案62.5 本章小结63 基于NRF2401无线传输硬件电路模块设计73.1 电压转换电路模块设计73.2 无线传输模块nRF2401接口电路图设计83.2.1 nRF2401芯片结构83.2.2 nRF2401引脚说明83.2.3 nRF2401无线传输模块接口93.3 单片机控制模块电路设计103.4 本章小结134 无线传输系统的软件设计144.1 利用STC89C51的I/O口模拟SPI口144.1.1 SPI总线的组成144.1.2 SPI接口的原理和应用154.1.3 利用I/O口模拟SPI174.2 无线传输模块软件设计及实现194.2.1 nRF2401的工作模式转换194.2.2 Shockburst TM模式下数据帧格式204.2.3 nRF2401的配置模式流程204.2.4 nRF2401发送模式流程244.2.5 nRF2401接收模式流程254.3 本章小结275 系统调试285.1 单片机模拟SPI同步数据传输调试285.2 无线数传模块nRF2401任意字节数据的传输295.3 防电磁干扰措施305.4 时间误差计算315.4.1 SPI串口传输时间315.4.2 程序运行指令延时325.5 本章小结326 结论33附录A NRF2401无线传输模块设计电路图34附录B NRF2401无线传输模块设计PCB图35附录C 声音导引系统的无线传输设计各模块程序39参考文献44致 谢461 绪论 1.1 本课题研究的目的和意义目前,无线数据通信的应用领域越来越多,移动通信技术飞速发展,越来越多的信息采集和远程控制系统采用了无线传输技术,由于无线数据通信不用布线,快速布局,因此具有有线数据通信无法比拟的便捷性,在物体运动场合具有不可替代性。并且随着无线技术的日益发展,无线传输技术应用越来越被各行各业所接受。现在无线传输技术已经远远超出了广播通信的范围,应用日益广泛,如无线电导航,无线电定位等许多领域,还有人进行无线电力传输。无线传输在生活中的应用也日益广泛,车辆监控、遥控、遥测、小型无线网络、无线抄表、门禁系统、小区传呼、工业数据采集系统、水文气象监控、机器人控制、无线遥控门、数字音频、数字图像传送等生活各个方面1。单片机以其高可靠性、高性价比,在工业控制系统、数据采集系统、智能化仪器仪表、办公自动化等诸多领域得到广泛的应用。在一些特殊的应用场合中,单片机之间的远程通信不能采用有线的数据传输,例如采用有线的串、并行总线、I2C总线、CAN总线等,而是需要无线数据传输。目前市场上出现了多种无线数据传输模块,如nRF2401、nRF905、PTR4000等。无线数据收发模块的性能优异,其显着的特点是所需外围组件少,因而设计非常方便。模块在内部集成了高频发射、高频接受、PLL合成、FSK调制/解调、参数放大、功率放大、频道切换等功能,是目前集成度较高的无线数据传输产品2。无线传输系统主要以STC89C51单片机为控制处理核心,由它完成对数据的存储以及控制数据的无线传输。STC89C51单片机是一种低功耗、低电压、高性能的8位单片机,片内带有一个8KB的可编程、可擦除、只读存储器3。无线收发模块nRF2401性能优异,传输稳定,在业界居领先水平,它的显着特点是所需外围组件少,因而设计非常方便。应用于单片机程序开发的语言有机器语言、汇编语言和高级语言。汇编语言和机器语言一样,都脱离不开具体的机器,因此这两种语言均为“面向机器”的语言。高级语言都是一些参照数学语言而设计的近似于人们日常用语的语言。C语言是高级语言的一种,它不仅直观、易学、易懂,而且通用性强,易于移植到不同类型的机器中4。和汇编语言相比,C语言有很多优势,ANSI标准的 C语言是一种非常方便并获得广泛应用,在绝大部分系统中都能够很容易得到的语言,如果需要,现有的程序还可以很快的移植到其它处理器上。为了适应C语言广泛应用的形势发展,掌握运用KEIL编译器开发单片机程序设计的思想和方法是极其必要的。KEIL C51编译器是一个针对C51系列MCU的基于 ANSI C 标准的C编译器,生成可执行代码快速、紧凑,在运行效率上可以和汇编程序相媲美 34 。1.2 课题研究的内容与组成本题目是设计声音导引系统中的无线传输模块。利用无线传输模块设计声音导引系统中导引信息的发送和接收电路。利用STC89C51单片机对无线模块进行控制,实现声音信号的传输,进而控制小车的运动。在本文中,主要说明了单片机和无线数据收发模块 nRF2401的组合,形成单片机的无线数据传输系统,与移动小车进行无线数据传输。包括:如何针对系统的需求选择合适的无线数据传输模块器件,如何根据选择的器件设计外围电路和单片机的接口电路,如何编写控制无线数据传输器件进行数据传输的单片机程序。1.3 本章小结本章简单介绍了课题研究的目的和意义,以及介绍了本次课题的主要内容和组成。通过本章的介绍,很清楚的了解到,无线传输的现状,以及无线传输的发展前景-无线你的无限。下一章将对无线传输系统总体分析和论证。2 短距离无线数据传输系统分析设计在声音导引系统中无线传输模块的关键器件是主控单片机和无线收发芯片。无线收发芯片的种类和数量比较多,如何在设计中选择所需要的芯片非常关键。我们可根据以下标准来选择芯片或模块。发送和接收电路应具有低功耗的工作模式,这样在无线模块暂停工作时可以尽可能的节能。当然数据传输的编码方式,外围组件数量,发射功率,大小尺寸也应在考虑的范围之内。同时在选择单片机时需要考虑到是否满足相应射频芯片的接口,能够可靠稳定的控制模块进行无线数据通信。2.1 声音导引系统无线传输总体方案根据对课题的分析和设计要求,本课题主要是解决主控模块对移动声源在移动过程中的定位控制,即涉及到无线传输的设计。无线传输模块分为两个部分,主控制模块控制发送模块,移动声源上搭载的从控制模块控制接收模块。现确定以下总体工作方案,如图2.1所示。声音接收和处理模块将接受到的声音信号,在主控制模块的控制下,通过计算分析,产生一个可移动声源离指定位置的误差信号,然后将控制移动声源的数据通过无线发送模块发送出去。同时无线接收模块迅速接收到数据,并将数据传输给移动声源,对移动声源进行实时控制5。声音处理模块主控制模块移动声源模块从控制模块无线接收模块无线发送模块图2.1 短距离无线传输示意图2.2 控制模块的选择方案和论证对于控制系统的选择应在满足系统要求的基础上选择可靠性高,性价比高的,易于上手控制的芯片。现有以下方案可供选择:方案一:采用高性能嵌入式系统,比如ARM。ARM技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。如果采用此方案,可以很好的解读数据处理和控制功能,但是对ARM很少接触,在短时间内完成困难比较大。方案二:采用大规模可编程逻辑器件,如FPGA,CPLD。FPGA(FieldProgrammable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。但FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。本题属于控制类,不适合采用此方案。方案三:采用两片高性能单片机来实现,单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。因曾经对51系列单片机使用接触过,对其有一定得实践过程,在此选用STC89C51单片机。一片用来处理音频信号接收和无线传输芯片的发送,同时控制车载单片机,担当主控单片机。另一块作为从控单片机,用来控制小车运动和无线传输芯片的接收6。综上所述,考虑到方案的可实行性和性价比,拟采用方案三作为主控系统,选用STC89C51单片机,其可实现高速运算,存储空间大,价格低廉,性价比极高。2.3 无线传输模块的选择方案和论证现在市面上有很多短距离无线传输模块,在此要通过具体的要求选用适宜的模块,应注意低功耗处理和力求高性价比等细节。通过选用合适的无线传输模块并配合外围电路即可实现声音导引系统中的无线传输模块5。但进行无线传输也有很多方案可供选择,有比较传统的无线传输模式,也有最近几年刚刚发展的无线传输模式。无线传输的信号千差万别,各个模块包含的具体器件也不一而,但其基本模块图都是相似的。方案一:采用红外线技术通信,红外通信器件易得,价格低廉,基本上红外线跟蓝牙同样都是无线传输,但是使用的频带不同。红外线的原理就是利用可视红光光谱之外的不可视光,就因为红外线也是光的一种,所以它也同样具有光的特性,它无法穿越不透光的物体。使用者并不需要使用执照即可以使用红外线。例如,低速红外线(Slow IR)应用在电视遥控器上己有相当长的一段时间了,其它像是录像机、音响等遥控器也是。电视遥控器将特定的讯号编码,然后透过红外线通讯技术将编码送出,而设置在电视上的红外线接收器收到编码之后,将其进行译码而得到原来的讯号。例如,电视端解得的讯号为加大音量,则译码后即进行加大音量的动作。低速红外线是指其传输速率在每秒115.2Kbits者而言,它适用于传送简短的讯息、文字或是档案。有低速红外线也有高速红外线(Fast IR),它是指传输速率在每秒1或是4Mbits者而言,其它更高传输速率则仍在发展中。对于网络解决方案而言,高速红外线可以说是其基础,包括档案传输、局域网络连结甚至是多媒体传输。 但因其无法穿透墙壁传输,这也构成其缺点之一。另一方面,红外线也是一种低成本的无线传输形式。视线红外线以射线般的直线形态传输数据,因为其运动是以直线前进,如果传输的路途中没有任何的障碍物,则数据的传输可以说相当快速且具有效率的,因为红外线也是光的一种,所以它前进的速度为光速。但是就像太阳光一样,红外线不能穿透墙壁或是大型物体,所以,在数据收发的两端必须相互对准(即可以看得见对方)才能进行通讯,这对行动通讯可能常常移动位置的情形而言,是非常不利的,而且容易受到下雨、下雪或是雾气的干扰。但必须直线收发是其致命弱点7。方案二:采用无线蓝牙传输。蓝牙是一种支持设备短距离通信(一般10m内)的无线电技术,是为替代电缆而开发出来的。能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。利用蓝牙技术,能够有效地简化移动通信终端设备之间的通信,从而数据传输变得更加迅速高效,为无线通信拓宽道路。蓝牙采用分布式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段。其数据速率为1Mbps。采用时分双工传输方案实现全双工传输。现在蓝牙已成为短距离无线通信的一种很热门的技术。该种方案传输性能好,能够实现中长距离的无线传输,不过价格昂贵,集成度高,所需围电路复杂,用此方案有些大材小用,且性价比低8。方案三:采用中短距离无线射频模块,如nRF2401、nRF905系列的模块,应用及编程非常简单,传送的效率很高。硬件电路主要涉及到无线传输模块的选择,拟采用对比,检测的手段,从性价比,传输速率,可靠性等方面进行选择。目前射频无线传输模块有nRF2401、nRF905、nRF24L01、RF903等,通过进一步对比选用nRF2401无线传输模块。nRF2401具有低功耗的工作模式,且传输速率能达到1Mbps,很好的满足本设计的要求。同时通过编程用51单片机I/0口模拟SPI,不需要单片机真正的串口介入,只需要51单片机I/O口就可以。在目前较为流行的无线收发芯片中,无论是从使用的方便性、传输速度还是输出功率等各个方面,nRF401均不失为一种较为理想的无线数据传输芯片。Nordic公司的nRF2401为无线收发一体芯片,和蓝牙一样,同样工作在2.4-2.5GHz的ISM波段。nRF2401外围组件仅10个左右,无需变容管等昂贵的组件,只需要便宜且易于获得的16MHz晶体,收发天线合一。并且综合功耗较小,发射功率较高。nRF2401的单价低于3美元,而且便于开发,产品上市时间长,应用广泛,包括无线鼠标、无线键盘、无线操纵杆、无缝接入、无线数据传输、汽车应用等。此方案相对于蓝牙传输电路简单,价格低廉,相对性价比高,完全可以满足本系统要求69。综上所述,选择方案三采用无线收发模块nRF2401传输,其具有高可靠性,传输速度快,相比其它方案更具低功耗,性价比高,且容易上手。2.4 无线传输系统软件设计语言方案方案一:采用汇编语言,汇编语言比机器语言易于读写、调试和修改,同时具有机器语言全部优点。但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。 方案二:采用C语言,它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此能够像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。此外, C语言生成目标代码质量高,程序执行效率高具有很强的通用性,C语言具有强大的绘图能力,可移植性好,并具备很强的数据处理能力,因此编写系统软件简洁,且程序设计自由度大,相对汇编语言更能明白易懂6。综上所述,选用方案二,用C语言进行系统的软件设计。2.5 本章小结本章介绍了对本次课题无线传输模块各个器件以及软件程序应用的选择,通过论证各种方案的利弊和操作的简便性以及各方案的性价比,选择了以STC89C51单片机为控制芯片,nRF2401为无线传输模块的设计方案,以C语言编写程序。下一章我们将要在在方案确定的基础上对硬件电路进行设计。3 基于NRF2401无线传输硬件电路模块设计硬件电路连接实现单片机与nRF2401A芯片的接口连接。发送端与接收端硬件连接几乎一样,具有通用性,可以实现半双工通信。STC89C51单片机没有SPI接口,但可以利用I/O口模拟SPI口,继而与nRF2401A相连。由于STC89C51单片机的供电电压是5V,而nRF2401A的供电范围为1.93.6V,为了使芯片正常工作,需要进行电平转换和分压处理。3.1 电压转换电路模块设计 由于nRF2401的供电电压范围为1936V,超过3.6V将会烧毁模块。而STC89C51单片机的供电电压是5 V,为了使芯片正常工作,需要进行电平转换。单电源供电时,采用LM1117T芯片进行5 v3.3 V电平转换。LM1117T是一个低压差电压调节器系列。其压差在1.2V输出,负载电流为800mA时为1.2V。它与国家半导体的工业标准器件LM317有相同的管脚排列。LM1117T有5个固定电压输出(1.8V、2.5V、2.85V、3.3V和5V)的型号。LM1117T提供电流限制和热保护。电路包含1个齐纳调节的带隙参考电压以确保输出电压的精度在±1%以内10。电路图如图3.1所示。输入电压经过LM1117T芯片转换,电压由单片机输出的5V电压变为3.3V电压,输出端是一个10uF的钽电容,用来改善瞬态响应和稳定性。满足nRF2401A芯片的电压要求。图 3.1 电源电压转换原理图3.2 无线传输模块nRF2401接口电路图设计nRF2401A是单片射频收发芯片,工作于2.42.5GHz ISM频段,芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。芯片能耗非常低,以-5dBm的功率发射时,工作电流只有10.5mA,接收时工作电流只有18mA,多种低功率工作模式满足设计的要求,并且在做系统节能的设计时更加方便。3.2.1 nRF2401芯片结构nRF2401内置地址解码器、先入先出堆栈区、解调处理器、时钟处理器、GFSK滤波器、低噪声放大器、频率合成器,功率放大器等功能模块,需要很少的外围组件,因此使用起来方便。nRF2401的功能模块如图3.2所示。图 3.2 nRF2401A 功能模块图3.2.2 nRF2401引脚说明nRF2401A引脚功能如表3.1所示,通过对引脚功能的了解和掌握,确定器件所能执行的任务,并能很好的简化硬件设计和软件设计程序的编写。nRF2401最高工作速率1Mbps,高效GFSK调制,抗干扰能力强。125 频道,满足多点通信和跳频通信需要。其内置硬件CRC检错和点对多点通信地址控制,能更好的检测数据和防止误码率。此外在待机模式下状态仅为1uA ,能够很好的节耗。内置专门稳压电路,使用各种电源包括DC/DC 开关电源均有很好的通信效果。nRF2401配置外置天线,空旷地传输距离可达50-100米,具有更远的有效距离。与51系列单片机P0口连接时候,需要加10K的上拉电阻,否则容易烧毁模块。表3.1 nRF2401A引脚功能表引脚名称引脚功能描述1CE数字输入使NRF2401工作于接收或发送状态2DR2数字输出频道2接收数据准备好3CLK2数字I/O频道2接收数据时钟输入/输出4DOUT2数字输出频道2接收数据5CS数字输入配置模式的片选端6DR1数字输出频道1接收数据准备好7CLK1数字输I/O频道1接收数据时钟输入/输出8DATA数字输I/O频道2接收/发送数据端9DVDD电源电源的正数字输出11、12XC1、 XC2模拟输出、输入晶振1、晶振213VDD_PA电源输出给功率放大器提供1.8V的电压14、15ANT1、ANT2天线天线接口1、天线接口216VSS_PA电源电源地17、21、24VDD电源电源正端19IREF模拟输入模数转换的外部参考电压10、18、20、22VSS电源电源地23PWR_UP数字输入芯片激活端3.2.3 nRF2401无线传输模块接口nRF2401无线传输模块使用Nordic公司的nRF2401A芯片开发而成。外置天线,具有更小的尺寸,长度为29mm,宽度为16mm,电路图如图3.3所示。单片机通过PWM_UP,CE, CS三端设置nRF2401的工作模式。配置模式时单片机通过CLKI和DATA端向nRF2401发送配置字,发送数据时通过CLK1和DATA端向nRF2401发送地址和数据,接收数据时通过CLK1和DATA端从nRF2401读取数据,DR1是nRF2401通知单片机已经接收到数据并且可以读取的状态信号。CLK2、DOUT 和DR2端为通道二保留使用,nRF2401可以同时接收两路信号。图3.3 nRF2401模块电路图其中无线模块为标准DIP 插针,共12脚,排阵间距为100mil,在电路设计中只需要留出12针插槽,就可以很方便的插拔无线模块。如图3.4所示:11、12脚为接地脚,需要和母板的逻辑地连接起来,2脚为接电压端,需要和电压转换模块输出脚相连。除电源VCC和接地端,其余脚都可以直接和普通的5V单片机I/O口直接相连,无需电平转换212。图3.4 无线模块接口电路3.3 单片机控制模块电路设计单片机工作的最小系统如图3.5所示,包括电源线、地线,晶振的设计。能满足一般电路功能的实现要求11。图3.5 单片机控制模块电路主控芯片选用的是STC89C51单片机,STC89C51是一款高性能、低功耗的8Byte微控制器,与工业标准的MCS-51指令集和输出管脚相兼容的单片机。具有丰富强大的外部接口性能,32可编程I/O线,可编程串行通道,片内振荡器和时钟电路。其内部结构如图3.6所示。图3.6 STC89C51单片机内部结构 STC89C51单片机内部主要包括累加器ACC(有时也简称为A)、程序状态字PSW、地址指示器DPTR、只读存储器ROM、随机存取存储器RAM、寄存器、并行I/O接口P0P3、定时器/计数器以及定时控制逻辑电路等 6。其管脚图如图3.7所示。图3.7 STC89C51 单片机管脚图STC89C51单片机I/O管脚功能介绍:P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0口与nRF2401接口连接时候,需要加10K的上拉电阻,否则容易烧毁模块。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故11。 无线传输控制系统硬件电路图如图3.8所示,为防止STC89C51的I/O口电流过大烧坏nRF2401模块,在单片机与接口之间串联2K欧姆电阻分压,能满足一般电路功能的实现要求,如要实现其他功能,可在电路中扩展。图3.8 单片机控制系统电路图3.4 本章小结本章主要针对电路模块设计部分进行了具体的细化分析。分别从单片机的主模块设计、无线模块设计等方面详细的对电路部分进行学习和对比,使得我们能够更加清晰的了解单片机控制无线传输模块的电路和硬件部分的合理设计也要我们引起注意。通过本章的介绍,可以了解了整个系统的硬件设计方案以及实现原理。下一章将具体对无线传输系统软件各部分的设计。4 无线传输系统的软件设计系统软件的设计是一个项目工程的精髓,好的程序设计能够很好的弥补硬件的不足,并能使系统的功能得到拓展。在本系统中,我采用的是分析,画流程图再编程序的方法进行设计。流程图是程序的要点,能够很好的指导程序的编写,并能提高编写程序的效率。4.1 利用STC89C51的I/O口模拟SPI口SPI(Serial Peripheral Interface-串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。外围设置FLASH RAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。由于SPI系统总线一共只需34位数据线和控制即可实现与具有SPI总线接口功能的各种I/O器件进行接口,而扩展并行总线则需要8根数据线、816位地址线、23位控制线,因此,采用SPI总线接口可以简化电路设计,节省很多常规电路中的接口器件和I/O口线,提高设计的可靠性。 由此可见,在MCS51系列等不具有SPI接口的单片机组成的智能仪器和工业测控系统中,当传输速度要求不是太高时,使用SPI总线可以增加应用系统接口器件的种类,提高应用系统的性能15。 4.1.1 SPI总线的组成SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到10Mbps。SPI接口内部硬件如图4.1所示。SPI接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号: (1) MOSI 主器件数据输出,从器件数据输入; (2) MISO 主器件数据输入,从器件数据输出; (3) SCLK 时钟信号,由主器件产生;(4) SS从器件使能信号,由主器件控制。图 4.1 SPI接口内部硬件图三线SPI组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其它设备为SPI从机或从设备(Slave)。利用SPI总线可在软件的控制下构成各种系统。如1个主MCU和几个从MCU、几个从MCU相互连接构成多主机系统(分布式系统)、1个主MCU和1个或几个从I/O设备所构成的各种系统等。在大多数应用场合,可使用1个MCU作为控机来控制数据,并向1个或几个从外围器件传送该数据。从器件只有在主机发命令时才能接收或发送数据。SPI总线接口系统的典型结构如图4.2所示15。 SCKMOSIMISO MCU(主)I/OI/OI/OI/O外围器件1外围器件2外围器件nSCKMOSIMISOMCU(从)CS图4.2 SPI总线接口系统的典型结构4.1.2 SPI接口的原理和应用当一个主控机通过SPI与几种不同的串行I/O芯片相连时,必须使用每片的允许控制端,这可通过MCU的I/O端口输出线来实现。但应特别注意这些串行I/O芯片的输入输出特性:首先是输入芯片的串行数据输出是否有三态控制端。平时未选中芯片时,输出端应处于高阻态。若没有三态控制端,则应外加三态门。否则MCU的MISO端只能连接1个输入芯片。其次是输出芯片的串行数据输入是否有允许控制端。因此只有在此芯片允许时,SCK脉冲才把串行数据移入该芯片。在禁止时,SCK对芯片无影响。若没有允许控制端,则应在外围用门电路对SCK进行控制,然后再加到芯片的时钟输入端。四线SPI模式用附加控制线,来允许从机数据的发送和接收,它由主机控制。SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,其工作原理图如图4.3所示。SCKMOSIMISO6701452310763254主机从机图4.3 SPI工作原理图 如果用通用I/O口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。SPI不需要固定的波特率,因为它是有时钟的协议。在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。SPI接口工作时序如图4.4所示,在SCLK的下降沿上数据改变,同时一位数据被存入移位寄存器15。图 4.4 SPI接口工作时序图4.1.3 利用I/O口模拟SPI使用STC89C51单片机的I/O口来模拟SPI的操作原理如图4.5所示。P2.22.1CSP2.4MOSI射频模块89C52CLKNRF2401P2.5DATAMISOMCU单片机图4.5 SPI接口连接原理图I/O口模拟SPI口流程图如4.6所示。使用P2.2、P2.5、P2.4模拟SPI的CS、DATA、CLK1。对于不同的串行接口外围芯片,它们的时钟时序是不同的。对于在CLK的上升沿输入(接收)数据和在下降沿输出(发送)数据的器件,将其串行时钟输出口CLK的初始状态设置为0,而在接收后再置CLK为1。这样,单片机在输出1位CLK时钟的同时,将1位数据通过STC89C51单片机的P2.3口输出给无线发送模块的DATA引脚(模拟MCU的MOSI线)。此后再置CLK为0,模拟下1位数据的输入输出,依此循环8次,即可完成1次单片机通过SPI总线向nRF2401传输8位数据的操作。此函数功能是模拟SPI口写一字节数据13。NRF_CLK1=0; /时钟初始为0for(i=8;i>0;i-) if(c&0x80) NRF_DATA=1; else NRF_DATA=0; NRF_CLK1=1;/ 上升沿触发c<<=1;NRF_CLK1=0; 同理,无线接收模块在接收到数据时通过DR1引脚通知单片机从发送模块中取出数据。无线接收模块在CLK的上升沿输入(接收)数据和在下降沿将接受到的数据输出给STC89C51单片机的P2.3(模拟MCU的MISO线)1位数据。此后再置CLK为0,模拟下1位数据的输入输出,依此循环8次,即可完成1次nRF2401通过SPI总线向单片机传输8位数据的操作15。开始设置时钟信号CLK1输出引脚为低电平设置DATA为低电平发送数据左移1位,i+设置时钟信号CLK1输出引脚为高电平YNYN发送最高位为1设置DATA为高电平i7结束图 4.6 I/O模拟SPI接口传输数据流程4.2 无线传输模块软件设计及实现4.2.1 nRF2401的工作模式转换nRF2401有工作模式有四种:收发模式、配置模式、空闲模式和关机模式。nRF2401的工作模式由PWR_UP 、CE和CS三个引脚决定,如表4.1所示。PWR_UP决定是否处在关机模式, CE决定是否允许收发信号,分别与单片机的P2.0、P2.1连接。掌握其工作模式配置是编程序时各模式之间的切换的前提。nRF2401A的收发模式有ShockBurstTM收发模式和直接收发模式两种,收发模式由器件配置字决定。根据本设计的要求和综合考虑,本系统采用ShockBurstTM收发模式。使nRF2401工作于ShockBurstTM收发模式,系统的程序编制会简单,并且稳定性也会更高。在Shockburst TM模式下,nRF2401使用片内的先入先出堆栈区,数据低速从微控制器送入,以高速(1Mbps或者250kbps)发射数据,这样可以尽可能的节能,低耗,并且使用STC89C51也能实现高速的发射速率。而且,与射频协议相关的所有高速信号处理都在片内进行,这种做法有三大好处:节能;低的系统费用(低速微处理器也能进行高速射频发射);数据在空中停留时间短,抗干扰性高。nRF2401A的ShockBurstTM技术同时也减小了整个系统的平均工作电流。单片机对nRf2401的编程包括对nRF2401进行配置、发送数据、接收数据等子程序。表4.1 nRF2401A工作模式设置工作模式PWR_UP CECS收发模式110配置模式10 1空闲模式100关机模式0××对nRF2401工作模式的转换是通过对PWR_UP 、CE和CS的设定来完成的1216。例如使nRF2401切换到发送模式,程序如下:首先使三个引脚分别为1、0、1使器件工作在配置模式,然后延时,再使其配置为发送模式。 NRF_PWR=1;NRF_CE=0; NRF_CS=1; / 101使器件切换到配置模式NRF_Delay(); NRF_DATA=0;/ RXEN=0: 发送模式 NRF_CLK1=1; NRF_CLK1=0; NRF_CE=1; NRF_CS=0; NRF_Delay();4.2.2 Shockburst TM模式下数据帧格式nRF2401内置CRC纠检错硬件电路和协议,发射数据时自动加上处理字头和CRC码,接收数据时自动把字头和CRC码移去。每个芯片可通过软件设置最多40 bit地址,而且只有收到与本机地址一致时才会接收数据。nRF2401在突发传递模式下的帧格式见图4.7所示。REAMBLEADDRESSPAYLOADCRC图 4.7 nRF2401的帧格式REAMBLE 为数据包头,可设为4 bit 或8 bit。它的值与ADDRESS 第1 位有关。当ADDRESS 第1 位为0时,包头取值为01010101,反之则为10101010。一帧数据从ADDRESS 到CRC 最多包含256 bit。ADDRESS 为接收方通道硬件地址段,可设定为840 bit,只有符合本机硬件地址的数据帧才会被接收。CRC 为数据校验段,可设定8 bit 或16 bit 校验位。PLYLOAD 段为待发送数据段, 长度为帧长度减去ADDRESS 段和CRC 段的长度。发送数据时,控制器将数据写入nRF2401,控制其将数据按帧格式打包无线发送;接收数据时,nRF2401 一旦检测到符合本机硬件地址的数据帧, 便将数据帧解包,DR 信号置1 请求控制器读取数据12。4.2.3 nRF2401的配置模式流程nRF2401上电以后首先必须通过STC89C51对其进行配置,单片机首先将nRF2401设为配置模式,nRF2401的所有配置工作都是通过CS、CLK1和DATA三个引脚完成,把其配置为ShockBurstTM收发模式需要15字节的配置字。nRF2401配置字各个位如表5.1所示:表4