基于CAN总线的GPS传感器应用开发研究

2012-10-25 12:38罗发贵隋良红
中国测试 2012年2期
关键词:子程序寄存器总线

罗发贵,张 杰,隋良红

(1.中国测试技术研究院,四川 成都 610021;2.四川大学制造科学与工程学院,四川 成都 610065)

0 引 言

在汽车运行过程中,经常需要知道汽车运行的基本情况,需要测量汽车的运行速度、运行距离、经纬度位置以及所在地的海拔等,这些信息对于人车安全具有重要意义。将GPS技术用于这些参数的测量,可以达到期望的效果。但由于其测量数据量大,而且具有高速变化、不易采集、不易存储数据等缺点,必须要配以高性能的传输总线[1]。在这种情况下,基于CAN总线的GPS汽车参数采集测量方案应运而生。

在本项目中,将CAN总线技术应用于GPS汽车参数测量中,并用C8051F500作为主控芯片,把TJA1050作为其外加物理接口。同时辅以按键、显示、存储等功能,实现汽车行驶参数的高速采集测量。

1 CAN总线及特点

CAN是一种多主方式的串行通信总线,基本设计规范要求有高的位速率、高抗电磁干扰性,而且能够检测出产生的任何错误[2]。当信号传输距离达到10km时,CAN总线仍可提供高达50kb/s的数据传输速率。CAN通信协议主要描述设备之间的信息传递方式,CAN层的定义与开放系统互连模型一致。每一层与另一设备上相同的那一层通信,实际的通信发生在每一设备上相邻的两层,而设备只通过模型物理层的物理介质互连[3]。

CAN能够使用多种物理介质,例如双绞线、光纤等,其中最常用的就是双绞线。信号使用差分电压传送,2条信号线被称为CAN_H和CAN_L,静态时均为2.5V左右,此时状态表示为逻辑“1”,也可以叫做“隐性”。用CAN_H比CAN_L高表示逻辑“0”,称为“显形”;此时,通常电压值为:CAN_H=3.5 V,CAN_L=1.5V。CAN总线成本低,具有极高的总线利用率、很远的数据传输距离(长达10km)、高速的数据传输速率(高达1 Mb/s)、可靠的错误处理和检错机制,发送的信息遭到破坏后,可自动重发,节点在错误严重的情况下具有自动退出总线的功能。

2 GPS系统

GPS系统包括3部分:空间部分(GPS卫星星座);地面控制部分(地面监控系统);用户设备部分(GPS信号接收机)[4]。GPS卫星星座和地面控制部分属于整个系统的运行维持部分,由美国专门的机构维护。通常普通用户直接使用的仅仅是GPS信号接收机[5]。

GPS信号接收机的任务是:能够捕获到按一定卫星高度截止角所选择的待测卫星的信号,并跟踪这些卫星的运行,对所接收到的GPS信号进行变换、放大和处理,以便测量出GPS信号从卫星到接收机天线的传播时间,解译出GPS卫星所发送的导航电文,实时地计算出测站的三维位置,甚至三维速度和时间[6]。接收机硬件和机内软件以及GPS数据的后处理软件包,构成完整的GPS用户设备[7]。GPS接收机的结构分为天线单元和接收单元2个模块。

3 系统硬件设计

3.1 系统硬件总体

系统硬件主要是由C8051F500单片机、TJA1050、GPS传感器、按键、显示、打印、存储等组成,硬件组成如图1所示。

图1中,单片机C8051F500是没有CAN接口的MCU,需要通过外加TJA1050作为物理通信接口,单片机负责数据的处理计算工作,是整个系统的主要部分。TJA1050是控制器区域网络(CAN)协议控制器和物理总线之间的接口,可以为总线提供不同的发送性能,为CAN控制器提供不同的接收性能。GPS传感器是系统的主要传感器单元,负责对被测量的测量。

3.2 基于C8051F500的CAN实现

Silicon Lab公司的C8051F500单片机内部集成了CAN控制器,符合Bosch规范2.0A(基本CAN)和2.0B(全功能CAN),方便了CAN网络通信系统的设计。由于C8051F500的高集成度,只需少量外围测量电路便可组成集数据采集、控制和通信功能于一体的单片机系统,同时还可提高系统的整体可靠性。另外,C8051F500内核与普通51系列兼容,且指令简单易学,可缩短系统研发周期[8]。图2是基于C8051F500的CAN硬件电路实现原理图。

图1 系统硬件组成框图

图2 CAN功能节点组成原理图

3.2.1 C8051F500单片机

单片机内部集成了CAN控制器,其与收发模块(CTM1050)共同构成CAN节点模块。其中CAN控制器包括CAN核、消息存储器、消息处理器和控制寄存器。由于其MCU无法直接访问消息RAM,因此有两组位于控制寄存器的接口寄存器被用来控制CPU对消息RAM的访问。接口寄存器通过缓存传输将要传输的数据,避免了CPU访问消息RAM时同CAN消息的发送和接收之间的冲突[9]。在单个传输时,一个完整的消息对象或者消息对象的一部分在消息RAM和IFx消息缓冲寄存器之间进行可靠传输。

3.2.2 TJA1050高速CAN收发器

TJA1050是CAN控制器与CAN物理总线之间的接口芯片,是CAN协议控制器和物理总线之间的接口,它最初应用于波特率范围在60 K波特到1 M波特的高速自动化应用中。TJA1050可以为总线提供不同的发送性能,为CAN控制器提供不同的接收性能。

