1 引言
CAN,全称为“Controller Area Network”,即控制器局域网,是一种国际标准的,高性价的现场总线,在自动控制领域具有重要作用。CAN是一种多主方式的串行通讯总线,具有较高的实时性能,因此,广泛应用于汽车工业、航空工业、工业控制、安全防护等领域。
由于PC机无CAN接口,因此,PC机与智能节点构成CAN总线系统可采用RS232/CAN、并口/CAN、USB/CAN、ISA卡/CAN以及PCI卡/CAN方式接入。而采用RS232/CAN接入时,需采用CAN/RS232接口标准转换。针对这一问题,提出了CAN/RS232智能电平转换器设计方案,以SJAl000作为独立CAN控制器,完成CAN通信协议。并在SJAl000与驱动器之间连接高速光耦,从而实现总线各点间的电气隔离。
2 硬件电路设计
CAN/RS232智能电平转换器硬件电路主要由微处理器AT89C52、独立CAN通讯控制器SJAl000、CAN总线驱动器82C250、高速光电耦合器6N136、TTL电平与RS232电平转换器ICL232、LED数码管显示电路以及为SJAl000提供初始地址的拨码电路组成,其结构框图如图1所示。
3 CAN控制器SJAlOOO
SJAl000是一款独立CAN控制器,应用于移动目标和工业局域区域网控制领域。该器件是Philips公司CAN控制器PCA82C200的替代产品。SJAl000具有两种工作模式,本设计采用PeliCAN工作模式。
3.1 SJAl000与AT89C52的接口设计
SJAl000与AT89C52的接口电路如图2所示。AT89C52负责sJAl000的初始化,控制SJAl000来实现数据的接收和发送等通讯任务。SJAl000的ADO~AD7连接至AT89C52的P0端口,CS连接至AT89C52的P3.4(AT89C52的定时器T0不起作用)。当P3.4为0时,AT89C52选中SJAl000,并通过访问外部RAM低地址区实现P0端口的读/写操作,从而对SJAl000相应寄存器执行读/写操作。SJAl000的RD、WR、ALE引脚分别与AT89C52的对应引脚相连,SJAl000的INT引脚接AT89C52的INTO引脚。AT89C52还可通过中断方式访问SJAl000。为了增强系统的稳定性,采用双晶体振荡器,AT89C52采用11.059 2 MHz的晶体振荡器,SJAl000选用16 MHz的晶体振荡器。复位电路可选用DSl232,其输出引脚ARES与SRES分别与AT89C5l的RESET引脚和SJAl000的RESET引脚相连。
3.2 SJAl000与驱动器的连接
SJAl000的TX0、RX0引脚不是直接与82C250的TXD、RXD引脚相连,而是通过高速光耦6N136与82C250相连,这样可增强CAN总线节点的抗干扰能力,从而实现总线各节点间电气隔离。高速光耦6N136用于保护SJAl000型CAN总线控制器,该光耦两侧采用5 V的DC―DC电源.可使器件的VCC与VCCl完全隔离,提高系统的抗干扰能力以及节点的稳定性和安全性。图3所示为SJAl000与CAN驱动器82C250的连接电路。
4 软件程序设计
系统软件程序设计包括:主程序、CAN节点初始化子程序、RS232报文发送子程序、RS232报文接收子程序、CAN报文接收子程序以及CAN报文发送子程序。其主程序流程图如图4所示。
4.1 CAN节点初始化
独立CAN控制器SJAl000必须在上电或硬件复位后设置CAN通讯。上电后SJAl000的17引脚得到一个复位电平(低电平),使其进入复位模式。初始化包括设置工作方式、接收滤波方式、接收屏蔽寄存器和接收代码寄存器、波特率参数和中断允许寄存器。初始化设置完成后,SJAl000则进入工作状态,开始执行通讯任务。
SJAl000寄存器初始化,首先要将其模式寄存器(MOD)复位模式位置为l,再通过时钟分频寄存器(CDR)选择PeliCAN工作模式,同时关闭时钟输出(CLOCKOUT);通过中断允许寄存器(IER)开启发送中断、溢出中断和错误警告中断;向接收屏蔽寄存器(AMR)和接收代码(ACR)寄存器赋初值;通过总线定时寄存器0 (BTR0)和总线定时寄存器1(BTRl)设置波特率;为输出控制寄存器(OCR)赋初值;通过接收缓冲器起始地址寄存器(RBSA)来设置接收缓冲器FIF0的起始地址;清除发送错误计数寄存器(TXERR);清除错误代码捕捉寄存器(ECC),最后再次选择方式寄存器(MOD),设置单滤波,并返回工作状态。
4.2 RS232报文发送
AT89C52内含一组全双工串行传输界面,可同时接收或传输外部数据,其信号为TTL电平。由于与标准的RS232界面不兼容,须加电平准转换IC才可与RS232相连。AT89C52串行发送及接收数据均是通过特殊功能暂存器SBUF完成,在设定通讯协议模式后,通过指令“MOV SUBF,A”就可将存储在SBUF暂存器内的数据由引脚TXD串行传输。
4.3 RS232报文接收
AT89C52串行传输控制暂存器是由特殊控制暂存器SCON控制,SCON设定串行传输工作模式,发送接收时其第9位及发送接收时中断指示工作。通过指令“MOV A,SBUF”则将外界串行信号经由RXD引脚读入,并转换成并列数据存入暂存器A。
4.4 CAN报文发送
根据CAN协议,报文传输是由独立CAN控制器SJAl000完成。主控制器必须将要发送的数据按特定格式组合成一帧报文传输到发送缓冲器,将命令寄存器中的“发送请求”置1,然后启动SJAl000发送即可。
4.5 CAN报文接收
CAN报文接收子程序负责节点的报文接收和其他情况的处理。接收子程序在结构上要比发送子程序复杂一些,因为在接收报文时,要对同处理诸如总线关闭、错误报警、接收溢出等情况。SJAl000报文接收和发送有两种方式:中断方式和查询方式。查询方式应禁止接收中断使能,而中断方式一般用于实时性要求较高的情况。
在中断方式下,如果SJAl000已接收一个报文,而且报文通过验收滤波器并存入接收FIFO,则产生一个接收中断。因此主控制器立刻工作,将收到的报文发送到报文存储器中,再通过置位命令寄存器的相应标志“RRB”发送一个释放接收缓冲器命令。接收FIF0里的更多报文将产生一个新的接收中断,因此不能将所有接收FIF0中的有效信息在一个中断周期内读出。接收缓冲器释放后,SJAl000会检查状态寄存器中接收缓冲器状态(RBS)是否有更多报文,所有有效信息都将循环读出。
5 结语
本系统设计采用SJAl000作为CAN独立控制器,以CAN/RS232智能电平转换器为实例,论述了CAN总线与单片机之间的接口连接,对CAN总线的实际应用具有一定的参考价值。
关键字:CAN总线 RS232 电平转换器
引用地址:CAN总线/RS232智能电平转换器的设计
CAN,全称为“Controller Area Network”,即控制器局域网,是一种国际标准的,高性价的现场总线,在自动控制领域具有重要作用。CAN是一种多主方式的串行通讯总线,具有较高的实时性能,因此,广泛应用于汽车工业、航空工业、工业控制、安全防护等领域。
由于PC机无CAN接口,因此,PC机与智能节点构成CAN总线系统可采用RS232/CAN、并口/CAN、USB/CAN、ISA卡/CAN以及PCI卡/CAN方式接入。而采用RS232/CAN接入时,需采用CAN/RS232接口标准转换。针对这一问题,提出了CAN/RS232智能电平转换器设计方案,以SJAl000作为独立CAN控制器,完成CAN通信协议。并在SJAl000与驱动器之间连接高速光耦,从而实现总线各点间的电气隔离。
2 硬件电路设计
CAN/RS232智能电平转换器硬件电路主要由微处理器AT89C52、独立CAN通讯控制器SJAl000、CAN总线驱动器82C250、高速光电耦合器6N136、TTL电平与RS232电平转换器ICL232、LED数码管显示电路以及为SJAl000提供初始地址的拨码电路组成,其结构框图如图1所示。
3 CAN控制器SJAlOOO
SJAl000是一款独立CAN控制器,应用于移动目标和工业局域区域网控制领域。该器件是Philips公司CAN控制器PCA82C200的替代产品。SJAl000具有两种工作模式,本设计采用PeliCAN工作模式。
3.1 SJAl000与AT89C52的接口设计
SJAl000与AT89C52的接口电路如图2所示。AT89C52负责sJAl000的初始化,控制SJAl000来实现数据的接收和发送等通讯任务。SJAl000的ADO~AD7连接至AT89C52的P0端口,CS连接至AT89C52的P3.4(AT89C52的定时器T0不起作用)。当P3.4为0时,AT89C52选中SJAl000,并通过访问外部RAM低地址区实现P0端口的读/写操作,从而对SJAl000相应寄存器执行读/写操作。SJAl000的RD、WR、ALE引脚分别与AT89C52的对应引脚相连,SJAl000的INT引脚接AT89C52的INTO引脚。AT89C52还可通过中断方式访问SJAl000。为了增强系统的稳定性,采用双晶体振荡器,AT89C52采用11.059 2 MHz的晶体振荡器,SJAl000选用16 MHz的晶体振荡器。复位电路可选用DSl232,其输出引脚ARES与SRES分别与AT89C5l的RESET引脚和SJAl000的RESET引脚相连。
3.2 SJAl000与驱动器的连接
SJAl000的TX0、RX0引脚不是直接与82C250的TXD、RXD引脚相连,而是通过高速光耦6N136与82C250相连,这样可增强CAN总线节点的抗干扰能力,从而实现总线各节点间电气隔离。高速光耦6N136用于保护SJAl000型CAN总线控制器,该光耦两侧采用5 V的DC―DC电源.可使器件的VCC与VCCl完全隔离,提高系统的抗干扰能力以及节点的稳定性和安全性。图3所示为SJAl000与CAN驱动器82C250的连接电路。
4 软件程序设计
系统软件程序设计包括:主程序、CAN节点初始化子程序、RS232报文发送子程序、RS232报文接收子程序、CAN报文接收子程序以及CAN报文发送子程序。其主程序流程图如图4所示。
4.1 CAN节点初始化
独立CAN控制器SJAl000必须在上电或硬件复位后设置CAN通讯。上电后SJAl000的17引脚得到一个复位电平(低电平),使其进入复位模式。初始化包括设置工作方式、接收滤波方式、接收屏蔽寄存器和接收代码寄存器、波特率参数和中断允许寄存器。初始化设置完成后,SJAl000则进入工作状态,开始执行通讯任务。
SJAl000寄存器初始化,首先要将其模式寄存器(MOD)复位模式位置为l,再通过时钟分频寄存器(CDR)选择PeliCAN工作模式,同时关闭时钟输出(CLOCKOUT);通过中断允许寄存器(IER)开启发送中断、溢出中断和错误警告中断;向接收屏蔽寄存器(AMR)和接收代码(ACR)寄存器赋初值;通过总线定时寄存器0 (BTR0)和总线定时寄存器1(BTRl)设置波特率;为输出控制寄存器(OCR)赋初值;通过接收缓冲器起始地址寄存器(RBSA)来设置接收缓冲器FIF0的起始地址;清除发送错误计数寄存器(TXERR);清除错误代码捕捉寄存器(ECC),最后再次选择方式寄存器(MOD),设置单滤波,并返回工作状态。
4.2 RS232报文发送
AT89C52内含一组全双工串行传输界面,可同时接收或传输外部数据,其信号为TTL电平。由于与标准的RS232界面不兼容,须加电平准转换IC才可与RS232相连。AT89C52串行发送及接收数据均是通过特殊功能暂存器SBUF完成,在设定通讯协议模式后,通过指令“MOV SUBF,A”就可将存储在SBUF暂存器内的数据由引脚TXD串行传输。
4.3 RS232报文接收
AT89C52串行传输控制暂存器是由特殊控制暂存器SCON控制,SCON设定串行传输工作模式,发送接收时其第9位及发送接收时中断指示工作。通过指令“MOV A,SBUF”则将外界串行信号经由RXD引脚读入,并转换成并列数据存入暂存器A。
4.4 CAN报文发送
根据CAN协议,报文传输是由独立CAN控制器SJAl000完成。主控制器必须将要发送的数据按特定格式组合成一帧报文传输到发送缓冲器,将命令寄存器中的“发送请求”置1,然后启动SJAl000发送即可。
4.5 CAN报文接收
CAN报文接收子程序负责节点的报文接收和其他情况的处理。接收子程序在结构上要比发送子程序复杂一些,因为在接收报文时,要对同处理诸如总线关闭、错误报警、接收溢出等情况。SJAl000报文接收和发送有两种方式:中断方式和查询方式。查询方式应禁止接收中断使能,而中断方式一般用于实时性要求较高的情况。
在中断方式下,如果SJAl000已接收一个报文,而且报文通过验收滤波器并存入接收FIFO,则产生一个接收中断。因此主控制器立刻工作,将收到的报文发送到报文存储器中,再通过置位命令寄存器的相应标志“RRB”发送一个释放接收缓冲器命令。接收FIF0里的更多报文将产生一个新的接收中断,因此不能将所有接收FIF0中的有效信息在一个中断周期内读出。接收缓冲器释放后,SJAl000会检查状态寄存器中接收缓冲器状态(RBS)是否有更多报文,所有有效信息都将循环读出。
5 结语
本系统设计采用SJAl000作为CAN独立控制器,以CAN/RS232智能电平转换器为实例,论述了CAN总线与单片机之间的接口连接,对CAN总线的实际应用具有一定的参考价值。
上一篇:基于C语言的RS232串行接口通信设计与实现
下一篇:RS232C串口在数控机床与电脑通信上的应用
推荐阅读最新更新时间:2024-05-03 00:46
STM32-(37):CAN总线(协议帧)
CAN协议帧的概念 帧 帧用途 数据帧 用于发送单元向接收单元传送数据的帧。 遥控帧 用于接收单元向具有相同ID的发送单元请求数据的帧。 错误帧 用于检测出错误时向其它单元通知错误的帧。 过载帧 用于接收单元通知其尚未做好接收准备的帧。 帧间隔 用于将数据帧及遥控帧与前面的帧分离开来的帧。 另外,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有11个位的标识符(Identifier:以下称ID),扩展格式有29个位的ID。 数据帧的组成 SOF(start of frame):帧的起始位 数据帧详解: (1)帧起始(标准、扩展格式相同) 表示帧开始的段。1个位的显性位。
[单片机]
CAN总线现场工程师的“万金油”
到现场解决CAN通讯问题,为了手到病除,致远电子的工程师除了随时携带CANScope分析仪和不同阻值的电阻外,CAN网桥也是必备“万金油”,它不但可以延长通讯距离、增加通讯节点,而且可以隔离干扰、修正波特率、改善波形、滤除/改变错误数据。
一、网桥简介
can网桥是一种接收一侧CAN消息发给另一CAN网络,实现不同CAN网络耦合的设备。在实际的工程应用中经常可以看到,但是一般只是作为延长通讯距离来使用。
图1 CAN网桥
二、定位干扰原因
当总线有干扰时,有经验的工程师能够迅速定位,但是对于新手来说却很麻烦。造成总线干扰的原因有很多,比如通过电磁辐射耦合到通讯电缆中、屏蔽线接
[嵌入式]
指纹识别弱爆了 踩一踩刹车就能识别司机身份
每个人的驾驶习惯千差万别,你有没有想过,也许仅凭一个人点踩刹车的力度,转动方向盘的角度,不要几分钟,就能轻松鉴别出这个人是谁? 来自美国华盛顿大学和加州大学圣地亚哥分校的研究人员,将在今年7月份开幕的第16届隐私增强技术研讨会(Privacy Enhancing Technology Symposium)上发布一项研究成果,该研究表明:通过从车内CAN总线获取的数据,可以鉴别出驾驶员的身份。事实上,可能只要不到15分钟的时间,仅仅通过从试验车辆获取的“刹车踏板”这一项数据,研究人员就能够轻松辨别出 15位不同驾驶员的身份,准确率在90%左右。如果试验时间达到90分钟以上,或者对其他零部件产生的数据进行监测,则正确率能够达到100%。
[嵌入式]
STM32的CAN总线的接收双FIFO使用方法
通过下面的框图我们可以看到,STM32F013有两个接收FIFO 但是实际的使用中如何让着两个FIFO都被使用呢,解决办法就在这里, 1. STM32F103有0-13共14个过滤器组,每个过滤器组都可以绑定指定的FIFO。 2. 特别需要注意的一点是,FIFO0和FIFO1的接收对应不同的中断入口,切记。 分别是 DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0 DCD CAN1_RX1_IRQHandler ; CAN1 RX1 ================================================
[单片机]
基于单片机的CAN总线分布式测控系统的研制
本文介绍了一种基于单片机AT89C52的CAN总线分布式测控系统,主要阐述了系统的总体设计方案,以及控制模块和采集模块的软硬件设计,重点是系统中以单片机为核心的带有CAN总线接口的设计,解决现场各传感器得到的测量信号利用单片机进行存储和处理,然后通过与CAN控制器的通讯将信息发送到CAN总线上。 1 CAN总线网络的技术特点 用通讯数据块编码,可实现多主工作方式,数据收发方式灵活,可实现点对点、一点对多点及全局广播等多种传输方式;可将DCS结构中主机的常规测试与控制功能分散到各个智能节点,节点控制器把采集到的数据通过CAN适配器发送到总线,或者向总线申请数据,主机便从原来繁重的底层设备监控任务中解放出来,进行更高层次的控
[单片机]
STM32-(36):CAN总线(概述)
CAN 是 Controller Area Network 的缩写(以下称为 CAN) ,是ISO国际标准化的串行通信协议。 在当前的汽乍产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来 。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个 LAN 进行大量数据的高速通信”的需要,1986年德国电气商博世公司开发出面向汽车的 CAN 通信协议。此后, CAN 通过 ISO 1898及 ISO 11519进行了标准化,现在在欧洲已是汽车网络的标准协议。 现在, CAN 的高性能和可靠性己被认同,
[单片机]
UltraSoC联手Canis Labs,确保CAN总线更安全
UltraSoC与Canis Automotive Labs日前宣布了一项合作,旨在解决汽车行业中最严重的信息安全漏洞之一:CAN总线内部缺乏安全功能;而CAN总线通常用于连接诸如刹车、转向、发动机、安全气囊、门锁和车头灯等车载系统。 两家公司的合作将带来基于硬件的入侵检测和缓解技术,以防控CAN总线上常见的攻击,其中包括自动硬件防欺骗、防御位层级攻击(诸如Bus-Off攻击和位故障)、以及抵御拒绝服务(DoS)类型的攻击等。双方合作的重心是部署Canis Labs的CAN-HG技术,这项技术是对标准CAN总线协议的一种全新且完全兼容的增强,其中包括总线保护安全功能及其他的优势,从而能够承载比标准CAN框架大12倍的有效负载。
[汽车电子]
浅谈混合动力汽车的整车CAN总线网络拓扑结构设计
01 前言 电动汽车各个模块之间的交互有效性直接影响了汽车的行驶效率和驾驶感。而插电式混合动力汽车根据电力驱动系统和发动机动力系统的布局形式可以分为3类:串联式、并联式、串-并联混合式。该文探讨的是并联式混合动力系统方案,它具有对原车技术模块化,实施性方便,适用性广特点。 02 术语 节点:连接在通讯网络上,能够按照某一通讯协议通过网络进行通讯的设备的集合。 总线电压:总线电压是CAN总线的CAN_H或者CAN_L 对各自CAN节点地的电压。 03 CAN总线网络拓扑结构设计 CAN总线是一种多主总线,一旦有总线闲置,任意一个CAN节点均可向总线发送数据。CAN总线通道中优先发报文的节点取决于无损逐位仲裁的方式, 此方式可
[嵌入式]