当前位置:首页 > 模拟 > 模拟
[导读]CAN总线以其独有的技术优势和特点,近年来在自动测控和工业控制领域发展迅猛,应用越来越广。然而,目前许多已投入使用的自动测控和工业控制设备采用的仍然是传统的RS485总线。由于物理接口和通讯协议上的不同,要让原有的RS485设备在CAN总线上工作,就必须采用总线转换器。本文介绍了一种基于飞利浦公司LPC2119 的RS485-CAN总线转换器的设计方法和实现过程。

1RS485CAN总线简介

RS485是工业控制领域中一种传统的总线技术。然而,随着工业控制的复杂度提高,RS485总线在系统容量,通讯距离,不能支持多主结构等方面的缺陷开始逐渐显现。

CAN总线是从20时纪80年代初发展起来的一种新型现场总线技术,它的总线长度最远可达10千米(速率5Kbps以下),数据传输速率最高可达1Mbps(通讯距离40米以内)。它在多主方式下工作,不分主从;节点数的数目主要取决于总线驱动电路,目前可达110个。采用非破坏总线仲裁技术,即使网络负载很重也不会出现网络瘫痪现象。此外,CAN的每帧信息都有CRC校验和其它检错措施,有很好的检错效果[1]

由于CAN总线具备以上优点,它目前已经被广泛应用到汽车电子、电力系统、航空工业和自动工作等领域中,并形成了国际标准,被公认为几种最有前途的现场总线之一[2]

然而,由于RS485和CAN总线的电压不兼容,帧格式也不相同,因此,大量现有的RS485总线设备若要在CAN总线上使用,就必须使用RS485-CAN总线转换器

 

2.系统硬件设计

2.1 系统硬件原理框图

图1 :RS485-CAN总线转换器原理框图

RS485-CAN总线转换器由微控制器、CAN总线控制器、CAN总线收发器、UART控制器、RS485总线收发器组成,其原理框图如图1所示。

微处理器通过对CAN控制器和UART控制器的操作,经过CAN总线收发器和RS485总线收发器的电平转换,分别实现了在CAN总线上接收和发送数据以及对RS485设备上数据的读写。

当要向RS485设备写数据时,就将要写的数据发送到CAN总线上。通过CAN总线收发器的电平转换之后,CAN控制器将收到一帧CAN数据,当确认这帧数据是发往本节点时,微控制器就将数据发送到UART控制器上,通过RS485总线收发器传送到RS485设备上。

RS485设备发送数据时,数据将通过RS485和UART控制器传送到微处理器上。微处理器就将这个数据通过CAN控制器和CAN总线收发器发送到CAN总线上,让其它节点接收。

2.2 系统电路设计

本文介绍的RS485-CAN总线转换器选用飞利浦公司的LPC2119作为系统的微控制器。LPC2119是一款集成有CAN和UART控制器的ARM7核的工业级单片机。具有低功耗和稳定可靠的特点[3]。由于LPC2119本身集成了CAN和UART控制器,因此只需再增加一块CAN总线收发芯片和一块RS485总线收发芯片,以及一些外围器件即可完成系统的电路搭建。

CAN总线收发器选用TJA1050,该芯片是飞利浦公司生产的、用来替代82C250的高速CAN总线收发器。除了保留82C250的主要特性外,由于TJA1050采用了先进的SOI(silicon on insulator)技术,因此抗电磁干扰性能得到大幅提高。[4]

RS485总线收发器选用了Sipex公司的SP485E,该芯片是一半双工收发器,具有增强型ESD性能,可承受15kV的人体放电模式和接触放电模式。系统电路图如图2所示:

    

图2: 系统电路图                          

 图3: 微控制器初始化流程图

