CAN总线分布式系统适配卡和控制单元设计
发布时间:2008/5/27 0:00:00 访问次数:486
摘要:介绍can总线分布式系统中适配卡和控制单元的硬件组成及软件的设计方法,给出硬件原理图;详细分析sja1000的初始化方法、验收滤波器的原理和使用方法、通信程序的设计,并给出can通信中断服务程序和初始化程序流程图。 关键词:can总线 适配卡 控制单元 sja1000 双口ram 1 can总线分布式系统的结构 系统结构如图1所示。本系统由上位监控计算机、can总线适配卡和控制单元三部分构成。其中上位监控计算机采用ibm-pc兼容机,主要负责对系统数据的接收与管理、控制命令的发送以及各控制单元动态参数和设备状态实时显示。控制单元以单片机为核心,主要负责对现场环境参数和设备状态进行检测,对采集来的数据进行处理,并对sja1000进行操作和控制。can总线适配卡,可使pc机方便地连接到can总线上。它内嵌微处理器、can总线控制器、can总线收发器和双口ram。双口ram作为pc机与can总线适配卡的数据共享区,通过设备将其映射成pc机的物理内存,实现can与pc机的高速数据交换。can总线适配卡上带有光电隔离,可增强系统在恶劣环境中的抗干扰能力。总线两端各有1个电阻r(约120ω)起总线阻抗匹配作用。
2 can适配卡的设计 2.1 硬件设计
can适配卡的硬件组成框图如图2所示,由isa接口、双口ram、cpu、can通信控制器sja1000、can总线接口82c250等组成。由于带有片上can控制器的单片机都含较多的i/o线、定时/计数器、a/d等功能,往往较复杂,因此微处理器使用价廉的at89c51单片机。为了进一步提高抗干扰措施,在2个can器件之间使用了由高速隔离器件6n137构成的隔离电路。光耦两侧应采用dc-dc隔离电源。硬件电路中使用82c250的目的是为了增大通信距离。要实现pc机和can控制器之间的数据传送,必须在pc机和适配卡上的mpu之间建立起双向的数据交换通道。通过isa总线实现单片机系统与主机之间的数据交换有多种实现方法。本适配卡采用集成双口ram实现数据交换。由于can信号传输采用短帧结构(8字节数据),双口ram的容量要求并不大,本卡选用2k×8位的带中断请求信号int和忙信号busy的idt7132。具体的连接电路如图3、图4所示。上位pc机对双口ram的寻址方式采用i/o寻址方式,使用的控制线为iow和ior。为避免产生读写错误,使用双口ram的关键是处理好争用现象。idt7132提供了中断判优和硬件判优两种方式。当两端口争用同一地址单元时,由片内硬件电路,根据两边的地址、片选、读写信号到达先后顺序,裁决哪个端口有使用权。如左端口优先使用,则自动将右端口的busyr信号拉为低电平,通知右侧暂停读写操作。在本适配卡中,由于8031没有ready信号,可以将此信号接至8031的p1.0上。当8031发出读写idt7132命令时,根据p1.0口的值就可判断对idt7132读写是否存在冲突。当p1.0的值为0时,存在冲突,必须重发读写idt7132的命令。由于isa总线既没有ready信号,也没有通用的i/o引脚,因此将busyl信号通过三态门接至isa数据线的最低位d0。用isa总线的一个空闲i/o端口打开三态门,通过d0读取busyl的状态。
sja1000为can总线微控制器,是philips公司的pca82c200的替代产品,可完成can总线的物理层和数据链路层的所有功能。sja1000内部ram由寄存器组和报文缓冲区组成。发送缓冲区和接收缓冲区共用同一段can地址16h~18h,共3个单元,能存储一条将在can总线
摘要:介绍can总线分布式系统中适配卡和控制单元的硬件组成及软件的设计方法,给出硬件原理图;详细分析sja1000的初始化方法、验收滤波器的原理和使用方法、通信程序的设计,并给出can通信中断服务程序和初始化程序流程图。 关键词:can总线 适配卡 控制单元 sja1000 双口ram 1 can总线分布式系统的结构 系统结构如图1所示。本系统由上位监控计算机、can总线适配卡和控制单元三部分构成。其中上位监控计算机采用ibm-pc兼容机,主要负责对系统数据的接收与管理、控制命令的发送以及各控制单元动态参数和设备状态实时显示。控制单元以单片机为核心,主要负责对现场环境参数和设备状态进行检测,对采集来的数据进行处理,并对sja1000进行操作和控制。can总线适配卡,可使pc机方便地连接到can总线上。它内嵌微处理器、can总线控制器、can总线收发器和双口ram。双口ram作为pc机与can总线适配卡的数据共享区,通过设备将其映射成pc机的物理内存,实现can与pc机的高速数据交换。can总线适配卡上带有光电隔离,可增强系统在恶劣环境中的抗干扰能力。总线两端各有1个电阻r(约120ω)起总线阻抗匹配作用。
2 can适配卡的设计 2.1 硬件设计
can适配卡的硬件组成框图如图2所示,由isa接口、双口ram、cpu、can通信控制器sja1000、can总线接口82c250等组成。由于带有片上can控制器的单片机都含较多的i/o线、定时/计数器、a/d等功能,往往较复杂,因此微处理器使用价廉的at89c51单片机。为了进一步提高抗干扰措施,在2个can器件之间使用了由高速隔离器件6n137构成的隔离电路。光耦两侧应采用dc-dc隔离电源。硬件电路中使用82c250的目的是为了增大通信距离。要实现pc机和can控制器之间的数据传送,必须在pc机和适配卡上的mpu之间建立起双向的数据交换通道。通过isa总线实现单片机系统与主机之间的数据交换有多种实现方法。本适配卡采用集成双口ram实现数据交换。由于can信号传输采用短帧结构(8字节数据),双口ram的容量要求并不大,本卡选用2k×8位的带中断请求信号int和忙信号busy的idt7132。具体的连接电路如图3、图4所示。上位pc机对双口ram的寻址方式采用i/o寻址方式,使用的控制线为iow和ior。为避免产生读写错误,使用双口ram的关键是处理好争用现象。idt7132提供了中断判优和硬件判优两种方式。当两端口争用同一地址单元时,由片内硬件电路,根据两边的地址、片选、读写信号到达先后顺序,裁决哪个端口有使用权。如左端口优先使用,则自动将右端口的busyr信号拉为低电平,通知右侧暂停读写操作。在本适配卡中,由于8031没有ready信号,可以将此信号接至8031的p1.0上。当8031发出读写idt7132命令时,根据p1.0口的值就可判断对idt7132读写是否存在冲突。当p1.0的值为0时,存在冲突,必须重发读写idt7132的命令。由于isa总线既没有ready信号,也没有通用的i/o引脚,因此将busyl信号通过三态门接至isa数据线的最低位d0。用isa总线的一个空闲i/o端口打开三态门,通过d0读取busyl的状态。
sja1000为can总线微控制器,是philips公司的pca82c200的替代产品,可完成can总线的物理层和数据链路层的所有功能。sja1000内部ram由寄存器组和报文缓冲区组成。发送缓冲区和接收缓冲区共用同一段can地址16h~18h,共3个单元,能存储一条将在can总线