新闻中心

EEPW首页>嵌入式系统>设计应用> AVR单片机的CAN总线分析仪设计

AVR单片机的CAN总线分析仪设计

作者: 时间:2013-11-12 来源:网络 收藏

AVR单片机的CAN总线分析仪设计

图3 液晶显示接口

2.3 键盘输入接口

  图4所示为键盘输入接口的硬件原理图。键盘输入采用了广州周立功单片机发展有限公司的数码管显示驱动及键盘扫描管理芯片ZLG7289B,它可以扫描管理多达64只按键。ZLG7289B采用SPI 串行总线与微控制器接口,仅占用少数几根I/O接口线。为了使键盘扫描得以正常进行,下拉电阻R1~R8和位选电阻R9、R10 是必需的。下拉电阻取值范围是10~100 kΩ,位选电阻取值范围1~10 kΩ。如果需要增加或减少按键,建议按列增加或裁减键盘,即增加或省略相应列的电阻。应注意裁减键盘时下拉电阻一个都不能省去。

AVR单片机的CAN总线分析仪设计

图4 键盘输入接口

3 CAN分析仪的软件设计

  本系统的软件设计通过的开发工具AVRICC用C语言编制,并依据各项功能进行了模块化设计,主要包括:自适应波特率模块、定时器模块、报文接收模块、状态显示模块、CAN中断处理模块、控制器初始化模块和总线状态计算模块等。其中自适应波特率、报文接收和总线状态计算是核心与关键。限于篇幅,仅介绍这几种功能模块。

3.1 软件的主程序框架

  分析仪的主要功能是监测现场状况。首先要使其接入总线,能够正常接收总线报文。因为总线上的波特率未知,需要对总线的波特率进行自识别,找到正确的波特率并初始化CAN控制器,进入CAN总线正常工作状态,接收总线上的各种报文。CAN总线不是按地址来进行报文传送的,可以设置分析仪接收总线上的一切报文,也可以通过键盘输入需要接收的报文。CAN总线上一旦出现错误,出现错误的节点就会向总线发送标示错误的错误帧。利用这个特性,接收错误帧,并将它显示出来用于分析总线的各种错误。与此同时,通过定时器来确定每单位时间的正确报文数和错误报文数,用于分析总线的状态是否正常、利用是否充分等。程序总体框架如图5所示。

AVR单片机的CAN总线分析仪设计

图5 程序总体框图

3.2 自适应波特率

  自适应波特率是在未知总线波特率的情况下自动检测CAN总线波特率,并且不影响总线的正常运行。已往的自适应波特率检测主要是向总线发出报文,若接入节点(分析仪)假设的波特率与网络实际波特率相冲突,则该节点自身的CAN控制器将产生错误帧,这是对检测到的总线错误的正常反应。如果允许该错误帧发送到总线上,将导致网络上其他节点也收到该错误帧,从而产生网络堵塞。这种方法严重影响了总线的正常运行,轻则使总线在检测阶段不能正常工作,重则影响总线的整个调度算法,使总线发生紊乱甚至关闭。

  本系统所选用的CAN控制器SJA1000具有独特的只听模式。在该模式下,CAN控制器进入错误认可状态,即无论接收信息成功与否,都不能向总线发送任何信息,只能接收报文。这样就不影响总线的正常运行,其他功能都如同在正常操作模式下一样使用。

  自适应波特率需要在网络中至少有1个节点在发送报文,而且需要预先设定1张包含所有可能波特率的表格。在建表时考虑到表的长度越长,检测所需要的时间和报文数就越多,所以只取了CiA(CAN in Automation)协会推荐的几种标准通信波特率和工业现场常用的波特率。

  CAN控制器首先进入复位模式。接着设置初始波特率,波特率的初始值可以通过拨码开关设置从最高波特率开始,或从最低波特率开始,从而减少自适应时间。最后使能接收中断进入只听模式。当未接收到总线报文时,即没有产生接收中断,进入复位模式选择下一个波特率;当产生1个接收中断时,表示检测到正确的波特率,这时软件就可以切换到正常操作模式,CAN分析仪即可参与总线通信。图6为自适应波特率的流程。



评论


相关推荐

技术专区

关闭