毕业设计(论文)-无线发射和接收的通信系统.doc_第1页
毕业设计(论文)-无线发射和接收的通信系统.doc_第2页
毕业设计(论文)-无线发射和接收的通信系统.doc_第3页
毕业设计(论文)-无线发射和接收的通信系统.doc_第4页
毕业设计(论文)-无线发射和接收的通信系统.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

本本 科科 毕毕 业业 论论 文文 无线发射和接收的通信系统 transmitting and receiving wireless communication system 系(院)名称: 计算机科学与信息工程系 专业班级: 10 届计算机科学与技术(专升本) 学生姓名: 学生学号: 指导教师姓名: 指导教师职称: 讲 师 2010 年 5 月 2 毕业设计(论文)原创性声明和使用授权说明毕业设计(论文)原创性声明和使用授权说明 原创性声明原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下 进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方 外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得安 阳工学院及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮 助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名: 日 期: 指导教师签名: 日 期: 使用授权说明使用授权说明 本人完全了解安阳工学院关于收集、保存、使用毕业设计(论文)的规定, 即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕 业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用 影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学 校可以公布论文的部分或全部内容。 作者签名: 日 期: 无线发射和接收的通信系统 摘要摘要: : 随着通信和信息技术的不断发展,有线通信已经远远不能满足人们的需要,因此 无线传输技术的应用越来越广,渐渐的被各行各业所接受,替代以往的有线通信。无线 通信是利用电磁波信号可以在自由空间中传播的特性进行信息交换的一种通信方式,近 些年信息通信领域中,发展最快、应用最广的就是无线通信技术。在移动中实现的无线 通信又通称为移动通信,人们把二者合称为无线移动通信。 近十几年来,随着移动通信技术飞速发展,越来越多的信息采集和远程控制系统采 用了无线数据传送技术,它与有线数据传输相比主要有布线成本低、安装简便、便于移 动的优点,而且随着互联网技术的迅猛发展和快速普及,越来越多的基于单片机为微控 制器的的测控设备或智能仪器仪表都需要通过无线设备进行数据的交换或传输。 无线通信系统的应用很广,大到移动通信系统,小到遥控车,但是无论系统大小还 是复杂简单,都主要有无线发射端、传输媒体和无线接收端构成,通过发射端发射信号, 传输媒体传输信号,接收端接收信号,从而完成数据的无线传输。本文主要是完成了基 于 nrf24l01 无线模块的无线发射和接收的通信系统,主要实现两个单片机之间的数据传 输,系统有无线发射模块,无线接收模块,以及两个 atmega48 单片机组成。 关键词关键词: : 单片机 无线通信 nrf24l01 模块 atmega48 transmitting and receiving wireless communication system abstract: as the communications and information technology continues to evolve, cable communications far can not meet peoples needs, so the wireless transmission technology used more and more, gradually been accepted by all walks of life, replacing the traditional wired communications. wireless communication is the use of electromagnetic waves in free space signal propagation characteristics of an exchange of information communication, information and communication field in recent years, the fastest growing, most widely used is the wireless communication technology. implemented in the mobile wireless communications it is known as mobile communication, people both collectively referred to as wireless mobile communications. over the last decade, with the rapid development of mobile communication technology, more and more of the information collection and remote control system uses a wireless data transmission technology, it compared with the main data transmission cable wiring, low cost, easy to install and easy to move advantage, and with the rapid development of internet technology and rapid spread, more and more as the micro-controller based on single chip of the measuring and controlling equipment or instruments are smart wireless devices jinxing through the exchange or transfer data. the application of wireless communication system wide, large mobile communication systems, small remote control car, but no matter simple system size and complexity, are mainly a wireless transmitter, transmission media, and wireless receiver end pose, launched by the transmitter signals, transmission media transmission signal, the receiver receiving the signal, thus completing the wireless transmission of data. this article is the wireless module is completed based on nrf24l01 transmit and receive wireless communication system, the main achievement data transmission between the two mcusystem with wireless transmission module, wireless receiver modules, and two atmega48 mcu. key words: mcu;wireless communication;nrf24l01 module;atmega48 i 目 录 引 言.1 第 1 章绪论.2 1.1 设计概况 .2 1.1.1设计背景2 1.1.2实现的可行性2 1.2 设计思路 .2 1.2.1硬件设计思路 .3 1.2.2软件设计思路 .3 第 2 章atmega48 单片机介绍4 2.1 atmega48 芯片概述 .4 2.1.1atmega48 芯片的系统构成 4 2.1.2atmega48 芯片存储器的组织 4 2.2 atmega48 芯片 cpu 内核 .6 2.2.1atmega48 结构的方框图7 2.2.2寄存器详述 7 第 3 章nrf24l01 无线模块特性.10 3.1 nrf24l01 的结构方框图 .10 3.2 nrf24l01 的引脚功能及其封装 10 第 4 章 硬件设计.12 4.1 硬件电路总体设计 12 4.1.1总体设计框图 .12 2.1.2系统组成模块 .12 4.2 atmega48 芯片与 nrf24l01 无线模块连接电路设计 14 4.3 spi 通讯模块设计 .16 4.3.1spi 概述及典型通讯流程 16 4.3.2spi 工作模式17 ii 4.3.3spi 寄存器.17 4.4 按键设置电路 .21 4.4.1按键开关去抖动21 4.4.2按键电路图22 第 5 章软件设计及系统测试23 5.1 软件总体设计流程 23 5.2 nrf24l01 的初始化 .23 5.3 nrf24l01 的数据收发 .24 5.4 系统测试 .24 结论.26 致谢.27 参考文献28 附录 a29 附录 b30 附录 c31 1 引 言 近几年来,全球通信技术的发展日新月异,尤其是近两三年来,无线通信技术的发 展速度与应用领域已经超过了固定通信技术,呈现出如火如荼的发展态势。 其中最具代 表性的有蜂窝移动通信、宽带无线接入,也包括集群通信、卫星通信,以及手机视频业 务与技术。无线通信领域各种技术的互补性日趋鲜明。主要表现在不同的接入技术具有 不同的覆盖范围,不同的适用区域,不同的技术特点,不同的接入速率。比如 3g 和 wlan、uwb 等,都可实现互补效应。3g 可解决广域无缝覆盖和强漫游的移动性需求, wlan 可解决中距离的较高速数据接入,而 uwb 可实现近距离的超高速无线接入。因此, 在政策上我们应该综合推进各种无线接入的发展,推进组网的一体化进程,通过建网的 接入手段多元化,实现对不同用户群体的需求覆盖,达到市场细分和业务的多元化,解 决移动通信发展不均衡的状况。 从公众移动通信网络发展来看,3g 已经成为全球包括中国移动网络演进的主要进程。 从欧美发达国家的经验来看,由于其移动话音用户的普及率高,通过发展用户实现增长 的模式已成为历史。因此,他们期望通过 3g 搭建更大的业务平台,从而实现利润的新来 源。由于 3g 技术的成熟,目前 3g 商用网络部署已经在全球范围内启动。就我国而言, 也要借鉴欧美的经验,在用户数量增长放缓之前,就应提前培育新兴移动市场。目前, 政府应该开始积极考虑 3g 牌照发放和商用问题,把握住这个移动业界的巨大历史机遇。 随着嵌入式系统和无线通信技术的迅速发展,无线通信系统已经是当今科技上必不 可少的,它可以实现多方之间的无线通信以及更复杂的功能。因此在毕业之际,我想用 自己所学的嵌入式知识和无线通信常识来设计无线发射和接收的通信系统。由于时间仓 促,设计中可能还有很多不尽如人意的地方,还请大家谅解。 2 第 1 章绪论 本章主要介绍了本设计的概况,设计背景和主要实现的功能,以及硬件设计思路和 软件设计思路。 1.1设计概况 本设计主要实现了 2 个 atmega48 单片机之间的无线数据传输,并且通过 led 灯显示 出来。 1.1.1 设计背景 近些年来,随着无线技术的飞速发展,人们在日常生活中对于无线设备的需求越来 越紧迫,特别是在移动通信,办公,家庭中应用越来越广。无线通信有以下优点:1成 本廉价 2建设工程周期短 3适应性好 4扩展性好 5设备维护上更容易实现。这些 优点已经普遍被认同,所以无线通信的技术的发展越来越快。 1.1.2 实现的可行性 在此系统的设计中,主要采用由 atmel 公司研发的高性能、低功耗的 8 位 avr 微 处理器 avr48(atmega48 的简称),和由 nordic 公司研发的 nrf24l01 无线通信模块 。 此外还有按键和 led 灯,通过发射端按键发射数据,接收端led 灯显示数据。 avr48 单片机具有先进的 risc 结构,非易失性的程序和数据存储器 ,4k 字节的系 统内可编程 flash,擦写寿命达 10,000 次,具有独立锁定位的可选 boot 代码区, 通过片上 boot 程序实现系统内编程 ,两个具有独立预分频器和比较器功能的8 位定 时器。 nrf24l01 无线通信模块 采用 fsk 调制,内部集成 nordic 自己的 enhanced short burst 协议。可以实现点对点或是 1 对 6 的无线通信。无线通信速度可以达到 2m(bps) 。 使用的器件均比较常见,经济实用,适合学生在校期间做项目使用。 1.2设计思路 本系统主要采用主控制器 avr48 单片机和 nrf24l01 无线通信模块来实现 系统的 3 主要功能。 1.2.1 硬件设计思路 硬件设计是整个系统的基础,要考虑的方方面面很多,除了实现此设计基本功能 以外,主要还要考虑如下几个因素: 系统稳定度; 器件的通用性或易选购性; 软件编程的易实现性; 系统其它功能及性能指标;因此硬件设计至关重要。 主要设计包括以下四部分: 单片机发射模块:此模块主要包过atmega48 芯片和按键控制模块,单片机作为 整个硬件系统的核心,它既是协调整机工作的控制器,又是数据处理器。关于 atmega48 芯片的体系结构在第二章会有详细的介绍。 单片机接收模块:此模块主要有 atmega48 单片机构成。详见第二章。 无线发射和接收模块:发射和接收模块主要有 两个 nrf24l01 无线模块构成,一 个负责无线发射信号,一个负责无线接收信号。从而实现数据的无线传输。 1.2.2 软件设计思路 主程序比较简单,各模块初始化完成后,调用 nrf24l01 发射程序,发射由键盘接收 来的数据,接收端调用接收程序,接收并通过 led 显示。 在软件设计过程中主要的操作有atmega48的初始化,nrf24l01模式的配置, nrf24l01传送和接收数据,nrf24l01发送错误处理等等。 在发送端主要设置atmega48的初始化,先把nrf24l01配置成ptx工作模式。然后判断 按键模块是否传来数据,若有则启动nrf24l01发送数据。若发送成功,则产生tx_ds中断; 若重发超限,则产生max_rt中断;若发送成功,则继续发送,否则进行出错处理。接收 端atmega48完成初始化后把nrf24l01配置成prx工作模式。当正确接收数据时, nrf24l01产生接收中断标志,atmega48从nrf24l01读取数据并传送个led显示模块。 4 第 2 章atmega48 单片机介绍 atmega48 单片机具有先进的 risc 结构,非易失性的程序和数据存储器 ,4k 字节 的系统内可编程 flash,擦写寿命达 10,000 次,具有独立锁定位的可选 boot 代码 区,通过片上 boot 程序实现系统内编程 ,两个具有独立预分频器和比较器功能的8 位定时器。 2.1 atmega48 芯片概述 atmega48 单片机主要有一下特点: 1.高性能、低功耗 8 位单片机,risc 结构,最高 20mips 的速度; 2.atmega48 片内有 4k 可在线编程 (isp)flash rom,可擦写 10,000 次; 3.atmega48 片内有 512 字节 sram 和 256 字节 eeprom,可以对锁定位进行编程以 实现用户程序的加密 。 2.1.1 atmega48 芯片的系统构成 atmega48 单片机主要有一下部件构成: 1两个具有独立预分频器和比较器功能的8 位定时器/计数器 2. 一个具有预分频器、比较功能和捕捉功能的16 位定时器/计数器 3. 具有独立振荡器的实时计数器 rtc 4. 六通道 pwm 5. 8 路 10 位 adc(tqfp 与 mlf 封装) 6. 6 路 10 位 adc( pdip 封装) 7. 可编程的串行 usart 接口 8. 可工作于主机 /从机模式的 spi 串行接口 9. 面向字节的两线串行接口 10.具有独立片内振荡器的可编程看门狗定时器 11.片内模拟比较器 12.引脚电平变化可引发中断及唤醒 mcu 2.1.2 atmega48 芯片存储器的组织 atmega48 单片机主要有 sram 数据存储器空间 和 eeprom 数据存储器空间 和 5 flash 程序存储器空间。此外,还有 i/o 存储器空间 。这些存储器空间都为线性 的 平面结构。 sram 数据存储器 :atmega48 是一个复杂的微控制器,其支持的外设要比预留的 64 个 i/o(通过 in/out 指令访问)所能支持的要多。对于扩展的 i/o 空间段 0x60 - 0xff 只能使用 st/sts/std 和 ld/lds/ldd 指令。前 768 个数据存储器包括了寄存器 文件,i/o 存储器,扩展的 i/o 存储器以及数据 sram。起始的 32 个地址为寄存器 文件,然后是 64 个 i/o 存储器,接着是 160 个扩展 i/o 存储器。最后是 512 字节的 数据 sram。atmega48 的 sram 空间组织结构如下图所示: 图 2-1 sram 空间组织结构 atmega8 单片机内部数据 sram 访问时间为两个 clkcpu 时钟,片上数据 sram 访问周 期如下图所示: 图 2-2 片上数据 sram 访问周期 eeprom 数据存储器: atmega48 包含 256 字节的 eeprom 数据存储器。它是作为一个 独立的空间而存在的,可以按字节读写。eeprom 的寿命至少为 100,000 次擦除周期。 6 eeprom 的访问由地址寄存器,数据寄存器和控制寄存器决定。eeprom 读/ 写访问 eeprom 的访问寄存器位于 i/o 空间。自定时功能可以让用户监测何时开始写下一字节。如果用 户要操作 eeprom,应当注意如下问题:在电源滤波时间常数比较大的电路中,上电/下电 时 vcc 上升/下降速度会比较慢。此时 cpu 将工作于低于晶振所要求的电源电压。为了 防止无意识的 eeprom 写操作,在写 eeprom 时需要执行一个特定的写时序。当执行 eeprom 读操作时, cpu 会停止工作 4 个周期,然后再执行后续指令;当执行 eeprom 写 操作时,cpu 会停止工作 2 个周期,然后再执行后续指令。 flash 程序存储器: atmega48 具有 4 字节的在线编程 flash,用于存放程序指令 代码。因为所有的 avr 指令为 16 位或 32 位,故而 flash 组织成 2k x 16。atmega48 中没有分为引导程序区和应用程序区, spm 指令可在整个 flash 中执 行。存储器至少可以擦写 10,000 次。atmega48 的程序计数器 (pc)为 11 位,因此可 以寻址 2k 的程序存储器空间。 atmega48 的程序存储器映像 如图所示: 图 2-3 atmega48 的程序存储器映像 2.2atmega48 芯片 cpu 内核 cpu 的主要任务是保证程序的正确执行。因此它必须能够访问存储器,执行运算, 控制外设以及处理中断。 7 2.2.1 atmega48 结构的方框图 图 2-4 结构方框图 2.2.2 寄存器详述 (1)状态寄存器 状态寄存器包含了最近执行的算术指令的结果信息。这些信息可以用来改变程序 流程以实现条件操作。如指令集所述,所有alu 运算都将影响状态寄存器的内容。这 样,在许多情况下就不需要专门的比较指令了,从而使系统运行更快速,代码效率更 高。 在进入中断服务程序时状态寄存器不会自动保存;中断返回时也不会自动恢复。 这些工作需要软件来处理。 avr 中断寄存器 sreg 定义如下所示: 8 图 2-5 中断寄存器 bit 7 i: 全局中断使能 置位时使能全局中断。单独的中断使能由其他独立的控制寄存器控制。如果i 清零,则不论单独中断标志置位与否,都不会产生中断。任意一个中断发生后i 清 零,而执行 reti 指令后置位以使能中断。 i 也可以通过 sei 和 cli 指令来置位和清 零。 bit 6 t: 位拷贝存储 位拷贝指令 bld 和 bst 利用 t 作为目的或源地址。 bst 把寄存器的某一位拷贝到 t,而 bld 把 t 拷贝到寄存器的某一位。 bit 5 h: 半进位标志 半进位标志 h 表示算术操作发生了半进位。此标志对于bcd 运算非常有用。 bit 4 s:符号位, s = nv s 为负数标志 n 与 2 的补码溢出标志 v 的异或。 bit 3 v: 2 的补码溢出标志 支持 2 的补码运算。 bit 2 n: 负数标志 表明算术或逻辑操作结果为负。 bit 1 z: 零标志 表明算术或逻辑操作结果为零。 bit 0 c: 进位标志 表明算术或逻辑操作发生了进位。 (2)x、y、z 寄存器 寄存器 r26r31 除了用作通用寄存器外,还可以作为数据间接寻址用的地址指针。 这三个间接寻址寄存器示于 下图。 9 图 2-6 x、y、z 寄存器 (3)堆栈指针 堆栈指针主要用来保存临时数据、局部变量和中断 /子程序的返回地址。堆栈指 针总是指向堆栈的顶部。要注意 avr 的堆栈是向下生长的,即新数据推入堆栈时,堆 栈指针的数值将减小。 堆栈指针指向数据 sram 堆栈区。在此聚集了子程序和中断堆栈。调用子程序和 使能中断之前首先要定义堆栈空间,而且堆栈指针必须指向高于0x0100 的地址空间, 最好为 ramend。使用 push 指令将数据推入堆栈时指针减一;而子程序或中断返回地 址推入堆栈时指针将减二。使用 pop 指令将数据弹出堆栈时,堆栈指针加一;而用 ret 或 reti 指令从子程序或中断返回时堆栈指针加二。 avr 的堆栈指针由 i/o 空间中的两个 8 位寄存器实现。实际使用的位数与具体器 件有关。注意到某些 avr 器件的数据区太小,用 spl 就足够了。此时将不给出 sph 寄存器。 10 第 3 章nrf24l01 无线模块特性 nrf24l01 是单片射频收发芯片,工作于 2.425 ghz ism 频段。工作电压为 193.6 v,有多达 125 个频道可供选择。可通过 spi 写人数据,最高可达 10 mb/s,数据传输率最快可达 2mb/s,并且有自动应答和自动再发射功能。和上一代 nrf2401 相比,nrf2401 数据传输率更快,数据写入速度更高,内嵌的功能更完备。 芯片内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,并融进了 增强式 shockburst 技术,其中输出功率和通信频道可通过程序进行配置。芯片能耗 非常低,以-6dbm 的功率发射时,工作电流只有 9ma,接收时工作电流只有 12.3ma,多种低功率工作模式 (掉电模式和空闲模式 )使节能设计更方便。 3.1nrf24l01 的结构方框图 图 3-1 nrf24l01 及外部接口 3.2nrf24l01 的引脚功能及其封装 nrf24l01 的引脚及功能如下图所示: 11 引脚引脚名称名称引脚功能引脚功能描述描述 1ce数字输入rx 或 tx 模式选择 2csn数字输入spi 片选信号 3sck数字输入spi 时钟 4mosi数字输入从 spi 数据输入脚 5miso数字输出从 spi 数据输出脚 6irq数字输出可屏蔽中断脚 7vdd电源电源(+3v) 8vss电源接地(0v) 9xc2模拟输出晶体振荡器 2 脚 10xc1模拟输入晶体振荡器 1 脚/外部时钟输入脚 11vdd_pa电源输出给 rf 的功率放大器提供的+1.8v 电源 12ant1天线天线接口 1 13ant2天线天线接口 2 14vss电源接地(0v) 15vdd电源电源(+3v) 16iref模拟输入参考电流 17vss电源接地(0v) 18vdd电源电源(+3v) 19dvdd电源输出去耦电路电源正极端 20vss电源接地(0v) 图 3-2 nrf24l01 的引脚及功能 nrf24l01 无线模块主要有 20 引脚,采用 qfn 封装,其引脚封装图如下所示: 图 3-3 引脚封装 12 第 4 章 硬件设计 本次设计的硬件 主要由单片机发射模块,单片机接收模块 ,nrf24l01 无线模块 部分构成。下面从总体设计入手,进而对这 三部分电路设计做详细介绍。 4.1硬件电路总体设计 硬件设计是整个系统的基础,要考虑的方方面面很多,除了实现此设计基本功能 以外,主要还要考虑如下几个因素: 系统稳定度; 器件的通用性或易选购性; 软件编程的易实现性; 系统其它功能及性能指标;因此硬件设计至关重要。 4.1.1 总体设计框图 电源 avr48 电源 avr48 按键 led nrf24l01nrf24l01 图 4-1 总体设计框图 2.1.2 系统组成模块 (1) 单片机发射模块 单片机发射模块的核心主要有单片机 主控模块,按键模块,还有电源模块单片机 主控模块主要有 atmega48 单片机组成,下面对其一一介绍。 单片机主控模块:单片机作为整个硬件系统的核心,它既是协调整机工作的控制 13 器,又是数据处理器。 atmega48 单片机具有先进的 risc 结构,非易失性的程序 和数 据存储器,4k 字节的系统内可编程 flash,擦写寿命达 10,000 次,具有独立锁定位 的可选 boot 代码区,通过片上 boot 程序实现系统内编程 ,两个具有独立预分频器 和比较器功能的 8 位定时器。其引脚电路图如下所示: 图 4-2 avr 引脚图 按键模块:按键模块主要有 8 个按键组成,分别控制接收板 led 的显示,其电 路图如下所示: 图 4-3 按键模块电路图 14 电源模块:电源模块主要有 2 节 7 号电池和电池夹构成,可以提供 3v 电源,直 接供 atmega48 单片机直接使用,不用进行 电压转换。此模块电路图如下: 图 4-4 电源模块电路图 (2) 单片机接收模块 单片机接收模块主要有单片机主控模块,电源模块和led 显示模块,单片机主 控模块和电源模块在上面已经介绍过了,下面主要介绍led 显示模块。 led 显示模块功能比较简单,主要负责显示发射端发过来的数据,用一个发光二 极管就可以表示出来,和单片机的pb7 口相连。 (3) nrf24l01 无线模块 nrf24l01 无线模块是发射和接收集成的模块,因此在此设计中要用到两个 nrf24l01 模块,一个负责发射数据,和单片机发射模块相连,一个负责接收数据,和 单片机接收模块相连。 4.2atmega48 芯片与 nrf24l01 无线模块连接电路设计 电路连接图如下 : 15 pb2 pb1 pb0 pd7 pd6 pd5 vcc gnd 接地 电源 irq miso misi sck csn ce vcc gnd atmega48 nrf24l01 图 4-5 avr48 与 nrf24l01 电路连接图 本设计采用 6 线插槽实现单片机 atmega48 与 nrf24l01 的连接,具体连接如上图 所示,从单片机控制的角度来看,我们只需关注 nrf24l01 的六个控制和数据信号,分别 为 csn、sck、miso、mosi、irq、ce。 csn:芯片的片选线, csn 为低电平芯片工作。 sck:芯片控制的时钟线( spi 时钟)。 miso:芯片控制数据线( master input slave output)。 mosi:芯片控制数据线( master output slave input)。 irq:中断信号。无线通信过程中 mcu 主要是通过 irq 与 nrf24l01 进行通信。 ce:芯片的模式控制线。在 csn 为低的情况下, ce 协同 nrf24l01 的 config 寄 存器共同决定 nrf24l01 的状态。 atmega48 单片机连接到 nrf24l01 无线模块的八个引脚,通过 nrf24l01 的八个 头针与一个八孔插槽连接, nrf24l01 的无线模块引脚头针如下所示: 图 4-6 引脚头针图 1 gnd2 vcc 3 ce4 csn 5 sck6 mosi 7 miso8 irq 16 4.3spi 通讯模块设计 4.3.1 spi 概述及典型通讯流程 spi 是串行设备接口( serial peripheral interface)的英文缩写,是一种主 从式的同步通信协议。一个典型的spi 接口通常由一根同步时钟信号线 sck、一根 主机发送从机接收的数据线 mosi、一根从机发送主机接收的数据线miso 和一根 (或若干)用于主从机通讯同步控制信号线ss(或片选 cs 信号)组成,如下图所示: 图 4-7 spi 典型总线 atmega48 单片机上集成了硬件 spi 模块。通过简单的寄存器设置就可以实现 spi 通讯协议。在 spi 模块的内部有一个 8 位移位数据寄存器 spdr,用于保存用户 需要发送的字节;同时通过通讯接收到的数据也保存在该寄存器中。逻辑上,该移位 寄存器的输入和输出端连接着 mosi 和 miso 引脚。该数据寄存器中有一个读取缓冲, 系统每完成一个字节的移位通讯就会自动将接收的数据复制到读取缓冲中,该数据直 到下次通讯完成前都是有效的。对该缓冲区的访问是硬件自动完成的,使用与移位寄 存器 spdr 相同的地址。没有写入缓冲。 一个使用查询方式的 spi 主机典型通讯流程如下: 1. 初始化 spi 模块,包括工作模式、时钟频率、时钟极性等; 2. 初始化 spi 引脚。将所有需要输出信号的 gpio 设置为电平输出模式。包括 ss、sck 和 mosi。将 ss 设置为高电平,其它引脚任意; 3. 将 ss 引脚设置为低电平以通知从机准备进行数据交换; 4. 将要发送的数据送入 spdr 寄存器,触发一次通讯。 5. 不停的检查 spsr 寄存器的 spif 标志,等待通讯完成。 17 6. 从 spdr 中读取从机发送过来的 数据,并向 spsr 的 spif 位写“1”清除标志。 如果还有需要发送的数据,从 步骤 4 开始继续操作;如果通讯已经完成,将 ss 引脚拉高迫使从机尽如通讯 复位状态,等待下一次传输。 4.3.2 spi 工作模式 spi 的工作模式主要有 3 种:主机模式、从机模式和双工模式。 主机模式。在主机模式下,串行时钟 (sck)由 s12 内部时钟分频得到,用来同步 主从双方的移位寄存器。当向 spi 的数据寄存器写人数据后,数据传送开始。如果此 时 spi 的移位寄存器为空,则数据立即被传送到移位寄存器,数据在串行时钟(sck) 的控制下从 mosi 引脚串行移出,传送到从机设备。 在主机模式下, spc00,mosi 被定义为主机输出 /从机输入 (masteroutput/slavelnput),在 mosi 向从机设备传送数据的同时, miso 提供了由 从机向主机传送数据的通道, mosi 的传送是同步的。 从机模式。当 spi 控制寄存器 spicrl 中的 mstr 位清零时, spi 工作在从机模式。 在从机模式下,串行时钟 (sclk)由主机产生,从机 spi 的 sck 引脚作为输入口。 ss 引脚为从机的片选引脚,处于输入状态。从机通过由主机产生的串行时钟(sclk)与 主机同步进行数据的读 /写;即从 mosi 口读人数据,从 miso 口输出数据。 双工模式。当 spi 控制寄存器 spicr2 的 spc0l 时,spi 系统工作在双工模式 下。在双工模式下,不管是主机模式或还是从机模式都只用一个引脚进行数据传输。 数据传输的方向通过 spicr2 寄存器的 bidiroe 位来设置。 4.3.3 spi 寄存器 (1) spi 控制寄存器 1spicr1 表 1 spi 控制寄存器 1spicr1 spie:spi 中断使能位。每次 spisr 中 spif 或 modf 标志置位时,发出硬件中断 请求。 0 spi 中断禁止; 1 spi 中断使能。 18 spe:spi 系统使能位(spisystemenable)。 0 spi 系统禁止; 1 spi 系统使能。 sptie:spi 数据传输中断使能。每次 sptef 标志置位时,发出 spi 中断请求。 0 spief 中断禁止; 1 spief 中断使能。 mstr:spi 主从模式位 (spimaster/slavemode)。 0 随从模式; 1 主控模式。 cpol:spi 时钟极性位。该位选择 spi 反相或不反相。数据在 spi 模块中传输, spi 模块必须使用同样的 cpol 值。 0 时钟选择高电平激活, sck 闲置为低电 平; 1 时钟选择低电平激活, sck 闲置为高电平。 cpha:spi 时钟相位选择位 (spi clock phasebit)。该位用于 sck 串行时钟的移 位。 0 sck 第一个时钟边沿在 8 周期数据传输操作的第一个周期的中间时开始传输; 1 sck 第一个时钟边沿在 8 周期数据传输操作开始时传输。 ssoe:随从选择输出使能位。该位的输出特性仅用于主控模式。 lsbfe:lsb 在先使能位(lsbfirstenablebit)。 0 数据以 msb 在先发送; 1 数据以 lsb 在先发送。 表 2 ss 输入/输出选择 (2) spi 控制寄存器 2spicr2 19 表 3 spi 控制寄存器 2spicr2 modfen:模式故障功能使能位。该位置位时允许spi状态寄存器modf标志置位。如果 modf标志置位,modfen清零并不能清零modf标志。如果spi工作于主机模式,modfen位为 低电平,ss引脚是无法使用spi通信模块的。当spi工作从机模式时,不管modfen位为何 值, ss引脚仅输入有效。 0 modf功能无效; 1 modf功能使能。 bidiroe:在双工模式下输出使能位。当spi配置成双工模式,该位与spcrl的msi一 起决定输出缓冲。 0 输出缓冲使能; 1 输出缓冲无效。 spiswai:在等待模式下spi停止位。在等待模式下,使用节电功能。 0 在等待模式下,停止产生spi时钟; 1 在等待模式下,spi时钟正常工作。 spc0:串行引脚控制位(serial pincontr01)。该位与mstr位一起决定串行引脚功能 的设置。 0 正常工作(miso、mosl); 1 双工模式工作 表 4 spi 的工作模式 (3) spi波特率选择寄存器spibr spi的波特率即spi系统工作时钟sck的频率由spibr的sppr2sppr0和spr2spr0来 确定。时钟速率可选值为p/2、p/4、p/8、p/16、p/32、p/64、p/128和p/56,当 pclk8mhz时,对应波特率为4.0mhz、2.0mhz、1.0mhz、500khz、250 khz、125khz、62.5 khz、31.25khz。 20 表5 spi波特率选择寄存器spibr sppr2sppr0:spi波特率预选择位。 spr2spr0:spi波特率选择位。 sppr2sppr0和spr2spr0确定spi的波特率。 (4)spi数据寄存器spidr spi数据寄存器具有输入、输出双重功能。对该寄存器进行读操作时所访问的输入部 分是双缓冲的,但写操作则直接将数据送到串行移位寄存器。 表6 spi数据寄存器spidr (5)spi状态寄存器spisr 表7 spi状态寄存器spisr spi状态寄存器显示spi的工作状态,有传输结束、写冲突和模式故障3个标志位。程 序可以通过读取spisr寄存器各位的数据检查各位的状态,也可以通过特定的寄存器访问 序列将标志位清零。 spif:spi中断请求位。在数据传输过程中,spif将在第8个sck周期后被置位,可通 过读spisr寄存器和spi数据寄存器spidr,清除spif位。 0 传输没有完成; 1 新数据复制到spidr。 sptef:spi传输空中断标志位。 0 spi数据寄存器不为空; 1 spi数据寄存器为空。 modf:spi模式错误标志位。当spi设置为主模式时,如果从选择引脚-ss输入低电平, 21 该位置位。当读取spi控制状态寄存器紧接着向spi控制寄存器写1时,该标志位自动 清零。仅有spicr2寄存器中的modefn置位,modf标志位才能置位。 0 模式错误未发生; 1 模式错误发生。 4.4按键设置电路 此设计用到的键盘比较少,所以采用独立式按键,电路配置灵活,软件结构简单。 设计用八个键。前七个建的功能一样。s1-s7 键发射一次,接收板上面led闪烁一次,代 表接收到数据一次。s8键按5秒,接收板上面的led持续闪烁,表示持续收到数据。 4.4.1 按键开关去抖动 键盘是人与微机打交道的主要设备,按键的读取容易引起误动作。可采用软件去抖 动 的方法处理,软件的触点在闭合和断开的时候会产生抖动,这时触点的逻辑电平是不稳 定 的,如不采取妥善处理的话,将引起按键命令错误或重复执行。 键盘通常使用机械触电式按键开关,其主要功能是把机械上的通断转换为电气上的 逻辑关系。也就是说,它能提供标准的ttl逻辑电平,以便与通用数字系统的逻辑电平相 容。 机械式按键在按下或抬起时,由于机械弹性作用的影响,通常伴随一定时间的触点 机械抖动,然后其触点才稳定下来,抖动的时间长短与开关的机械特性有关,一般为5- 10ms。在触点抖动期间检测按键的通与断状态,可能会导致判断错误。即按键一次按下 或抬起被错误地认为是多次按键动作,这种情况是不允许出现的。为了克服按键触点机 械抖动所致的检测误判,必须采取去抖动措施。 本设计采用软件方法去抖动,当检测到有键按下时,执行一个10ms 左右的延时程序 后,再确认该键电平是否仍保持在闭合状态电平,若仍保持在闭合状态电平,则确认该 键处于闭合状态;同理,在检测到该键抬起后,也应采用相同的步骤进行确认,从而可 消除抖动的影响。 22 4.4.2 按键电路图 sw1 r4 10k dc3.0v key1 sw2 r5 10k dc3.0v key2 sw3 r6 10k dc3.0v key3 sw4 r7 10k dc3.0v key4 sw6 r9 10k dc3.0v key6 sw7 r10 10k dc3.0v key7 sw8 r11 10k dc3.0v key8 r8 10k sw5 dc3.0v key5 图4-8 按键连接电路图 23 第5章 软件设计及系统测试 主程序比较简单,各模块初始化完成后,调用nrf24l01发送程序,发送由键盘接收 来的数据,接收端调用接收程序,接收并通过led显示。测试是一个必不可少的环节,测 试的目的是为了发现错误,进而分析出错误的原因,没有发现错误的测试也是有意义的 测试。 5.1软件总体设计流程 使用nrf24l01芯片进行无线数据通信时不需要进行曼彻斯特编码,编程和应用非常 方便。其中主要操作有atmega48的初始化,nrf24l01模式的配置,nrf24l01传送和接收 数据,nrf24l01发送错误处理等等。 发送端atmega48完成初始化后把nrf24l01配置成ptx工作模式。若从按键模块接收 到数据则启动nrf24l01发送数据。若发送成功,则产生tx_ds中断;若重发超限,则产 生max_rt中断;若发送成功,则继续发送,否则进行出错处理。接收端atmega48完成初 始化后把nrf24l01配置成prx工作模式。当正确接收数据时,nrf24l01产生接收中断标 志,atmega48从nrf24l01读取数据并传送个led显示模块。 软件设计总体流程图主要分为发送端流程图和接收端流程图,具体流程图如附录c所 示。 5.2nrf24l01的初始化 24 nrf24l01的初始化主要包括发送数据的配置和接收数据的配置,下面详细介绍: nrf24l01配置发送数据:在配置为发送数据时,nrf24l01发送数据包后,自动切换 到接收模式已接收返回的确认信号,当收到确认信号后,irq引脚产生数据发送完成中断, 如果没有握手信号返回。则表示发送失败,器件自动重新发送,如果重新发送的次数超 过在arc_cnt寄存器中的设定值时,会在irq引脚产生重发次数超限中断。mcu查询status 寄存器的值。即可判断是发送完成中断。还是重发次数超限中断。 nrf24l01配置接收数据:在配置为接收数据时,nrf24l01接收到数据包后,由硬件 解析地址数据和信息数据,当接收到有效信息数据后,在irq引脚产生中断,并通知外部 处理器读取数据。 5.3nrf24l01的数据收发 (1)发送数据 当nrf24l01模块配置成发送模式后,向发送fifo输入数据即可启动传 输。发送8 byte的程序如下: void nrf24l01_send_data(uint8*data) spi_write_buf(wr_tx_pload,data,8);/发送数据data spi_rw_reg (write_reg +reg +status,mask_irq_flags);/清除中断 (2)接收数据 当nrf24l01模块配置成接收模式后,在接收到数据中断发生时,从接 收fifo读取数据。接收8字节的程序如下: uint8 rx_pload8; uint8 nrf24l01_receive_data(void) while(irq_source!=rx_dr);/等待接收中断 spi_read_buf(rd_rx_pload,rx_pload,8);/接收中断 spi_rw_reg (write_reg +status,mask_irq_flags);/清除中断 irq_source= 0x00;/标志清零 return(rx_pload);/返回数据指针 25 5.4系统测试 系统测试连接图如下: 图5-1 系统测试连接图 整个系统测试由发射电路和接收电路构成,其中接受电路

温馨提示

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

评论

0/150

提交评论