|
<table cellspacing="0" cellpadding="0" width="95%" align="center" border="0"><tbody><tr><td><div align="center"> </div></td></tr><tr><td><a name="tpc0" style="text-decoration:none"><strong><span class="tpc_title">基于CAN总线的嵌入式测试系统</span><br /><br /></strong><span class="tpc_content"><font size="2">内蒙古科技大学信息工程学院 李胜玉 刘涛 武志超</font><span style="font-size:0pt;color:#ffffff"> W'%' Ojh </span><font size="2"> <br />摘 要:本文给出了一种基于CAN总线的高速嵌入式测试系统的设计方案及其软硬件的实现方法,对32位汽车专用芯片Mac7112中的FlexCAN模块及CAN口收发芯片TLE6250的特性和用法作了简要的介绍。</font><span style="font-size:0pt;color:#ffffff"> LH,+\A( </span><font size="2"> <br />关键词:FlexCAN、嵌入式测试系统(ETS)、TLE6250</font><span style="font-size:0pt;color:#ffffff"> O g{M|0u/ </span><font size="2"> <br /></font><span style="font-size:0pt;color:#ffffff">590?`)Ee { </span><font size="2"> <br /></font><span style="font-size:0pt;color:#ffffff">_ ]vz.G </span><font size="2"> <br />引言</font><span style="font-size:0pt;color:#ffffff"> `*tG&f$ </span><font size="2"> <br />测试是系统开发过程中十分重要的一个步骤,是保证产品质量的有效手段之一,本文介绍了一种实时、高效、稳定的测试软件的设计,通过CAN总线实现下位机与上位机的连结,CAN总线是一种多主方式的串行通讯总线,具有较高的传输速率,优良的抗电磁干扰性,支持差分收发,适合高噪声环境,可实现较远的距离的传输的优点。</font><span style="font-size:0pt;color:#ffffff"> p-!p3CJ\ </span><font size="2"> <br />1 硬件设计</font><span style="font-size:0pt;color:#ffffff"> %3!c^L*t </span><font size="2"> <br /> 测试系统的硬件原理图见图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总线之间的实现物理连接的驱动芯片。</font><span style="font-size:0pt;color:#ffffff"> y!inJW- @f </span><font size="2"> <br /> TLE6250是Infineon公司生产的一种CAN口收发芯片,支持传送速率高达1Mbps,有良好的抗瞬变、抗射频和抗电磁干扰的特性和宽广的工作范围(-40℃--150℃),具有短路保护和过温保护功能,非常适合在工作环境较恶劣的系统中使用。</font><span style="font-size:0pt;color:#ffffff"> h.Q:j,8 </span><font size="2"> <br />图1中Mac7112中的CNTx_A/PG4与TLE6250的TxD端口相连,CNRx_A/PG5与TLE6250的RxD端口相连,TLE6250的输出端CAN_H与CAN_L之间连接一120Ω的电阻,用以匹配线路。</font><span style="font-size:0pt;color:#ffffff"> d\0 ~;`EyL </span><font size="2"> <br /></font><span style="font-size:0pt;color:#ffffff">]am-`HI; </span><font size="2"> <br /></font><span style="font-size:0pt;color:#ffffff">7w|Y "`g </span><font size="2"> <br />2 软件设计</font><span style="font-size:0pt;color:#ffffff"> Na_vn_=`j </span><font size="2"> <br />本文以发动机电控单元测试程序的编写为例,讲述软件设计的步骤。发动机电控单元(ECU)在测试过程中往往需要做以下工作:(1)版本号测试;(2)回声测试;(3)GPIO端口信息的读取和设置;(4)串口通讯功能测试;(5)E2 PROM代码和数据的读取及更新;(6)PWM调试;(7)喷油嘴调试等等。为了完成上述测试,需作下面的工作。</font><span style="font-size:0pt;color:#ffffff"> P?is * </span><font size="2"> <br />2.1通讯协议的构建</font><span style="font-size:0pt;color:#ffffff"> q\{F8>`t </span><font size="2"> <br />为实现CAN总线数据的传送,使上位机与下位机正常通讯,需要定义统一的通讯协议。为了简单起见,采用11位的标准帧传送格式,接收ID定义为7FF,接收邮箱为0邮箱,发送ID定义为7FE,发送邮箱为31号邮箱。 </font><span style="font-size:0pt;color:#ffffff">9E%jjITvt` </span><font size="2"> <br /> 命令(command):定义测试命令ID,处于消息帧的起始位置,测试命令的内容由上位机在操作面板中选中,通过CAN总线发送给ECU,ECU根据命令要求进行处理,将处理结果反馈回上位机。</font><span style="font-size:0pt;color:#ffffff"> g1^;sl </span><font size="2"> <br /> 字节数(bytes):第二个字节为该条消息中所含字节的总数,其数值为N+3,应小于消息缓存队列的大小,消息缓存队列的大小由用户根据实际需要定义。</font><span style="font-size:0pt;color:#ffffff"> AIUE} -= </span><font size="2"> <br /> 数据(data):从第三个字节开始到第N+2个字节为传输的数据,数据内容与所选的测试命令相关,大小为N个字节,当N为0时,第三个字节内容便由和校验字节占用。</font><span style="font-size:0pt;color:#ffffff"> p+u2zc^ </span><font size="2"> <br /> 和校验(checksum):正常情况下,该位处于最后一字节,若数据段中无数据,则和校验处于第三个字节,和校验的数值是整个消息中所有字节内容相加的和除以256,取模所得。在传送接收过程中,收到的数据之和经取模运算与和校验数值相比较,如果相同说明接收正确,不同则通知发送对象重新发送刚才的消息。CAN总线传送本身具有错误诊断和处理手段,增加和校验可进一步增强传送的准确性。</font><span style="font-size:0pt;color:#ffffff"> N&W.S=sr) </span><font size="2"> <br />2.2测试工作过程</font><span style="font-size:0pt;color:#ffffff"> LOj1aae]o </span><font size="2"> <br /> 下位机在进行测试工作时,采用中断接收、中断发送的工作模式。频繁的中断处理在一般情况下会使MCU开销很大,但测试时可不用考虑,因为在实际工作中不存在测试请求。 接收和发送都采用中断方式,反而可避免测试程序在系统正常工作时占用资源。上位机发出测试请求,通过CAN总线成功地传送到FlexCAN模块,FlexCAN是个非常智能化的模块,它内部有一个临时邮箱(MB),该邮箱不能被用户访问,它自动接收从CAN总线上传来的消息帧,并将所接收到消息帧的ID号与FlexCAN中32个邮箱的ID号进行比较。若某个邮箱的ID号与接收到的ID号相同则申请中断,将临时信箱中存储的内容转存到ID号相符的邮箱中。当接收到的ID与ETS接收邮箱的ID相同时,ETS接收邮箱开始接收信息,接收到的信息存储在ETS接收消息缓存队列中,接收完毕,对所接收的信息进行处理,处理的信息反馈给上位机。CAN口中断接收服务程序流程图见图4。测试命令响应程序的处理过程见图3。测试反馈回上位机的信息采用中断发送的方式,该程序有两个入口,首帧信息由测试命令响应程序调用中断发送响应程序实现,若发送消息缓存队列中内容需要多次发送,则后面的内容直接由中断发送服务程序响应完成,具体工作流程见图5。 </font><span style="font-size:0pt;color:#ffffff">]XWs]CbT </span><font size="2"> <br /></font><span style="font-size:0pt;color:#ffffff">SHsdJ&Y </span><font size="2"> <br />3上位机设置及工作流程</font><span style="font-size:0pt;color:#ffffff"> #hf[7Z 1`0 </span><font size="2"> <br /> 上位机是测试人员与控制系统的接口,测试人员通过上位机程序确定进行测试的内容,通过下位机传来的反馈信号,鉴定系统中软件硬件工作是否正常,若存在问题,根据反馈回的信息确定问题出在哪里,如何去解决。</font><span style="font-size:0pt;color:#ffffff"> c`F#,iu7 </span><font size="2"> <br />为完成上述功能,调试界面应该包括调试命令选择窗口、参数输入窗口、接收数据显示窗口等等。</font><span style="font-size:0pt;color:#ffffff"> !u4:eX9jz$ </span><font size="2"> <br />上位机的编程语言采用VC++6.0,实时发送测试请求,查询方式接收下位机的反馈信息,查询周期为5ms. 。硬件应用CANTOUSB转化器--ValueCAN。</font><span style="font-size:0pt;color:#ffffff">  B\0IIm </span><font size="2"> <br />上位机的工作流程见图6,启动上位机测试程序,对系统进行初始化,每隔5ms 对USB口检测一次看是否接收到消息。若收到信息对接收到的消息作相应的处理。</font><span style="font-size:0pt;color:#ffffff"> ~#Xp!1? </span><font size="2"> <br /></font><span style="font-size:0pt;color:#ffffff">at </span><font size="2"> <br />4结论</font><span style="font-size:0pt;color:#ffffff"> f7s7"==ey </span><font size="2"> <br /> 测试程序的编写在当今系统设计过程中显得尤为重要,本文给出的基于CAN总线的测试系统方案占用资源少,实现起来简单易行,测试响应快,测试结果准确,合理地使用可大大降低系统开发周期。</font><span style="font-size:0pt;color:#ffffff"> hU?v<~rS </span><font size="2"> </font></span></a></td></tr></tbody></table> |
|