TJA1050有一个电流限制电路,保护发送器的输出级,使由正或负电源电压意外造成的短路不会对TJA1050造成损坏(此时的功率消耗增加)。TJA1050还有一个温度保护电路,当与发送器连接点的温度超过165℃时,会断开与发送器的连接。因为发送器消耗了大部分的功率,所以这个集成电路的功率消耗和温度会较低[10],但是此时IC的其他功能仍继续工作。当引脚TXD变高电平,发送器由关闭状态复位。当总线短路时,尤其需要这个温度保护电路。

在汽车通电的瞬间,引脚 CAN_H和CAN_L也受到保护,如图3所示。

图3 自动的暂态过程测试电路图

当引脚 TXD由于硬件和/或软件程序的错误而持久为低电平时,“TXD控制超时”定时器电路可以防止总线进入这种持久的支配状态(阻塞所有网络通信),这个定时器是由引脚TXD的负跳变边沿触发。如果引脚TXD的低电平持续时间超过内部定时器的值,发送器会被禁能,使总线进入隐性状态,定时器由引脚TXD的正跳变边沿复位。

4 项目软件设计

在CAN初始化时会打开CAN中断,即CAN总线上有数据要发送时会产生一个中断,此时由单片机的MCU来判断其优先级是否为最优,若是,则响应其中断。此时单片机内的CAN处理器会控制消息缓存寄存器写入数据,并按照协议对消息进行处理;等发送请求中断产生,响应中断并发送处理好的数据,此为一次数据收发过程[11]。CAN总线数据收发流程如图4所示。

4.1 系统初始化

系统初始化主要包括端口、时钟和CAN控制器的初始化。其一般步骤如下:

(1)将SFRPAGE寄存器设置为CAN0_PAGE;

(2)将CAN0CN寄存器中的INIT和CCE位设置为‘1’;

(3)设置位定时寄存器和BRP扩展寄存器中的时序参数;

(4)初始化每个消息对象或将其MsgVal位设置为 NOTVALID(无效);

(5)将 INIT 位清零。

其初始化部分程序如下:

4.2 收发程序

系统初始化完成后,在主程序中调用接收子程序,由接收子程序来响应总线上的消息接收请求命令。接收子程序要比发送子程序复杂一些,因为在处理接收报文的过程中,还要对诸如总线关闭、错误报警、接收溢出等情况进行处理。下面给出部分接收子程序:

发送子程序负责节点报文的发送,发送时用户只需将处理好的待发送数据按特定的格式组合成一帧报文,送入发送缓存区中,然后启动发送即可。

5 测试实验与数据分析

本项目是基于CAN总线的GPS传感器应用,用来实时测量汽车运行中的相关动态参数。试验前,将传感器天线置于汽车外部(吸附于车顶),通过RF传输线与车内仪器主机连接。仪器开机启动后,当汽车运行时,仪器可以测试出汽车实时的行驶速度、里程、所在位置的经纬度值、大地坐标以及海拔高度等参数。经过实车道路测试,随机列举了4组等精度重复测量数据,如表1所示。

表1 实车路试数据

由多次重复测量数据经计算分析,通过标准偏差公式:

式中:Σ——总和;

可知表1中纬度、经度、海拔、大地坐标X、Y的稳定性分别为:5.776 2×10-10,6.691 67×10-11,0.870 92,0.87093,0.083833。通过该组数据,并与更高精度已知数据相比较分析后,可以看出系统的测量结果达到了既定的精度和稳定性要求。

6 结束语

本项目研究成果的实际使用与测试实验数据证明,系统可以达到对汽车经纬度、海拔、速度、里程及大地坐标X/Y的准确测量,实现了对汽车动态运行参数测量的实时性和灵活性。同时,拓展了基于CAN总线的传感器在汽车领域中的应用,数据传输准确灵活,具有较好的实用意义。相比于传统的传输方式,CAN总线减少了数据冲突和丢失,提高了信息的准确性和精确度;因此,项目具有较好的工程背景和实际应用价值。

[1]高峰,王睿,王建.CAN总线型多功能汽车行驶记录仪[J].广西工学院学报,2005(4):6-9.

[2]王黎明,夏立,邵英,等.CAN现场总线系统的设计与应用[M].北京:电子工业出版社,2008.

[3]杨春杰,王曙光,亢红波,等.CAN总线技术[M].北京:北京航空航天大学出版社,2010.

[4]杨战辉,蒙晓锋,鹿晓东,等.GPS精密单点测量解算方法应用[J].测绘技术装备,2010(3):28-30.

[5]雷建朝,郭强,姜仕利.GPS测量与数据处理中一些问题的研究与总结[J].西北水电,2006(3):15-17.

[6]赵军祥,张其善,常青,等.高动态GPS卫星信号模拟器关键技术分析及应用[J].电讯技术,2003(3):49-54.

[7]刘美生.全球定位系统及其应用综述(三)——GPS的应用[J].中国测试技术,2007(1):5-11.

[8]鲍可进.C8051F单片机原理及应用[M].北京:中国电力出版社,2006.

[9]吴志玲,靳鸿,冯彦君.基于C8051F500的CAN总线通信系统的节点设计[J].电子测试,2011(8):36-37,99.

[10]于晓光.CAN总线隔离器的设计与应用[J].电子设计工程,2009(12):1-4.

[11]原奕.Visual C++实践与提高——数据库开发与工程应用[M].北京:中国铁道出版社,2006:277-278.

猜你喜欢
子程序寄存器总线
Lite寄存器模型的设计与实现
二进制翻译中动静结合的寄存器分配优化方法
一种基于CAN总线的误码测试方法
移位寄存器及算术运算应用
浅谈子程序在数控车编程中的应用
CAN总线并发通信时下位机应用软件设计
基于CAN总线的水下通信系统设计
子程序在数控车加工槽中的应用探索
西门子840D系统JOG模式下PLC调用并执行NC程序
宝马F02车总线系统