新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于AT89C51CC01单片机的CAN-LIN网关设计

基于AT89C51CC01单片机的CAN-LIN网关设计

作者: 时间:2011-08-11 来源:网络 收藏

图2 单片机电路

  

基于AT89C51CC01单片机的CAN—LIN网关设计

  图3 CAN接口电路

  

基于AT89C51CC01单片机的CAN—LIN网关设计

  图4 LIN接口电路

  在电路中我们设计了一个5位的拨码开关,由于在各个不同的工作系统中,LIN总线和CAN总线的传输是不一样的,这就需要改换软件,因此在此设计中用一个5位的拨码开关用于波特率设置,三位用于LIN波特率设置,两位用于CAN波特率设置。同时为了展示网关的工作状态,特意设计了工作指示灯,在接收和发送信号时分别以一定的频率闪烁,当有故障出现时,两个灯同时点亮。

  为增强CAN节点的抗干扰能力,单片机的TXDC和RXDC引脚并不是直接与PCA82C250A的TXD和RXD引脚相连,而是通过高速光耦6N137相连(图3)。这样很好的实现了总线上各个节点间的电气隔离,光耦部分电路所采用的两个电源VCC和VDD必须是完全隔离的,否则采用光耦也就失去了意义。

  网关软件设计

  网关的软件设计主要包括主控程序模块和CAN模块软件设计以及LIN模块软件设计,CAN模块软件设计主要有三个子函数,一个是CAN初始化CAN_INIT(),另外两个是CAN_RE_ISR()和CAN_SEND()。CAN_INIT()主要是设置CAN通信的波特率和CAN基本设置,波特率可以根据拨码开关的值来设定,在系统上电之后通过自检程序自动扫描,查预先设定好的波特率表格,设定CAN通信波特率。

  CAN_RE_ISR()负责信息的接收和处理,CAN_SEND()负责信息发送。

  LIN模块软件设计主要包括几个文件:LIN.H、LIN.C、TEMR0.H TEMRO.C,其中LIN.H、LIN.C分别实现LIN规范的设定以及UART波特率的设定和LIN信息的接收与发送,TEMR0.H TEMRO.C用于产生LIN总线波特率。主控程序设计主要完成整个网关的信息转发功能,当CAN接收中断发生时,置LIN发送标志位,准备转发CAN信息到LIN网络;同样,当LIN接收中断生时,置CAN发送标志位,准备发送LIN信息到CAN网络。

  整个软件以C51编写,并利用KEIL公司的仿真软件进行软件调试,最后将完整程序烧写到的flash空间。

  结语

  本文提出了基于单片机的,解决了现场总线控制中的CAN总线控制网络和LIN总线控制网络之间的信息传输问题,为现场总线的灵活应用提供了基础。本设计经过现场实验,实验结果表明网关运行良好,工作可靠稳定,并已应用到实际工作中。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