图中,TD1和RD1分别为LPC2119内建CAN控制器的发送和接收引脚,TXD0和RXD0分别为LPC2119内建UART控制器的发送和接收引脚。TJA1050的S引脚是静音模式选择引脚。S引脚高电平时,TJA1050进入静音模式,发送器完全禁能,执行只听功能。SP485E的/RE引脚和DE引脚分别是接收使能和发送使能,一个是低电平起效,一个是高电平起效。由于SP485E是一半双工的收发器,因此可以把/RE引脚和DE接在一起,由微控制器的一个IO来控制SP485E是处于接收状态还是发送状态。

 

3.系统软件设计

系统的软件设计主要包括三大部分:系统初始化程序、RS485设备数据发送中断程序,RS485设备数据接收中断程序。

3.1 系统初始化程序

系统的初始化包括微控制器的初始化、UART控制器初始化和CAN控制器初始化。微控制器初始化的流程可见图3(源代码略)。

然后是UART控制器和CAN控制器的初始化。下面给出这部分的源代码:

/* UART0初始化 */

uint8 UART0Init(uint32 bps)

{

uint16 Fdiv;

PINSEL0 = (PINSEL0 & 0xfffffff0) | 0x05;    // 选择管脚为UART0

U0LCR = 0x80;                          // 允许访问分频因子寄存器

Fdiv = (Fpclk / 16) / bps;                   // 设置波特率

U0DLM = Fdiv / 256;

U0DLL = Fdiv % 256;

U0LCR = 0x07;                       // 禁止访问分频因子寄存器

U0IER = 0x05;                        // 允许接收和发送中断

U0FCR = 0x87;                       // 初始化FIFO

}

/* CAN初始化 */

void InitCAN(eCANNUM CanNum)

{    

       HwEnCAN(CanNum);   //硬件使能CAN控制器

       while (SoftRstCAN(CanNum));    //软件复位CAN控制器

       while (SetErWarmVal (CanNum,USE_EWL_CAN[CanNum])); //设置错误警告寄存器

       while (SetCANBaudRate (CanNum,USE_BTR_CAN[CanNum]));      //初始化波特率

       VICDefVectAddr =(INT32U)CANIntPrg;  //初始化中断

       VICIntEnable |=(1<<19)|(1<<(20+ CanNum))|(1<<(26+ CanNum));

       CANIER(CanNum).Word= USE_INT_CAN[CanNum];                                                       while (SetTPMMOD(CanNum,USE_TPM_CAN[CanNum]));//设置发送优先模式寄存器

       while (SetLOMMOD(CanNum,USE_LOM_CAN[CanNum]));//设置只听模式寄存器

       CANRcvCyBufApp[CanNum].FullFlag = 0;                //初始化接收环形缓冲区

       CANRcvCyBufApp[CanNum].ReadPoint = 0;

       CANRcvCyBufApp[CanNum].WritePoint = 0;

       SoftEnCAN(CanNum); //软件启动CAN

}

3.2 RS485-CAN总线转换器数据转换原理

CAN的帧格式中,有一个标识符域。CAN控制器的全局滤波器会检测这个标识域,决定是否接收本帧数据。由于RS485网络上,所有节点都会同时收到数据,因此可以为所有的RS485从设备设定同一个标识符。一个CAN节点若要发送数据给RS485设备,只需在该帧把标识符域设定为相应的标识符即可。

RS485本质上仅仅是一个物理层标准,以字节为单位进行数据通讯,其帧格式完全由用户自己定义。然而最终,在RS485总线中最终信息的传输还是以帧为单位,其中包含了地址信息。RS485设备会自动根据接收到的帧,自动判断该帧是否发往本节点,然后做出相应处理。因此,在RS485设备要发送数据时,RS485-CAN总线转换器只需把RS485总线的数据帧打包入CAN的数据帧中,然后发送到CAN网络上;而RS485设备在接收数据时,RS485-CAN总线转换器则把RS485总线的数据帧从接收到的CAN数据帧中提取出来,发往RS485设备即可。

3.3 RS485设备数据接收中断程序

