已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科毕业设计题目导航卫星信号接收装置的嵌入式编程学生姓名: 朱佳程 专 业: 电子信息工程 指导教师: 袁红林 完成日期: 2015年 5月29日 诚 信 承 诺 书本人承诺:所呈交的毕业设计是本人在导师指导下进行的研究成果。除了文中特别加以标注和致谢的地方外,其中不包含其他人已发表或撰写过的研究成果。参与同一工作的其他同志对本研究所做的任何贡献均已在文中作了明确的说明并表示了谢意。 签 名: 日 期: 本论文使用授权说明本人完全了解南通大学有关保留、使用学位论文的规定,即:学校有权保留论文及送交论文复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容。(保密的论文在解密后应遵守此规定)学生签名: 指导教师签名: 日期: 南通大学毕业设计摘 要本课题主要研究我国的北斗卫星导航系统和美国的GPS卫星导航系统的信号接收装置。北斗卫星导航系统作为我国自主研发、独立控制的卫星导航系统,在可靠性和安全性方面拥有其他卫星导航系统所不能媲美的优势。而GPS作为目前应用最广泛的卫星导航系统,有着覆盖面广、精度高和实时性强等特点。二者各有优点和适用场合,因此出现了一类能够同时接收二者信号的接收模块,TD3020T便属于这类模块。本课题中我们使用STM32F103RC芯片和TD3020T模块来实现对导航卫星信号的接收,而且还能响应用户的命令,发送用户需要的数据。实验过程中我们运用Keil软件来编写程序代码,实现目标功能。实验结果表明,TD3020T模块对北斗卫星信号和GPS卫星信号都有良好的接收能力,而STM32F103RC芯片对数据的处理能力也十分优秀,同时在响应用户指令方面也表现良好。关键词:TD3020T模块;STM32F103RC芯片;导航卫星;嵌入式编程ABSTRACTThis topic researches the signal receiving device of the Beidou satellite navigation system and GPS satellite navigation system. Beidou navigation satellite system is researched and controlled by China alone. In terms of reliability and security, this navigation system is better than other navigation systems. The use of GPS satellite navigation system is the most widely. GPS has many characteristics, such as wide coverage, high precision and strong real-time. GPS and Beidou have different advantages and applicable occasions. Because of this, a sort of signal receiving module is invented. This module can receive the signal of both. TD3020T module is one of this kind module.In this subject, we write order to receive signal of satellite navigation system by using STM32F103RC ship and TD3020T module. By the order, TD3020T module can response the commands of users and send data which meets the needs of users. We write these orders by using Keil4.The experimental results show that TD3020T module has good reception on the Beidou satellite navigation system and GPS. These results also show that STM32F103RC ship is good at data processing and command response.Keywords: TD3020T module, STM32103RC ship, Navigation satellite, Embedded pro-gramming目 录摘 要3ABSTRACT4目 录5第一章 绪 论61.1 GPS/北斗二代61.2 GPS的应用61.3 北斗二代的应用81.3.1 监测道路和桥梁安全81.3.2 保障电力畅通91.3.3 监测大型灾害和协助救灾工作91.3.4 监测水文数据101.3.5 监测气象状况101.3.6 中国电信CDMA北斗授时应用101.3.7 海洋渔业应用11第二章 导航卫星信号接收装置122.1 TD3020T122.2 STM32F103RC132.3 仿真器14第三章 嵌入式编程153.1 Keil Vision4软件153.2 Keil Vision4软件开发流程153.3 软件架构163.4 部分程序代码及功能17第四章 系统联调234.1 系统结构234.2 实验结果23参考文献26致 谢27III第一章 绪 论1.1 GPS/北斗二代1958年,美国军方开始了关于GPS的研究,于1964年正式投入使用,到1994年全球覆盖率高达98%的24颗GPS卫星星座已布设完成。开发GPS的主要目的是为海陆空三大领域提供实时、全天候和全球性的导航服务。如今,GPS已经成为当今世界最实用,也是应用最广泛的全球精密导航、指挥和调度系统。GPS由三个主要部分组成,分别是:空间星座部分、地面监控部分和用户设备部分1星座部分由24颗卫星组成(21颗工作卫星;3颗备用卫星),它们均匀分布在6个轨道面上,每12小时绕地球一周。地面监控部分由监测站、主控制站、地面天线所组成,它负责接收卫星发送的信息,并进行校验。以上这两部分日常维护和检测由美国军方进行。用户设备部分即用户终端,其主要功能是捕获特定待测卫星信号,并跟踪卫星的运行。对所接收到的GPS导航电文进行编译,即时计算出终端的三维位置,实现利用GPS进行导航和定位的目的。北斗二代卫星导航系统是中国独立研究开发的全球卫星导航系统,旨在摆脱对美国GPS的依赖。北斗系统的开发成功标志着中国成为继俄、美之后世界上第三个拥有自主导航卫星系统的国家。20世纪80年代初,中国开始研究适合本国国情的全球卫星导航系统。2000年,初步建成了北斗卫星导航试验系统(北斗一代)。2012年,中国已经建成了由16颗卫星构成的北斗卫星导航系统,它覆盖了亚太大部分地区2预计2020年左右,中国将建成由30颗卫星组成的北斗卫星导航系统(北斗二代)3。1.2 GPS的应用GPS的功能有导航、授时和测量4。导航功能主要是指为船舶,汽车和飞机等运动物体进行定位导航。例如:船舶远洋导航和进港引水,飞机航路引导和进场降落,汽车自主导航,个人旅游及野外探险等。授时功能主要体现时间同步上,例如:电力,邮电,通信等网络的时间同步,准确时间的授入,准确频率的授入等5。GPS的测量功能主要用于大规模测量上,例如:各等级的大地测量,控制测量,道路和各种线路放样,水下地形的测量,地壳变形量的测量,大型建筑形变监测等。以下详细阐述GPS技术在道路工程,汽车导航与交通管理,在长途客运车辆管理中和在导航仪中的应用:目前在道路工程中GPS技术主要是用于建立各种道路工程控制网及测定航测外控点等工作中。随着公路的等级不断上升,对勘测技术提出了更高的要求,因为路线变长,已知点相对变少,所以常规的测量手段不仅实施起来有较高难度,而且勘测精度也不能满足工程要求。现在,中国已经逐步使用GPS技术建设线路首级高精度控制网,然后用常规方法布设线路加密。实际测量结果表明,在几十公里范围内的点位误差仅有大约2厘米,达到了普通方法难以达到的精度,并且使用GPS技术测量也极大地提前了完工日期。GPS技术不仅应用于高等级道路,也常常被用于特大型桥梁的控制测量。GPS技术用于测量时,拥有无需通视,方便构建较强的网形,点位精度高和有效检测支点等优势。因此,GPS技术在隧道测量中也具有广泛的应用前景。在汽车导航和交通管理中,GPS的首要功能是三维导航,即飞机、轮船、地面车辆以及步行者都可以利用GPS导航器进行导航6。汽车导航系统是在全球定位系统GPS的基础上发展出来的一门新兴技术。车载导航系统是由GPS导航、自律导航、微处理机、车速传感器、陀螺传感器、CD-ROM驱动器、LCD显示器构成7。GPS导航系统与电子地图、无线电通信网络、计算机车辆管理信息系统相结合,可以实现车辆跟踪和交通管理等许多功能。以国内首套专业的GPS长途客运车辆管理系统雅迅长途客运GPS智能管理系统为例子。这个系统就是综合了卫星定位技术、GPRS/CDMA通讯业务、GIS技术、图像采集技术、计算机网络和数据库等技术8,在客运公司中建立一个总控制机关(C/S机构和B/S机构相结合运用建立),其他的都设为分控机关。公安部门和运输管理部门等相关部门建立专项的控制中心系统,通过控制中心系统、无线通信平台(GPRS/CDMA)、全球卫星定位系统(GPS)、车载设备这四个部分构成了一个用于驾驶员管理和车辆跟踪的多功能平台。系统可对在相关部门中注册的车辆进行实时动态跟踪、监控、拍照、行车记录、管理、数据分析等功能,被监控车辆会在电子地图上显现出来,同时车辆的行驶路线会被保存在系统中。操控终端可以任意选择服务器内部局域网或互联网对控制中心进行访问并且可通过浏览器提供网上综合客车管理数据分析控制系统(B/S结构);且系统拥有的内存容量可以随时根据中心服务器和操作终端硬件条件进行扩展,最大为五十万辆车。网络监控中的车辆不仅包括长途客运车辆,还包括旅游车等社会车辆。系统拥有分组管理功能,它将不同种类的车辆进行分类,便于相关人员进行管理操作。GPS技术在导航仪中得到了最完整最全面的体现,同时导航仪也是GPS技术应用的一个成功案例。下面以国际知名GPS导航仪品牌艾航达为例描述导航仪的重要功能:1. 地图查询l 能够在控制端上搜寻你要到达的目标地点。l 用户常去的地点会被记录并保存下来,这些信息也可以与其他用户共享。l 可以模糊显示某个区域内的重要设施的位置,例如宾馆、加油站、取款机等。2. 路线规划l GPS导航仪会依据你设定的起止地点,自主选定一条路线。l 选择路线时用户可自由设定是否要经过某些地点。l 选定路线时用户可自由选择是否要上高速公路等。3. 自主导航l 语音导航:导航仪会用真人语音提前通知驾驶者有关路口转向和导航仪状况等行车信息。导航仪中最重要的一个能力就是驾驶员无需注意导航仪显示屏,仅凭导航仪的语音提示就能到达目的地,大大提高了驾驶车辆的安全性。l 画面导航:在导航仪的显示屏上会显示地图、车辆当前所在的位置、行车速度、距目标地点的距离、规范的路线提示、路口转向提示等行车信息。l 重新规划路线:在行驶过程中,当你没有按照规划好的路线行驶时,导航仪会语音报错,并根据车辆当前所在位置重新规划出一条到达目标地点的新路线。1.3 北斗二代的应用北斗二代卫星导航系统有三大主要功能:快速定位,提供全天候、实时的定位服务;短报文通信,一次最多传送120个汉字;精密授时,精度达20纳秒9。作为我国自主研发的导航卫星系统,北斗二代卫星导航系统在应用上要比GPS灵活很多,应用面也更广。以下便是北斗二代卫星导航系统的几个主要作用:1.3.1监测气象状况我国每年因为气象造成的损失日益加剧,所以加强预警能力迫在眉睫。而自动气象监测站作为气象信息的重要来源,更是成为首要的建设目标。但是由于监测站分布范围广、所处地点偏僻,这些因素大大增加了运行成本。凭借多年的报文传输实验的经验,中国研发了与北斗卫星导航系统相匹配的北斗终端设备,并设计出了切实可行的解决方案,解决了我国气象站数字报文自动传输汇集和气象站地图分布可视化显示功能等问题。在高空气象探测中,北斗卫星导航系统也有十分出色的表现。高空探测仪在上升过程中会不停获取路径上的风向、风速、温度、湿度、气压、时间等数据10,并将这些数据实时传送回地面。北斗卫星导航系统的出现取代的GPS的主导地位,而与之相匹配的北斗探空仪也在2010年研发成功。该探空仪具有体积小、重量轻、功耗低、恶劣条件下性能稳定等优点。在总体性能上,北斗探空仪与GPS探空仪基本一致。但从数据连续性、低空测高精度、多普勒瞬时测风、抗恶劣环境等方面来说,北斗探空仪要优于GPS探空仪。1.3.2监测道路和桥梁安全随着我国交通道路建设日益加快,道路边坡综合防护系统研究越来越受到相关部门的重视。成功的边坡综合防护系统对于加固路基、提高道路使用寿命、减少日常维护费用都是非常有效的。在测量大型桥梁时,使用北斗二代卫星导航系统进行测量可以突破原始测量方法的限制。基于北斗二代卫星导航系统的大型桥梁安全监测系统可以监测桥梁结构中的各种状态值,例如桥梁锚锭出沉降、桥塔处变位偏移、桥身相对变形等。当发生地震、台风、船只撞击等特殊情况时,北斗二代导航卫星系统可以监测桥梁的实时状态数据,通过这些状态数据对桥梁的安全状态进行评估,并在存在安全隐患时进行报警11。北斗二代卫星导航系统在用于边坡防护和大型桥梁时,由于不存在视线干扰问题,因此选择测量点的时候更加灵活,且所选的测量点可根据工程要求设定在对变形体的形变比较敏感的特征点上,同时北斗二代卫星导航系统的静态相对定位具有非常高的定位精度和较高的自主工作能力。这些优势使得北斗二代卫星定位系统在道路和桥梁监测中得到了广泛应用。1.3.3保障电力畅通电网作为一个庞大的工程,要确保整个工程正常运作,就必须保证相关设备同步运转,而实现这个目的的第一步就是确保所有设备内部时钟的一致性。此前为了确保内部时钟一致,我国电网不得不使用GPS作为主要的授时手段,通过GPS的民用频道向电力系统自动化设备、微机监控系统等智能设备提供授时信号,以保证电网的正常运行。电力产业作为一个关系国家安全和经济命脉的支柱性产业,使用他国的卫星系统进行时间同步存在着巨大的安全隐患。目前,中国每年都会因为GPS授时出错造成巨大的经济损失12。随着基于北斗二代导航卫星系统的“北斗电力全网时间同步管理系统”的研制和使用,中国结束了依赖他国卫星导航系统的历史,解决了电网时间同步应用中的三大难题:稳定的时钟源、全网时间同步管理和远程集中实时监测维护,有效地保障了本国电力安全。“北斗电力全网时间同步管理系统”的单向授时精度为100纳秒,双向授时精度达到20纳秒,性能上优于国外同类产品。目前,华东地区有数个发电站正在使用这套系统。在使用的一年多时间里,这套系统表现出优秀的稳定性、安全性和可靠性。1.3.4监测大型灾害和协助救灾工作在近年的几次大型灾害和灾后救援工作中,例如2008年的汶川地震,北斗卫星导航系统都变现出了巨大的作用。汶川地震后,配备有北斗卫星终端机的前线部队不但可以接收北斗卫星的导航信息,还能通过短报文的方式与指挥中心进行联系。另外,救援部队可以通过北斗卫星终端机了解自己的位置和目标地点的位置,并规划出最佳线路。这样救灾工作才能够更加迅速地展开。在前进过程中遭遇突发状况,如地面塌陷、道途堵塞等,救援部队可以及时反馈给指挥中心。指挥人员可以通过指挥中心的监控了解各救援部队的位置,接收并整合各救援部队发出的信息,同时通过北斗卫星对大量相关物体进行定位普查,这些信息能帮助指挥人员做出合理有效的决策并为灾后重建工作提供依据,而所有的行动命令都会通过短报文的形式发送到各救援部队的终端机上13。 森林火灾作为一种高突发性高危害性的自然灾害,人工监控难以实现,因此建立信息化的森林防火工程势在必行。北斗二代卫星导航系统可以进行实时全国性全天候的监控,并在发现情况后及时报警,有效地解决了火场定位、侦察、引导、扑救、后勤保障、损失评估等问题。目前,与北斗二代卫星导航系统相配套的防火系统已经被广泛应用于全国各地的森林。1.3.5监测水文数据我国根据北斗二代卫星开发了北斗水情自动测报系统,这套系统可以实现水文数据的自动采集与传输,主动数据查询,远端测站遥控/状态查询等功能。因其体积小,性能高,目前这套系统已在我国各处的水文站投入使用。通过北斗水情自动测报系统,数控中心不仅可以发出相关命令来激活或关闭端测站的某些功能,还可以随时获取端测站的工作状态。除此之外,由于北斗二代卫星是我国自主研发的,所测得的数据也免去了泄漏的危险。1.3.6 中国电信CDMA北斗授时应用北斗卫星导航系统出现之前,中国只能依靠GPS系统控制中国CDMA网络14。北斗卫星导航系统的出现,为中国摆脱对GPS系统的依赖提供了有力的基础。与此同时,多家单位也积极研制和开发了北斗/GPS双模站间时间同步设备和嵌入式北斗/GPS双模授时模块。从2006年开始,中国电信就开展了一系列的CDMA网络北斗授时试验,获得了大量成功的案例和丰富的经验,这些为中国电信大规模推广应用奠定了坚实的基础。为了确保通信的安全,为了缓解过分依赖单一卫星导航系统进行授时的状况,中国移动进行了北斗/GPS双模授时研究工作。终于在解决了一系列的技术难题后,成功开发出了一体化卫星授时系统。自投入使用以来,该系统一直具有良好的表现。1.3.7 海洋渔业应用中国作为一个渔业大国,拥有广阔的海洋面积,众多的渔业人员和渔船,此外还有很多因素,例如渔民生命安全、国家海洋经济安全、海洋资源保护、海上主权维护和国家安全等。基于以上原因,建立了一个以北斗卫星导航系统为基础的海洋渔业综合信息服务网络。通过这个网络,监控中心可以对船只提供船位监控、紧急救助、通知发布、出入港管理等服务15,还可以实现船与船、船与岸上的信息交流。目前,北斗卫星海洋渔业综合信息服务已广泛应用于海上用户,且拥有优秀的表现。自2007年以来,通过北斗卫星导航系统,接收到海上警报500多起。在多次重大海上自然灾害和多次渔船被他国扣留事件中,北斗卫星导航系统都起到了重要作用。在渔业管理工作中,北斗系统提高了渔船安全生产保障水平和渔民收入,减少了外事争端,维护了我国海洋权益。第二章 导航卫星信号接收装置 信号接收装置主要由天线和电路板两部分组成。装置的难点就在电路板上,上面焊接了大量的元器件,最主要的两部分是TD3020T模块和ARM芯片STM32F103RC,其余的还有若干电容、电阻和电源。当装置正常工作时,天线负责接收空中的电磁波并把它转化成在电线中传输的导行波,而集成电路板则通过元器件间的相互合作来处理这些信号。图1 实验板实物图2.1 TD3020TTD3020T是双模授时模块。它由泰斗微电子公司研发,旨在为北斗二代系统的推广提供硬件条件。该模块不仅能单独接收北斗导航卫星信号,还能单独接收GPS导航卫星信号,同时该模块还支持双模工作。TD3020T共有28个管脚,其中包括3个电源输入管脚,分别为6号(VCC)、11号(V_BACK)和19号(V_ANT),两个电源输出管脚,分别是8号(VCC_OUT)和18号(VCC_RF)。天线接口为16号管脚(RF_IN)。复位接口为10号管脚(nRESET)。5号管脚(PWR-DWN)为休眠模式控制接口。秒脉冲信号输出的管脚为28号管脚(1PPS)。第1脚第4脚是两对UART串口。第9脚、第21脚和第27脚都是GPIO接口。TD3020T拥有众多的语句标识符和语句格式符,使用这些符号可以十分清晰的对芯片接收到的信息进行命名和定义。本实验中我们用到的语句标识符有BD、GP和GN,它们分别代表了北斗二代卫星系统、全球定位系统(GPS-global positioning system)和全球导航卫星系统(GNSS-global navigation satellite system)。用到的输出语句格式符有GGA(位置信息)、GLL(大地坐标位置信息)、GSA(精度因子和有效卫星号)、GSV(可视的卫星状态)、RMC(最简导航传输数据)和TXT(短文本信息的传送,用于输出一些控制命令的响应)。图2 TD3020T的实物图2.2 STM32F103RCSTM32F103RC是意法半导体公司推出的大容量增强型微控制器,适用于多种不同的场合。这是一个32位基于ARM核心的带512K字节闪存的微控制器。目前正广泛应用于生产和生活。该微控制器中集成了8个定时器,13个通信接口,51个GPIO端口,3个12位ADC模块和2个DAC转换器。以LQFP(Low-profile Quad Flat Package)形式进行封装,这使该控制器的性能得到了进一步的提升。本次实验中我们用到了64个脚中的25个脚,分别是5号脚(OSC_IN),6号脚(OSC_OUT),7号脚(NRST),8号脚(PC0),9号脚(PC1),10号脚(PC2),11号脚(PC3),12号脚,13号脚,16号脚(PA2),17号脚(PA3),18号脚,19号脚,28号脚(PB2),31号脚,32号脚,42号脚(PA9),43号脚(PA10),46号脚(PA13),47号脚,48号脚,49号脚(PA14),60号脚(BOOT0),63号脚和64号脚。作为该系列的新一代作品,较之前作,它适用于低成本的平台、减少了引脚数、降低了功耗,同时它提供了更加优秀的计算能力和先进的中断系统响应。ARM核心中整合有一个32位的RISC处理器,它为芯片提供了额外的代码效率。而STM32F103RC内含ARM核心,因此使得STM32F103RC芯片与所有的ARM工具和软件均兼容。这为我们提供了广阔的选择空间,让我们能挑选最合适的工具来完成这个课题,大大地提高了工作效率,优化了实验结果。图3 STM32F103芯片的实物图STM32F103RC芯片具有优秀的中断响应处理能力。它内置嵌套的向量式中断控制器(NVIC),能够处理多达60个可屏蔽中断通道和16个优先级。强大的功能确保了STM32F103RC芯片能够以最小的中断延迟提供灵活的中断管理功能。此外,芯片中还内置了外部中断/事件控制器(EXTI),该控制器拥有19个边沿检测器,能够产生中断/事件请求。对每个中断线都可以独立定义它的触发条件,产生的所有中断都会保存在一个中断寄存器中。当芯片发生使能中断,软件也会收到响应的中断,并对中断做出应答。STM32F103RC芯片有三种电压模式,分别为主模式(MR)、低功耗模式(LPR)和关断模式。主模式为芯片正常工作模式,关断模式为CPU待机模式,低功耗模式为CPU的停机模式。其中低功耗模式又分为3种类型,分别是睡眠模式、停机模式和待机模式,这使芯片在要求低功耗和多种唤醒事件之间达到最佳的平衡。2.3 仿真器仿真器是实现硬件仿真的器材,主要用于模拟系统的外在表现和行为。J-link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。它与Keil等多个集成开发环境相匹配并支持各种ARM内核芯片的仿真。它简单易用,不仅操作起来方便,连接也十分容易,初学者经过一些讲解,便能很快地学会使用方法。图4 J-link仿真器的实物图第三章 嵌入式编程3.1 Keil Vision4软件Keil是美国Keil Software公司出品的兼容单片机C语言软件开发系统。Keil拥有方便易用的集成环境和强大的软件仿真调试工具并且能兼容各种操作系统。它提供了包含C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整的开发方案。在2005年,ARM公司收购了Keil公司,因此两者已不分彼此。这也为使用Keil软件来开发ARM核心提供了良好的外部条件。在众多的Keil开发软件中,Keil Vision4是目前与ARM器件最匹配的开发软件。另外Vision4还有许多其他的优点,比如Vision4支持同时打开多个窗口,管理起来十分灵活,简化了工作区等。这些优点使得开发得以更加有效地进行。3.2 Keil Vision4软件开发流程以下以控制灯的亮灭为例简单介绍一下Keil Vision4软件开发流程:首先需要创建一个新的工程,并在工程下创建3个文件夹,分别是library、rvmdk和user,然后给工程设置环境,之后就可以编写符合实验要求的程序代码了。在一个完整的工程建立好后,工程中的User文件中至少包含3个文件,分别为;main.c,stm32f10x_it.c,xxx.c。xxx.c是由用户编写的文件,xxx为应用程序的名字,用户可自由命名。在控制灯亮灭的实验中,我们把这个文件命名为led.c,程序如下: GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_SetBits (GPIOB, GPIO_Pin_7);该段代码初始化了第7号端口的设置参数,并重新设置了该端口的模式和发送速度,“GPIO_Mode_Out_PP”表明该端口的输出模式为推挽输出模式,下一句发送速度为50MHz。可以通过重复书写上述代码段来设置两个或多个端口。GPIO_SetBits(GPIOB,GPIO_Pin_6);GPIO_SetBits(GPIOB,GPIO_Pin_7);GPIO_SetBits(GPIOB,GPIO_Pin_5);GPIO_SetBits(GPIOD,GPIO_Pin_2);delay_ms(1000);这段代码使上述4个端口全部置1,通过4个灯亮来表示。1000ms为延时,受硬件限制,该值存在上限,约为1600ms。将上述代码中的SetBits改为ResetBits,可以使这4个端口置0,使4盏等熄灭。通过对上述代码进行少量修改,使4个端口交替置0、置1,还能达到走马灯的效果。图5 灯亮灭实验效果图3.3 软件架构图6 软件架构图当系统工作时,通过秒脉冲启动TD3020T模块,工作中的TD3020T模块接收从导航卫星发来的各种帧信息,之后,TD3020T模块会把接收到的帧信息通过串口1发送给STM32F103RC芯片,发送的时间间隔约为55ms,STM32F103RC芯片根据事先下载在芯片中的程序代码对TD3020T模块发来的帧信息进行筛选并把符合代码要求的帧信息发送给上位机,由上位机进行保存。对于TD3020T模块接收到的每个帧信息,上述操作都会进行一遍,这就完成了本课题的第一部分要求。当然本课题还有第二部分要求,就是当用户通过串口2输入随机命令,即对STM32F103RC芯片产生一个中断,STM32F103RC芯片能响应这个中断,对该中断时间点后接收到的TD3020T帧信息进行新一轮的筛选,本次筛选就是以用户的命令作为依据,最后筛选出符合用户命令的帧信息并把它们转发给用户。对于事件的处理方式有两种,分别是中断和查询。查询是一种CPU处理事件的方式,又称“程控输出入”。查询的含义是由CPU定时发出询问,依序询问每个周边设备是否需要服务,有需要的就给予服务,服务结束后再询问下个设备,如此循环,周而复始。按这种方式虽然操作简单,但是效率低下。查询是基于终端的,带宽的请求总是基于CID,而分配则是基于终端的。对比于查询,中断是一种更加有效率的处理方式。中断是对系统发生的某一事件做出的一种反应和处理。引起中断的起因称为中断源。中断源提出处理的请求就是中断请求。发生中断时被打断程序的暂停点叫做断点。暂停现行程序并转为响应中断请求的过程叫做中断响应。中断的执行大致上分为7个步骤:1. 接收中断请求;2. 查看本级中断屏蔽位,若该为是1,那么本级中断源参加优先权排队;3. 中断优先权选择;4. 处理完一条指令或无法继续执行这条指令时,立刻中止现行程序。然后,中断部件根据中断级去指定响应的主存单元,并将主要信息和指令地址存放在这个单元中;5. 中断部件根据中断级指定另外的主存单元,从这些单元中取出新的状态信息和中断控制程序的起始地址;6. 执行中断控制程序和相应的中断服务程序;7. 执行完中断服务程序后,利用专用指令使处理机返回被中断的程序或转向其他程序。3.4 部分程序代码及功能下面对于程序中的部分代码进行解释说明。RCC_DeInit();RCC_HSICmd(DISABLE);RCC_HSEConfig(RCC_HSE_ON);HSEStartUpStatus = RCC_WaitForHSEStartUp();If(HSEStartUpStatus = SUCCESS) SysTickInit(); IWDG_Init(); NVIC_Configuration(); IO_Init(); USART1_Init(); USART2_Init(); TD_Init();该段代码的作用是对STM32F103RC芯片的各项参数进行初始化设置,RCC为复位和时钟设置,它具有时钟设置,外设复位和时钟管理等功能。前4行意义分别为将外设RCC寄存器重设为缺省值,失能内部高速晶振,设置外部高速晶振的状态为外部高速晶振ON,外部高速晶振的启动状态为等待外部高速晶振启动,该状态直到外部高速晶振启动或超时结束。第5行为外部高速晶振启动成功,然后开始执行花括号中的程序。花括号中的程序功能依次为初始化Cortex系统定时器(Systick),初始化独立看门狗(IWDG),重设嵌套向量中断控制器(NVIC)的参数,根据InitStruct中指定的参数初始化输入/输出端口(IO),重设了1号通用同步异步收发器和2号通用同步异步收发器的参数,初始化TD3020T模块。 if(SIR_REQUEST=1) Reset_All_flag(); USART_SendString(USART2,BD2_ColdStart); SoftDelay1ms(T); if(SIR_REQUEST=2) Reset_All_flag(); USART_SendString(USART2,GPS_ColdStart); SoftDelay1ms(T); if(SIR_REQUEST=3) Reset_All_flag(); USART_SendString(USART2,GN_ColdStart); SoftDelay1ms(T);由于TD3020T模块具有3种不同的工作模式,分别为BD2模式,GPS模式,GN(双模)模式,在编写程序时分别用1,2,3来代替。上述代码的功能就是根据TD模块发来的帧信息选择相应的工作模式,然后重置所有的数据,之后使该工作模式冷启动。if(timer1 = 1000*60*15)/15分钟 timer1=0; GPIO_ResetBits(GPIOC,GPIO_Pin_3); SoftDelay1ms(200); GPIO_SetBits(GPIOC,GPIO_Pin_3); TD_Init(); USART_SendString(USART1,Alarm); 该段代码体现了系统拥有自检能力。当1号定时器测得持续输出低电平的时间超过15分钟时,表明系统出现故障。此时会产生一个由高电平到低电平的窄脉冲,进行系统复位,然后恢复到高电平。具体的执行步骤为花括号中的内容:将0赋值给1号定时器,把3号端口置0,200ms后把3号端口置1并初始化TD3020T,同时闹钟函数(Alarm)会通过串口1发送SIGALRM信号进行报警。 if(ZDA_FLAG=1) ZDA_FLAG=0; USART_SendString(USART1,IDZDA); SoftDelay1ms(10); 这是STM32F103RC芯片正常工作时处理ZDA信息的过程。ZDA为中国的UTC信息,ZDA_FLAG为ZDA的标志位,当它为1时表明STM32F103RC芯片成功收到了秒脉冲和串口数据,之后将ZDA的数据打包,然后将标志位置0,最后将打包好的ZDA信息通过1号通用同步异步收发器进行发送。除了ZDA信息外,STM32F103RC芯片还要收发一些状态数据数组,比如IDLPS和IDSTA,它们分别用于输出控制命令的响应和输出异常状态帧。另外版本数据的收发也需要STM32F103RC芯片来完成,这些数据被写在IDVER中。以上几段代码描述了STM32F103RC芯片对来自TD3020T模块的帧信息进行筛选分类的过程,这些行为都是STM32F103RC芯片根据事先编写的程序自发进行的,在接收到结束命令前,芯片都在不停工作。这样本课题所要求的第一部分功能得以实现。下面将阐述一下与上位机(即用户)的交互过程。 if(data0=$ & data2=S & data3=I & data4=R) if(SUM_ASCII_Check(char *)data,1,7,9) if (data6=B & data7=D) SIR_REQUEST=1; else if (data6=G & data7=P) SIR_REQUEST=2; else if (data6 =G & data7=N) SIR_REQUEST=3; 我们使用TD3020T模块时可能并不需要同时用到3种模式,那么我们可以根据需要选择合适的模式进行针对性的观察,来达到我们的目标期望。而这段程序代码便起到了由用户来选择模式的功能。我们通过$PSIR,xx*A来定义三种工作模式,其中xx为工作模式的名称,可以是BD,GP,GN,即上述代码中所说的第6位和第7位,第9位用来存放从$到*间数据的异或值,起到校验的作用。除了选择模式,用户还可以控制程序的启动与关闭和对程序的版本进行选择,这些都是在正式开始前,需要做的准备工作。准备工作完成后,STM32103RC芯片正式开始工作,接收TD3020T模块的各种数据,其中主要为时间数据,其次还有一些状态数据。if(data0=$ & data3=Z & data4=D & data5=A) ID0 = data1; ID1 = data2; ZDA_FLAG=1; if(SUM_ASCII_Check(char *)data,1,30,32) strncpy(IDZDA+1,(char *)(data+1),26); UTC2BJ(IDZDA); IDZDA31 = data30; sum = SUM_ASCII(IDZDA,1,31); IDZDA33 = HexTBsum4; IDZDA34 = HexTBsum&0x0F; IDZDA35 = 0x0D; IDZDA36 = 0x0A; 这就是用于接收TD3020T模块的时间数据的代码。在编写程序时我们用ZDA来代称时间数据。当用户需要ZDA数据时,将ZDA的标志置1,信号接收装置开始接收ZDA数据,并对接收到的ZDA数据进行校验。将数据中第1位到第30位的值进行异或,所得的异或值存储在第32位中。当校验结果符合要求时,将数据复制到IDZDA字符串中。当ZDA数据的第30位显示为“A”时,1号计时器将清零。EXTI_ClearITPendingBit(EXTI_Line0);GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource0); EXTI_InitStructure.EXTI_Line = EXTI_Line0;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);EXTI为外部时间/事件中断控制器。首行代码清除了EXTI0号线路的挂起位。第二行代码表示选择PortSourceGPIOC管脚和PinSource0管脚作为外部中断线路。最后一行的代码的意义在于用EXTI_InitStructure中指定的参数对EXTI寄存器进行初始化,而第三行到第五行则是具体说明了EXTI_InitStructure内所指定的参数,分别是选择外部中断线0为实验用线路 ,设置EXTI的工作模式为中断请求模式,设置中断请求标志为输入线路的上升沿,定义外部中断线0的新状态为ENABLE。第四章 系统联调上面两章分别从软件和硬件两个方面进行了介绍,这章将从软硬件的协同作用方面来介绍下位机的整个结构与功能。4.1 系统结构图7 系统结构图本课题主要处理下位机部分所执行的功能,即接收导航卫星的信息和响应上位机的中断请求。下位机的功能是通过软件和硬件相互配合来实现的。软件主要就是Keil软件,所有的功能所对应的程序代码都是通过它来编写的,它还能对代码进行编译,把源代码转化成机器语言代码。生成的机器语言代码通过J-link下载到实验板上的ARM芯片中,实验板是下位机的核心部分,它承担了几乎所有的任务并实现下位机的各种功能。至此,下位机构建完成。但是,单独一个下位机是无法表现它的功能的,下位机的功能还是要通过与上位机进行通信来体现,而下位机的性能也要通过上位机的数据来反应。4.2 实验结果以下便是从上位机中采集来的部分数据:$GNGGA,083911.0,3158.532485,N,12054.304058 ,E,1,10,1.9,81.7,M,7.1,M,1.5*7D$GPGSA,A,3,02,24,29,05, 1.9,1.5,1.6*37$BDGSA,A,3,10,07,04,08,03,01,2.4,1.9,1.5,1.6*24$GPGSV,1,1,4,02,03,149,45,24,40,176,36,29,17,226,33,05,30,090,18*4B$BDGSV,2,1,6,10,19,192,38,07,37,176,37,04,33,123,35,08,10,195,25*53$BDGSV,2,2,6,03,49,198,35,01,46,147,30*54$GNZDA,083912.00,20,11,2014,3,A*0E$GNTXT,02,01,03,A,16,V,2,7*44$GNTXT,02,02,04,463,376754.000,1819,376768.000*46$GNRMC,083912.00,A,3158.532476,N,12054.304069,E,1.0,161.1,201114,A*44所得数据中GGA为位置信息,GSA为精度因子和有效卫星号,GSV为可视的卫星状态,ZDA为中国UTC信息,TXT是一些短文本信息形式的传送,用于输出一些控制命令的响应。RMC帧信息基本包含了导航卫星应用程序所需的全部数据,包括经纬度、速度、方向、卫星时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国液体化工物流行业应急响应与危机管理机制研究
- 体育中考演讲稿
- 2026年中国手术超声刀项目经营分析报告
- 商标协议书有用
- 初中感恩父母演讲稿
- 我的爱好英语演讲稿
- 2026年中国软木制品项目经营分析报告
- 低碳校园演讲稿
- 2026年中国土豆项目经营分析报告
- 2026年中国速冻鱼糜制品制造项目经营分析报告
- 风险评估标准作业流程表合规风险管理版
- 全国大学生职业规划大赛《卫星通信与导航技术》专业生涯发展展示【高职(专科)】
- 2025外研版新教材英语七年级上册单词表(复习必背)
- 凭什么让学生服你:读书分享技巧
- 四级手术术前多学科讨论制度(2025年)
- 血友病预防知识培训课件
- 沙石料销售知识培训内容课件
- 人教版六年级数学上册第一单元测试卷(含解析)
- 2025云南昆明元朔建设发展有限公司第一批收费员招聘20人备考考试题库附答案解析
- 2025年微生物专升本习题库(含答案)
- 互联网医院在线医疗培训方案
评论
0/150
提交评论