基于SJA1000的CAN通信
- 格式:doc
- 大小:251.00 KB
- 文档页数:3
外文资料翻译译文SJA1000 独立的CAN控制器应用指南1 介绍SJA1000是一个独立的CAN控制器,它在汽车和普通的工业应用上有先进的特征。
由于它和PCA82C200 在硬件和软件都兼容,因此它将会替代PCA82C200。
SJA1000有一系列先进的功能适合于多种应用,特别在系统优化、诊断和维护方面非常重要。
本文是要指导用户设计基于SJA1000 的完整的CAN节点。
同时本文还提供典型的应用电路图和编程的流程图。
2 概述SJA1000 独立的CAN控制器有2个不同的操作模式:BasicCAN模式(和PCA82C200)兼容PeliCAN模式BasicCAN模式是上电后默认的操作模式。
因此,用PCA82C200开发的已有硬件和软件可以直接在SJA1000上使用,而不用作任何修改。
PeliCAN模式是新的操作模式,它能够处理所有CAN2.0B 规范的帧类型。
而且它还提供一些增强功能使SJA1000能应用于更宽的领域。
2.1 CAN 节点结构通常,每个CAN 模块能够被分成不同的功能块。
SJA1000使用[3] [4] [5]最优化的CAN收发器连接到CAN 。
收发器控制从CAN控制器到总线物理层或相反的逻辑电平信号。
上面一层是一个CAN 控制器,它执行在CAN规范[8]里规定的完整的CAN协议。
它通常用于报文缓冲和验收滤波,而所有这些CAN功能,都由一个模块控制器控制它负责执行应用的功能。
例如,控制执行器、读传感器和处理人机接口(MMI)。
如图1所示,SJA1000独立的CAN控制器通常位于微型控制器和收发器之间,大多数情况下这个控制器是一个集成电路。
图1 CAN模块装置2.2 结构图下图是SJA1000 的结构图图2 SJA1000的结构图根据CAN规范,CAN核心模块控制CAN帧的发送和接收。
接口管理逻辑负责连接外部主控制器,该控制器可以是微型控制器或任何其他器件。
经过SJA1000复用的地址/数据总线访问寄存器和控制读/写选通信号都在这里处理。
基于SJA1000的CAN总线接口设计一、SJA1000简介SJA1000是一种独立的CAN控制器,用于移动目标和一般工业环境中的控制器局域网络(CAN)。
它是Philips公司早期CAN控制器PCA82C200(BasICCAN)的替代品,而且增加了一种新的工作模式(PeliCAN),这种模式支持具有很多新功能的CAN2.0B协议。
SJA1000与微处理器的接口主要由8根数据和地址分时复用线完成:AD0~AD7、ALE/AS、、/E、、、MODE和,其中MODE为接口方式选择信号,可设置成Intel方式或Motorola方式。
区别在于:Intel模式下,处理器对SJA1000写时,用、作为读、写数据信号,ALE下降沿锁存地址(此时地址信号要保证基本的建立保持时间),仅在读、写数据时为低;Motorola模式下,读、写信号用区分,用/E选通数据(下降沿锁存),AS和CS类似于Intel的ALE和。
二、CAN控制器与DSP的接口设计方法SJA1000的数据和地址信号为分时复用,而DSP为数据、地址信号分离的结构,而且DSP不提供ALE信号,设计的关键就是DSP要把SJA1000的地址当成数据写入并同时产生ALE信号。
分析读写信号所要求的最短有效时间,由于读低电平到数据有效的时间最长为50ns,所以要保证读信号有效时间至少50ns,ADSP21062在用2个软等待时,其低电平时间为62.5ns(25ns/2+2乘以25ns),可以满足要求。
三、DSP的接口信号和时序与早期的处理器不同,DSP芯片的片外引脚都采用地址线和数据线分离的设计方法,不再使用地址数据分时复用线,也没有ALE信号,这样就给CAN控制器与DSP的接口带来一定困难,且不同的DSP外部引脚和时序也略。
基于SJA1000的CAN节点设计文件信息类别内容关键词SJA1000,CTM系列隔离CAN收发器基于SJA1000的CAN节点设计摘要修订历史版本日期原因Rev X1 2006-12-13 内部制定初稿Rev 1.0 2006-12-15 第一次发布目录1. 基于SJA1000的CAN节点设计 (3)1.1 硬件设计电路 (3)1.1.1收发器隔离电路设计 (3)1.1.2 CAN总线接口设计 (4)1.2 软件设计 (5)程序清单1.1 定义片选地址 (5)程序清单1.2 初始化SJA1000 (5)程序清单1.3 发送报文 (6)2. 应用实例 (7)3. 声明 (1)1.基于SJA1000的CAN节点设计1.1 硬件设计电路CAN总线是一种最有前途的现场总线,因其优异性能而在工业控制、汽车电子、安防等方面得到广泛应用。
设计CAN-bus通讯接口是很重要的一个环节,设备的正确运行与其密切相关。
如图 1.1给出了一个实际的CAN-bus通讯单元电路图,电路结构为:MCU(P89C52)+CAN控制器(SJA1000)+隔离CAN收发器(CTM Module)。
图 1.1 CAN-bus通讯单元原理图如图 1.1所示,整个系统电源采用+5V电源输入,上电复位芯片(CAT810L)可保证上电时正确的启动系统。
微处理器采用PHILIPS的P89C52单片机,该系列单片机是80C51微控制器的派生器件,采用先进的CMOS工艺制造,指令系统与80C51完全相同。
CAN控制器采用PHILIPS的SJA1000,SJA1000是一款独立的控制器,用于汽车和一般工业环境中的控制器局域网络。
它是PHILIPS半导体PCA82C200 CAN控制器(BasicCAN)的替代产品。
而且,它增加了一种新的工作模式(PeliCAN),这种模式支持具有很多新特性的CAN 2.0B 协议,是目前市面上用的最广的一款CAN控制器。
2015第4期总第227期现代制造技术与装备基于SJA1000的CAN总线智能网桥设计尚明玲(潍坊科技学院机械工程学院,潍坊262700)摘要:CAN(Controller Area Network)总线越来越多的应用于工业及移动目标。
SJA1000作为一种独立的CAN总线通信控制器,可以实现CAN协议部分电路的结构和功能。
本文主要内容是基于SJA1000设计一款CAN总线智能网桥,实现了不同的波特率甚至不同总线协议的CAN总线间的信号转送。
关键词:CAN SJA1000智能网桥控制器局域网CAN(Controller Area Network)是BOSCH 公司为现代汽车应用领先推出的一种多主机局域网,其主要优点有高性能、高可靠性、实时性等,因此广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器及建筑及环境控制部门。
SJA1000是PHILIP公司半导体PCA82C200CAN控制器(basiccan)的替代产品,增加了新工作模式(PeliCAN),这种模式支持具有很多新特性的CAN2.0B协议。
1CAN控制器的详细说明1.1工作模式SJA1000在软件和引脚上与PCA82C200兼容并增加了新功能,SJA1000的两种工作模式:(1)BASICCAN模式:与PCA82C200兼容;(2)PELIcan模式:扩展模式。
1.2与PCA82C200兼容性在BASICCAN模式中,SJA1000模仿PCA82C200独立控制器所有的寄存器。
(1)同步模式。
在SJA1000的控制器中没有SYNC位。
同步只有在CAN总线上“弱势-支配(控制)”转换时才可能发生。
写这一位是没有任何影响的,为了与现有软件兼容,读取这一位时可以把以前写入的值读出。
(2)时钟分配寄存器。
在时钟分配寄存器用来选择CAN工作模式。
它使用PCA82C200保留下来的一位。
在寄存器中写入一个0~7之间的值,就将进入BASCICAN模式。
MCP2515 SJA1000通讯调试记录一、CAN总线CAN是控制器局域网络(ControllerArea Network, CAN)的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的,并最终成为国际标准(ISO 11898)。
SJA1000是飞利浦公司一款并行接口的CAN 协议控制器,为了减少IO口资源占用,Microchip推出SPI 接口CAN协议控制器,型号:MCP2515。
这两款芯片都支持CANV2.0B 技术规范,能发送和接收标准和扩展数据帧以及远程帧。
CAN电平:CAN数据格式:标准帧扩展帧远程帧(省略)二、原理图2.1、MCP2515的原理图2.2、SJA1000的原理图三、调试思路3.1、SPI接口调试3.2、CAN接口调试第一步:配置CLKOUT输出(CANCTRL寄存器配置CLKEN 和分频系数),通过示波器观察CLKOUT引脚输出。
确认MCP2515受控。
第二步:环路测试(自发自收)首先MCP2515配置成环路模式,下面是验证环路测试1、配置RXB0禁止滤波屏蔽标识符功能1、收发功能是否正常。
验证:RXB0接收数据(可以读取接收缓冲区获取)和发送数据对比,是否一致。
2、开启CANINTE.TX0IE、CANINTE.RX0IE中断,监测/INT和/RX0B 引脚电平变化。
理论上:1)成功发送数据,TXB0CTRL.TXREQ由1变成0和/INT引脚产生中断,且CANINTF.TX0IF发送中断标志位置1。
2)成功接收数据,/INT引脚产生中断,且CANINTF.RX0IF发送中断标志位置1。
同时RX0BF引脚出现低电平(前提使能RX0BF 接收缓冲区满中断引脚,BFPCTRL.BxBFE和BFPCTRL.BxBFM 置1)2、配置RXB0使能滤波屏蔽标识符功能(11位标准标识符)1、发送两组数据帧:先发送不符合滤波码的数据帧,然后发送符合滤波码的数据帧。
科技科技视界Science &Technology Vision视界科技创新0引言CAN 控制器是一种独立控制器,用于移动目标和一般工业环境中的区域网络控制,全称为ControllerArea Network ,即控制器局域网.CAN 是国际上应用最广泛的现场总线之一,它在通信能力、可靠性、实时性、灵活性、易用性以及传输距离方面有很好的优势。
起初,CAN 主要用于解决汽车内部信号连接的问题;如今,其应用范围已扩展到了机械工业、交通工业、医疗设备、建筑、环境控制等等。
本课题使用STM32F107VC 单片机编写程序,实现CAN 总线中简单的通讯,达到双CAN 远程通信控制的目的。
1理论分析CAN 模块是一个通信控制器,其支持2.0A 与2.0B协议,同时支持的类型有标准数据帧、扩展数据帧、远成帧、出错帧、过载帧和空闲帧。
目前CAN 总线器件有两大类:一是独立的CAN 控制器,如82C200,SJA1000;另一类是带有芯片CAN 的微控制器,如P8XC582。
本课题使用独立CAN 控制器SJA1000,SJA1000有两种工作模式:基本模式和增强模式。
在基本模式下,SJA1000只可以收发标准数据帧,并且不能修改错误报警的极限值;而在增强模式下,SJA1000不仅可以接收标准数据帧,还可以接收扩展数据帧,也可以修改错误报警的极限值[1]。
为简化编程,采用CAN 的基本模式,即上电后直接使用。
通过使用软件编程、下载进而实现通讯功能。
在使用前,还需要对SJA1000收发器进行初始化,收发报文的处理以及对节点脱离总线的检测与处理等等。
同时SJA1000需要进行加电自检,通过自发自收一组报文来判断控制节点是否处于总线上。
基于SJA1000的双CAN 收发器通信实现姚宇阳黄志坚蔡鹏(苏州市职业大学电子信息工程学院,江苏苏州215021)【摘要】CAN 是控制器局域网的简称,是德国Bosch 公司为解决现在汽车中众多测量控制部件之间的数据交换问题而开发的一种数据通信总线。
基于SJA1000的高可靠CAN总线通讯智能单元设计【摘要】CAN(Controller Area Network)总线是一种现场总线,由于其具有可靠性高、抗干扰能力强和实时性强的特点,而被广泛应用于工业控制领域。
本文介绍了一种基于SJA1000的高可靠CAN总线智能单元的设计方案。
该总线智能单元可以独立或者配合AT96总线和主控制器协同工作,易于系统扩展、优化和改进,利用微处理器完成数据发送/接受和错误诊断处理,降低主控制器的信息处理负担。
测试表明,该高可靠CAN总线智能单元的设计是可行的。
【关键词】高可靠;CAN总线;智能单元ABSTRACT:CAN bus is a field bus which is widely used in industrial control field because of its advantages in high reliability,strong anti-jamming and high real-time characteristic. This paper introduces a design of high-reliability intelligent CAN communication unit base on SJA1000. The intelligent CAN unit may work independently or with the supervisor computer by AT96 bus. It is easy for system’s expansion,optimization and amelioration. The unit completes the data transferring/receiving and the error diagnosing by the microprocessor,thus decreases the load factor of the supervisor computer. Experimental results show that the design of intelligent and high-reliability CAN communication unit is effective.KEY WORDS:high-reliability;CAN bus;intelligent unit0.引言随着核动力装置仪控系统数字化水平的不断提高,仪控系统设备内部、设备之间以及设备与现场仪表之间信息交换都将采用网络通讯技术,因此网络的安全性、可靠性都对核动力仪控系统正常完成其设计功能具有非常重要的意义。
一、以下是我做的CAN节点的测试程序, 实现两个节点传送数据,程序主要分三部分SJA1000 的初始化,接收数据,发送数据./******************************************************函数原型:bit Sja_1000_Init(void)**功能:初始化SJA10000**入口参数: 无**返回值:0:初始化成功1:复位失败2: 测试sja1000失败3:设置失败4:设置验收滤波器失败5:设置波特率失败*****************************************************/unsigned char Sja_1000_Init(void){bit s;EA=0;s=BCAN_ENTER_RETMODEL();if (s==1) return 1;s=BCAN_CREATE_COMMUNATION();if (s==1) return 2;s=BCAN_SET_OUTCLK(0xc0);//Pelicanif (s==1) return 3;s=BCAN_SET_OBJECT(0xFF,0x4E,0x16,0x00,0xff,0x00,0x00,0x00);if (s==1) return 4;s=BCAN_SET_BANDRATE(CAN_BPS_1M);if (s==1) return 5;SJA_BCANAdr=REG_OCR ;*SJA_BCANAdr=0x1a;SJA_BCANAdr=REG_IER;*SJA_BCANAdr=0x03;s=BCAN_SET_CONTROL(0x08);if (s==1) return 6;EA=1;return 0;}}/*********************************************************************函数原型: bit BCAN_SET_OUTCLK( unsigned char Clock_Out) **参数说明: ** Clock_Out:存放时钟分频寄存器(CDR)的参数设置**返回值: ** 0 ;设置成功** 1 ;设置失败**说明:设置SJA1000的时钟分频。
sja1000t芯片功能原理
SJA1000T芯片是一种控制器局域网络(CAN)控制器,用于
实现CAN总线通信。
SJA1000T芯片的主要功能和原理如下:
1. 硬件通信:SJA1000T芯片通过CAN收发器与CAN总线进
行物理层通信,从而实现CAN总线上的数据传输。
2. 报文传输:SJA1000T芯片负责CAN总线上的报文传输。
它能够接收CAN总线上的报文,并将其存储在接收缓冲区中,然后根据设定的过滤和屏蔽规则,将符合条件的报文传递给主机CPU。
同时,它也能发送CAN报文,将待发送的报文存储
在发送缓冲区中,并按照CAN协议规定的优先级进行发送。
3. 错误检测和处理:SJA1000T芯片能够对发送和接收的报文
进行错误检测和处理。
它能够检测出传输过程中的位错误、帧错误、CRC错误等,然后将错误信息传递给主机CPU,由主
机CPU进行相应的处理。
4. 时间触发:SJA1000T芯片可以通过设置定时器来触发发送
报文。
这意味着它可以在指定的时间间隔内发送报文,实现定时发送功能。
总而言之,SJA1000T芯片是一种用于实现CAN总线通信的
控制器,它负责CAN总线上的报文传输、错误检测和处理,
并具备定时发送功能。
这使得它成为在汽车、工业控制等领域中广泛应用的CAN总线控制器。
基于SJA1000的CAN通信
作者:郭丹丹杨瀛陆
来源:《中国新技术新产品》2015年第08期
摘要:本文介绍了CAN总线的概念,给出了SJA1000控制器的基本功能,原理框图,描述了软件设计的流程,分为初始化、发送和接收流程,给出了上位机测试软件界面,总结SJA1000是很好的CAN通讯控制器。
关键词:CAN;SJA1000控制器;硬件设计框图
中图分类号:TN915 文献标识码:A
1 CAN总线概述
CAN总线(Controller Area Network)是众多现场通信总线的一种,它属于串行数据通讯总线。
CAN网络最大通讯距离为10km(5kbps),通讯速率可配置最高可达1Mbps(40m)。
2 SJA1000独立控制器简介
CAN总线器件有两种:一种是独立CAN控制器;另外一种是片上微控制器的总线控制器。
SJA1000CAN控制器属于独立的CAN控制器,因为它支持CAN2.0B规约,软件和硬件都兼容之前的同类型芯片PCA82C200,技术相对比较成熟,并能应用在汽车和工业环境下,因此应用的范围比较广泛。
SJA1000的主要特性为:
(1)硬件的外特性与CAN总线控制器PCA82C200兼容;(2)软件操作和使用与
PCA82C200兼容;(3)增加了扩展接收缓冲器;(4)在通信上支持CAN2.0B协议;(5)同时支持11位和29位标识符;(6)通讯速率1Mbits/s;(7)对于增强CAN模式的支持;(8)时钟频率可以支持到24MHz;(9)对于微处理器接口支持多种;(10)CAN输出配置可编程;芯片的工作温度范围-40℃~+125℃。
3 硬件设计框图
板卡集成了1片PCI9054总线接口芯片,它负责PCI总线接口的转换;1片Cyclone III系列的FPGA(EP3C25F324),它负责输出控制信号和初始化CAN控制器;4片CAN控制器(SJA1000),它负责并行数据总线到CAN总线协议的转换;4片CAN总线接口控制器(PCA82C250),它负责TTL的CAN总线信号到符合ISO 11898标准的CAN总线信号的转换;2片高速数字隔离器(ADuM1410),它实现CAN总线控制器的数字信号与CAN总线接口控制器的数字信号的隔离。
另外,板卡还集成了电平转换芯片(TXS0108EPWR)、隔离电源模块、EEPROM(93LC56)配置芯片、Flash存储器(EPCS16)、状态指示灯和JTAG/AS 下载座等。
4 软件设计
软件设计思想:
CAN通信分为两种模式:基本模式和扩展模式,扩展模式较为复杂,本文以基本模式为范例讲述CAN的通信流程。
软件从整体上分为:初始化,发送和接收三个部分。
注意一些寄存器只在PeliCAN 模式有效控制寄存器就仅在BasicCAN 模式里有效而且一些寄存器是只读的或只写的还有一些只能在复位模式中访问。
4.1 初始化。
SJA1000的初始化只有在复位模式下才可以进行。
芯片的初始化包括工作方式的设定、芯片的接收屏蔽寄存器(AMR)设置和芯片的接收代码寄存器(ACR)的设置、芯片的总线时序寄存器的设置、芯片的输出模式寄存器和芯片的中断寄存器的设置等。
初始化设置完成,需要设定SJA1000芯片进入工作模式,然后就可以进行正常的通讯。
芯片的初始化步骤如下:(1)关闭中断,进入复位模式;(2)配置接收屏蔽寄存器(AMR)和配置接收代码寄存器(ACR);(3)配置波特率;(4)输出寄存器的配置(建议选择开开漏输出);(5)配置basican模式,关闭CLKOUT输出;(6)打开数据溢出中断、错误中断、发送中断和接收中断(中断寄存器);(7)进入工作模式。
4.2 发送数据。
发送数据的流程相对简单主要是配置设备的ID,发送数据长度,然后把需要发送数据放到buffer即可,(表1为发送区列表)发送数据流程如下:(1)首先判断上次发送数据是否完成;(2)判断发送缓冲区是否锁定;(3)如果数据发送完成并且发送缓冲区没有锁定;(4)启动发送。
4.3 接收数据
(1)判断中断寄存器是否有接收中断;(2)如果有接收中断则判断状态寄存器是否有数据;(3)状态寄存器中有数据那么判断报文是否有效;(4)如果有效,那么从接收buffer中获取接收数据的长度和数据属于远程帧还是数据帧,然后开始接收数据;(5)接收数据完成清buffer,以便下次接收数据。
结语
本文以使用SJA1000作为CAN通信的控制芯片进行数据发送和接收,在基本模式下满足了通信的需要并且满足了对于CAN通信参数的设置,在效率测试中可以实现1ms周期接收数据64小时不丢包。
通过搭建的测试界面,不但大大地方便了通信的调试,而且验证了逻辑功能以及驱动和动态库的可靠性。
参考文献
[1]郭发东.P89V51RD2与SJA1000实现CAN节点实例[J].山东科学,2006.。