当RS485-CAN总线转换器收到CAN网络上发往RS485设备的数据帧时,即会触发CAN中断,进入数据接收中断服务程序,其流程图如图4(源程序略):

3.4 RS485设备数据发送中断程序

当RS485-CAN总线转换器串口收到RS485设备发送的数据,即会触发串口中断,进入RS485设备数据发送中断程序。其流程图如图5(源程序略):

                    

图4: 数据接收中断程序流程图       

 图5: 数据发送中断程序流程图

 

4.结束语

本文设计的RS485-CAN总线转换器的电路简单可靠,操作方便。通过它,任何RS485设备都可以无需做任何修改就可以直接放到CAN网络中使用。在总线转换器的软件设计中一般应该遵守的一条原则是:不要将其功能设计的过于复杂。因为它的主要任务是将数据以最快的速度转发。至于流量和差错控制应由通信双方的应用层来完成。而本总线转换器的软件设计,很好地达到了这一要求。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

摘要:在当前的电力采集系统中,搜表功能能够很大程度上为数据采集、测量计费等工作带来便利,减少电表采集计费人员的工作量。但相比于载波搜表,RS485通道的电能表一直存在搜表速度慢的缺点,且如今对于这类问题并没有特别好的解决...

关键字: 电力采集终端 RS485 搜表

汽车电子系统架构发生了颠覆性变化。它已经持续了近十年,现在正在加快速度。这主要发生在 BEV 初创公司中,因为它们没有历史限制或根深蒂固的喜爱设计,并且可以从电子架构的零基础开始。

关键字: CAN总线 电动汽车

在第 1 部分中,我们讲解了如何选择正确的电容器种类、功率电感器、开关频率以及半导体对 DC/DC 开关控制器的效率至关重要,并展示了开发指定规格的降压升压转换器的任务的例子。我们还探讨了如何选择最佳的电容器和电感器来创...

关键字: 伍尔特电子公司 功率 转换器

选择正确的电容器种类、功率电感器、开关频率和半导体对于 DC/DC 开关电源控制器的效率至关重要。做出正确的选择并非易事,但即使做出了正确的选择,控制器也必须具有高效率且符合 EMC 要求才能上市。

关键字: 伍尔特电子公司 功率 转换器

转换器制造商别无选择,只能依靠功率模块专家的专业知识来设计滤波器、优化控制回路并提供结果的日子已经让位于系统设计人员可以使用免费软件来实现实现快速和简单的结果。嵌入在电力系统设计软件中的环路补偿工具已经发展到可以在概念阶...

关键字: 转换器 滤波器 优化控制回路

在电子产品的设计中,电磁兼容EMC性能对系统的影响非常大,关系到其能正常稳定运转。世界上已经开始对电子产品的电磁兼容性做强制性限制,电磁兼容性能已经成为产品性能的一个重要指标。 电磁兼容主要有两方面的内容,一个是产...

关键字: CAN总线 电磁兼容EMC

CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在汽车产业中,出于对安全性、舒适性、方便性、低功耗、低成本的要求,各种各样的电子控制系统被开发了出来。...

关键字: CAN总线 CAN 抗噪

CAN总线首先在汽车上得到了广泛应用,之后又在工业生产领域有了很大发展,那么面对不同的应用场景和工况,如何选择合适的网络拓扑结构慢慢成为一个让人头疼的问题。在这篇文章中,我将重点介绍用于驱动这些总线电压的 CAN 驱动器...

关键字: CAN总线 CAN总线拓扑

儒卓力(Rutronik Elektronische Bauelemente GmbH)推出RECOM公司E-K 系列中具有高功率密度的 20 W AC/DC 转换器RAC20E-K/277,它的特点是具有OVC III...

关键字: 儒卓力 转换器 电压

在这篇文章中,小编将为大家带来无线通信模块的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: 无线通信模块 RS485 无线模块

模拟

31144 篇文章

关注

发布文章

编辑精选

技术子站

关闭