内蒙古科技大学信息工程学院李胜玉 刘涛 武志超
关键词:FlexCAN、嵌入式测试系统(ETS)、TLE6250
引言
测试是系统开发过程中十分重要的一个步骤,是保证产品质量的有效手段之一,本文介绍了一种实时、高效、稳定的测试软件的设计,通过CAN总线实现下位机与上位机的连结,CAN总线是一种多主方式的串行通讯总线,具有较高的传输速率,优良的抗电磁干扰性,支持差分收发,适合高噪声环境,可实现较远的距离的传输的优点。
1 硬件设计
测试系统的硬件原理图见图1,主要由微处理器Mac7112和CAN口收发芯片TLE6250两部分构成。Mac7112是Motorola公司最新生产的32位嵌入式汽车专用芯片,它内部集成FlexCAN模块,FlexCAN完全符合CAN2.0B协议标准,支持标准帧(11bit)和扩展帧(32bit)两种帧格式,是一种非常灵活的邮箱式系统,拥有多达32个消息缓冲(MB),每个消息缓冲具有独立的收发功能,内嵌544字节的RAM以供邮箱使用,在无消息传送接收时,这些RAM可被MCU使用,每帧消息可传送和接收数据在0-8个字节之间,最大不能超过8个字节,最高可达的传输速率为1Mbps。FlexCAN模块在逻辑上实现了传输数据的编码和解码,但要想与CAN总线上的数据实现正常联系,还需要借助总线驱动器。TLE6250是FlexCAN模块与CAN总线之间的实现物理连接的驱动芯片。
TLE6250是Infineon公司生产的一种CAN口收发芯片,支持传送速率高达1Mbps,有良好的抗瞬变、抗射频和抗电磁干扰的特性和宽广的工作范围(-40℃--150℃),具有短路保护和过温保护功能,非常适合在工作环境较恶劣的系统中使用。
图1中Mac7112中的CNTx_A/PG4与TLE6250的TxD端口相连,CNRx_A/PG5与TLE6250的RxD端口相连,TLE6250的输出端CAN_H与CAN_L之间连接一120Ω的电阻,用以匹配线路。
2. 软件设计
本文以发动机电控单元测试程序的编写为例,讲述软件设计的步骤。发动机电控单元(ECU)在测试过程中往往需要做以下工作:(1)版本号测试;(2)回声测试;(3)GPIO端口信息的读取和设置;(4)串口通讯功能测试;(5)E2 PROM代码和数据的读取及更新;(6)PWM调试;(7)喷油嘴调试等等。为了完成上述测试,需作下面的工作。
2.1通讯协议的构建
为实现CAN总线数据的传送,使上位机与下位机正常通讯,需要定义统一的通讯协议。为了简单起见,采用11位的标准帧传送格式,接收ID定义为7FF,接收邮箱为0邮箱,发送ID定义为7FE,发送邮箱为31号邮箱。
命令(command):定义测试命令ID,处于消息帧的起始位置,测试命令的内容由上位机在操作面板中选中,通过CAN总线发送给ECU,ECU根据命令要求进行处理,将处理结果反馈回上位机。
字节数(bytes):第二个字节为该条消息中所含字节的总数,其数值为N+3,应小于消息缓存队列的大小,消息缓存队列的大小由用户根据实际需要定义。
数据(data):从第三个字节开始到第N+2个字节为传输的数据,数据内容与所选的测试命令相关,大小为N个字节,当N为0时,第三个字节内容便由和校验字节占用。
和校验(checksum):正常情况下,该位处于最后一字节,若数据段中无数据,则和校验处于第三个字节,和校验的数值是整个消息中所有字节内容相加的和除以256,取模所得。在传送接收过程中,收到的数据之和经取模运算与和校验数值相比较,如果相同说明接收正确,不同则通知发送对象重新发送刚才的消息。CAN总线传送本身具有错误诊断和处理手段,增加和校验可进一步增强传送的准确性。
2.2测试工作过程
下位机在进行测试工作时,采用中断接收、中断发送的工作模式。频繁的中断处理在一般情况下会使MCU开销很大,但测试时可不用考虑,因为在实际工作中不存在测试请求。 接收和发送都采用中断方式,反而可避免测试程序在系统正常工作时占用资源。上位机发出测试请求,通过CAN总线成功地传送到FlexCAN模块,FlexCAN是个非常智能化的模块,它内部有一个临时邮箱(MB),该邮箱不能被用户访问,它自动接收从CAN总线上传来的消息帧,并将所接收到消息帧的ID号与FlexCAN中32个邮箱的ID号进行比较。若某个邮箱的ID号与接收到的ID号相同则申请中断,将临时信箱中存储的内容转存到ID号相符的邮箱中。当接收到的ID与ETS接收邮箱的ID相同时,ETS接收邮箱开始接收信息,接收到的信息存储在ETS接收消息缓存队列中,接收完毕,对所接收的信息进行处理,处理的信息反馈给上位机。CAN口中断接收服务程序流程图见图4。测试命令响应程序的处理过程见图3。测试反馈回上位机的信息采用中断发送的方式,该程序有两个入口,首帧信息由测试命令响应程序调用中断发送响应程序实现,若发送消息缓存队列中内容需要多次发送,则后面的内容直接由中断发送服务程序响应完成,具体工作流程见图5。
3上位机设置及工作流程
上位机是测试人员与控制系统的接口,测试人员通过上位机程序确定进行测试的内容,通过下位机传来的反馈信号,鉴定系统中软件硬件工作是否正常,若存在问题,根据反馈回的信息确定问题出在哪里,如何去解决。
为完成上述功能,调试界面应该包括调试命令选择窗口、参数输入窗口、接收数据显示窗口等等。
上位机的编程语言采用VC++6.0,实时发送测试请求,查询方式接收下位机的反馈信息,查询周期为5ms. 。硬件应用CANTOUSB转化器--ValueCAN。
上位机的工作流程见图6,启动上位机测试程序,对系统进行初始化,每隔5ms 对USB口检测一次看是否接收到消息。若收到信息对接收到的消息作相应的处理。
4结论
测试程序的编写在当今系统设计过程中显得尤为重要,本文给出的基于CAN总线的测试系统方案占用资源少,实现起来简单易行,测试响应快,测试结果准确,合理地使用可大大降低系统开发周期。
参考文献
1 MAC7100 MicrocontrolLEr Family Reference Manual Rev 1.0. Motorola, 5/2004
2 TLE6250 Final Data Sheet. Infineon ,10/2002
3 CAN-bus规范2.0B版本.周立功单片机发展有限公司,1999
文章评论(0条评论)
登录后参与讨论