微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于CAN总线控制器SJA1000的自动络筒机通信系统方案

基于CAN总线控制器SJA1000的自动络筒机通信系统方案

时间:12-29 来源:互联网 点击:

处理器而言,SJA1000是一个总线接口,SJA1000片内的存储单元相对Mega64L来说是片外的数据存储器,因此,可以按照扩展片外数据存储器的形式来访问SJA1000的寄存器地址。Mega64L是CAN控制器的微处理器,把Mega64L的ALE、RD、WR和 SJA1000的ALE、RD、WR相连就构成一个最小系统节点。Mega64L通过地址总线经GAL译码来选通 SJA1000,并由此决定CAN控制器各寄存器的地址,通过读、写外部数据存储器的形式来访问 SJA1000。在系统中我们将SJA1000的TX1脚悬空,RX1引脚接地,形成CAN协议所要求的电平逻辑。该电路的主要功能就是通过CAN总线接收来自上位机的数据进行分析组态,然后下传给下位机的控制电路实现控制功能,当智能控制系统接收到下位机的上传数据,SJA1000的中断输出INT脚就会被激活,出现一个由高电平到低电平的跃变,产生一个中断,从而引发微处理器Mega64L产生中断,通过中断处理程序接收每一帧信息并通过CAN总线上传给上位机进行分析,以便及时纠正误码、错码。



  在进行电路设计时需注意:为进一步提高系统抗干扰能力,在CAN控制器SJA1000和CAN控制器接口PCA82C250之间加接6N137光电隔离芯片,并采用DC-DC变换器隔离电源;通信信号传输到导线的端点时会发生反射,反射信号会干扰正常信号的传输,因而总线两端两个124欧姆电阻对匹配总线阻抗起着相当重要的作用,忽略掉它们,会使数据通信的抗干扰性和可靠性大大降低,甚至无法通信;PCA82C250第8脚与地之间的电阻RS称为斜率电阻,它的取值决定了系统处于高速工作方式还是斜率控制方式。把该引脚直接与地相连,系统将处于高速工作方式。在这种方式下,为避免射频干扰,建议使用屏蔽电缆作总线;而在波特率较低、总线较短时,一般采用斜率控制方式,上升和下降的斜率取决于RS的阻值。

  2.3、系统软件设计

  本项目通信系统中软件设计包括两部分:上位机和下位机。上位机主要通过人机交互向CAN总线发送信号给各单锭,下位机软件主要是Mega64L接收CAN总线信息后,完成控制单锭相应动作的任务,比如张力盘增加或是减少张力等等事件。这里主要介绍单锭中各CAN的软件实现。

  系统上电初始化:系统软件设计的指导思想是系统上电后首先对Mega64L和SJA1000进行初始化,以确定工作主频、波特率、输出特性等,然后通过查询方式获取模数转换采样值,并把该值通过SJA1000传送到CAN总线上由上位机进行显示控制,CAN发送通过中断方式向总线发送信息,而对CAN总线上来的信息也采用中断方式,系统每接收到一帧信息,便产生一次中断以触发微处理器进入中断,在中断服务程序中读取该帧信息并传送到现场。为防止出现死机和干扰,程序中还采用看门狗技术进行定时监控。

  对CAN控制器进行初始化,实际上就是对ACR(验收码寄存器)、AMR(验收屏蔽寄存器)、BTR0(总线定时寄存器0)、BTR1(总线定时寄存器 1)、OCR(输出控制寄存器)这些寄存器进行相关操作。只有当控制寄存器CR中的复位请求位为高时,访问才被允许,否则既写不进去,也读不出正确的内容。对CR进行第一次写操作,要设定将要开放的中断类型,并置位复位请求,允许初始化开始。对ACR、AMR进行写操作,要界定对什么样的报文予以接收,因此有时称它们为验收屏蔽滤波器。当满足条件:“ACR与报文标识符的高 8位在AMR为‘0’相关位上对应相等”或 “AMR=0FFH,即ACR的所有位均为不相关(或屏蔽)位”,并存在空的收发缓存器时,完整报文可被正确收发。

  发送报文:当等待发送的报文成功发送或被放弃之后,发送缓冲区被释放并产生一个发送中断。在中断处理中,必须检查状态寄存器的发送完成标志(TCS) ,以确定之前的发送是否成功。未成功表示发送被放弃,在这种情况下CPU对放弃的发送执行一个特殊的处理,例如重复发送被放弃的报文。中断发送报文流程图如图3。

  接收报文:对于给出的控制器,主要流程在中断控制的报文接收之前必须使能CAN控制器的接收终端和CPU的全局中断。接收中断使能标志(RIE)位于中断使能寄存器中。

如果CPU已经接收到一个报文,该报文通过验收滤波器并放入接收FIFO,则产生一个接收中断。这样 CPU能够立即响应,将这个接收到的报文送到自身的报文存储器,并置位命令寄存器的释放缓冲标志RRB。接收缓冲器中其他的报文将引起新的中断,所以没有必要在一次中断过程中把接收缓冲器FIFO中的所有有效报文读取出来。不过,在接收中断过程结束时,CPU 可以通过读接收缓冲期状态标志(RBS)来检查是否还有其他报文存在。这一点在使用接收级中断(Receive Level Interrupt)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top