手把手教你制作CAN总线系列讲座
CAN总线呕心沥血教程
差,然后传到接收区。如下图
由上图可知,当有电压差,差动信号放大器放大传输,将相应的数据位任可为 0。 下面我们进入重点难点。报文 所谓报文,就是 CAN 总线上要传输的数据报,为了安全,我们要给我们传输的 数据报编码定一下协议,这样才能不容易出错,所以出现了很多的帧,以及仲 裁啊,CRC 效验。这些都是难点。 识别符的概念。 识别符顾名思义,就是为了区分不同报文的可以鉴别的好多字符位。有标准的, 和扩展的。标准的是 11 位,扩展的是 29 位。他有一个功能就是可以提供优先级, 也就是决定哪个报文优先被传输,报文标识符的值越小,报文具有越高的优先权。 CAN 的报文格式有两种,不同之处其实就是识别符长度不同,具有 11 位识别符 的帧称为标准帧,而还有 29 位识别符的帧为扩展帧,CAN 报文有以下 4 个不同 的帧类型。分别是 (1) 数据帧:数据帧将数据从发送器传输到接收器。 (2) 远程帧:总线节点发出远程帧,请求发送具有同一标识符的数据帧 (3) 错误帧:任何节点检测到总线错误就发出错误帧 (4) 过载帧:过载帧用已在先行的后续的数据帧(或远程帧)之间提供一
为了让所有的分站都同步于发送报文的发送站,好接收数据,有很多要考虑的地 方。 然后下一个场是仲裁场。这个仲裁场是个难点。但是不要怕,有我在,你会很明 白地搞定的。 这个仲裁很抽象,其实在这里就是为了解决一个问题。如果 2 个或 2 个以上的单 元同时开始传送报文,那么就会有总线访问冲突。那么仲裁机制就是用来根据标 识符优先级来一个一个的去掉低级别的数据。我们可以详细的描述这场生动的争 抢总线的战斗。 当总线处于空闲状态时呈隐性电平,此时任何节点都可以向总线发送显性电平作 为帧的开始。2 个或 2 个以上的节点同时发送开始争抢总线,但是总线只能被一个人抢走。
手把手教你设计CAN总线系列讲座(2)
手把手教你设计CAN总线系列讲座(2)—CAN总线智能节点的设计在远程测控系统中,都要通过传感器或其他测量装置获取环境或相关的输入参数,传送到处理器,经过一定的算法,做出相应的控制决策,启动执行机构对系统进行控制,基于CAN总线的测控系统将单个测控设备变成网络节点,将控制系统中所需的基本控制、运行参数修改、报警、显示和监控等功能分散到各个远程节点中。
因此总线上的节点应该具有总线通信功能和测控功能,这必然离不开微处理器。
我们把具有这类功能的节点叫智能节点。
1 CAN网络节点结构和SJA1000的应用结构图一般把每个CAN模块分成不同的功能块。
这里以分布式恒温控制节点构成的CAN图1 CAN总线控制网络结构图控制网络为例(如图1所示),分析一下基于CAN总线的分布式网络节点的结构。
CAN节点由微处理器、CAN控制器SJA1000、光耦6N137模块和CAN驱动器82C50构成。
CAN控制器SJA1000执行在CAN规范里规定的完整的CAN协议,用于报文的缓冲和验收过滤,负责与微控制器进行状态、控制和命令等信息交换;在SJA1000下层是CAN收发器PCA82C50,它为CAN控制器和总线接口,它控制从CAN控制器到总线物理层或相反的逻辑电平信号,提供对总线的差动发送和对CAN控制器的差动接收功能。
光耦6N137起隔离作用。
图2 SJA1000的结构图所有这些CAN模块都由微处理器控制,它负责执行应用的功能,负责控制执行器(比如加热设备)、读传感器(比如温度)和处理人机接口。
如图2是SJA1000的应用结构图。
在CAN规范里,CAN核心模块控制CAN帧的发送和接收。
接口管理逻辑负责连接外部微处理器,该控制器可以是单片机、DSP或其他器件。
经过SJA1000复用的地址/数据总线访问寄存器和控制读写选通信号。
SJA1000的发送缓冲器能够存储一个完整的报文(扩展的或标准的)。
当微处理器初始化发送接口管理逻辑,CAN核心模块就会从发送缓冲器读CAN报文。
CAN总线呕心沥血教程
哥很郁闷,为了CAN研究了不少,看了不少资料,现在我给大家总结一下先看看工作原理当CAN总线上的一个节点(站)发送数据时,它以报文的形式广播给网络中所有节点,对每个节点来说,无论数据是否是发给自己的,都对其接收。
每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式成为面向内容的编制方案。
同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文,当几个站同时竞争总线读取时,这种配置十分重要。
大体的工作原理我们搞清了,但是根本的协议我们还要花一番功夫。
下面介绍一个重要的名词,“显性“和”隐性“在我看到的很多文章里,有很多显性和隐性的地方,为此我头痛不已,最终我把它们彻底弄明白了。
首先CAN数据总线有两条导线,一条是黄色的,一条是绿色的。
分别是CAN_High线和CAN_Low线当静止状态时,这两条导线上的电平一样。
这个电平称为静电平。
大约为2.5伏。
这个静电平状态就是隐形状态,也称隐性电平。
也就是没有任何干扰的时候的状态称为隐性状态.当有信号修改时,CAN_High线上的电压值变高了,一般来说会升高至少1V,而CAN_Low线上的电压值会降低一个同样值,也是1v,那么这时候。
CAN_High就是2.5v+1v=3.5v,它就处于激活状态了。
而CAN_Low降为2.5v-1v=1.5v。
可以看看这个图由此我们得到在隐性状态下,CAN_High线与CAN_Low没有电压差,这样我们看到没有任何变化也就检测不到信号。
但是在显性状态时,改值最低为2V,我们就可以利用这种变化才传输数据了。
所以出现了那些帧,那些帧中的场,那些场中的位,云云~~~~~~~~~~~在总线上通常逻辑1表示隐性。
而0表示显性。
这些1啊,0啊,就可以利用起来为我们传数据了。
利用这种电压差,我们可以接收信号。
一般来说,控制单元通过收发器连接到CAN驱动总线上,这个收发器(顾名思义,可发送,可接收)内有一个接收器,该接收器是安装在接收一侧的差动信号放大器。
CAN总线呕心沥血教程
C A N总线呕心沥血教程-CAL-FENGHAI.-(YICAI)-Company One1哥很郁闷,为了CAN研究了不少,看了不少资料,现在我给大家总结一下先看看工作原理当CAN总线上的一个节点(站)发送数据时,它以报文的形式广播给网络中所有节点,对每个节点来说,无论数据是否是发给自己的,都对其接收。
每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式成为面向内容的编制方案。
同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文,当几个站同时竞争总线读取时,这种配置十分重要。
大体的工作原理我们搞清了,但是根本的协议我们还要花一番功夫。
下面介绍一个重要的名词,“显性“和”隐性“在我看到的很多文章里,有很多显性和隐性的地方,为此我头痛不已,最终我把它们彻底弄明白了。
首先CAN数据总线有两条导线,一条是黄色的,一条是绿色的。
分别是CAN_High线和CAN_Low线当静止状态时,这两条导线上的电平一样。
这个电平称为静电平。
大约为伏。
这个静电平状态就是隐形状态,也称隐性电平。
也就是没有任何干扰的时候的状态称为隐性状态.当有信号修改时,CAN_High线上的电压值变高了,一般来说会升高至少1V,而CAN_Low线上的电压值会降低一个同样值,也是1v,那么这时候。
CAN_High就是+1v=,它就处于激活状态了。
而CAN_Low降为=。
可以看看这个图由此我们得到在隐性状态下,CAN_High线与CAN_Low没有电压差,这样我们看到没有任何变化也就检测不到信号。
但是在显性状态时,电压差最低为2V,我们就可以利用这种变化才传输数据了。
所以出现了那些帧,那些帧中的场,那些场中的位,云云~~~~~~~~~~~在总线上通常逻辑1表示隐性。
而0表示显性。
这些1啊,0啊,就可以利用起来为我们传数据了。
利用这种电压差,我们可以接收信号。
一般来说,控制单元通过收发器连接到CAN驱动总线上,这个收发器(顾名思义,可发送,可接收)内有一个接收器,该接收器是安装在接收一侧的差动信号放大器。
汽车级CAN总线详细教程看过了很好教学课件
CAN总线错误处理与故障界定
错误类型与检测:列举CAN 总线中可能出现的位错误、 填充错误、CRC错误、格式 错误和应答错误等,并解释 其检测原理。
错误处理机制:阐述CAN总 线的错误处理机制,包括错 误标志的设置、错误界限的 确定、错误帧的发送等。
故障界定与诊断:介绍如何 通过CAN总线的错误处理机 制,界定故障节点和故障类 型,以及相应的故障诊断方 法。
线通信错误案例,解释干扰的来源和影响,提供针对性的解决方案。
03
案例三
软件配置错误引发的CAN总线故障:分享一个由于软件配置错误导致的
CAN总线故障案例,强调正确配置软件参数的重要性,并给出修复方法。
总结与展望
汽车级CAN总线教程总结
本教程详细介绍了汽车级CAN 总线的原理、架构、通信协议和
应用等方面的知识。
软件配置故障
分析由于软件配置错误导致的CAN总线故障,如波特率设置错误、 节点地址冲突等,并给出相应的排查和修复建议。
实际应用中的CAN总线故障案例分析
01
案例一
某车型CAN总线通信中断故障:详细描述某车型CAN总线通信中断的
故障现象,分析故障原因,并给出具体的排查和修复步骤。
02
案例二
CAN总线信号干扰导致的通信错误:介绍由于信号干扰导致的CAN总
设计方案和电路图。
01
03
02 04
软件实现
阐述门窗控制系统的软件设计, 包括CAN总线通信、控制算法、 防夹手功能实现等,给出相应的 软件流程和代码片段。
系统测试与验证
展示门窗控制系统的测试环境和 测试结果,验证系统的可靠性、 实时性和准确性。
基于CAN总线的车身控制系统设计
车身控制需求分析
CAN总线系列讲座第三讲CAN控制器和收发器
CAN总线系列讲座第三讲——CAN控制器和收发器一 CAN控制器官方定义:CAN控制器用于将欲收发的信息(报文),转换为符合CAN规范的CAN帧,通过CAN收发器,在CAN-bus上交换信息。
举个便于理解的例子:就像您发快递一样,要根据快递公司提供的快递单填写具体的信息(发件人和收件人的地址、联系电话等),快递公司将之标准化(统一的快递单格式,并对每一件快递进行编号),随后才能传递信息(您快递的具体东西,如文件、衣服、手机等)。
(1)CAN控制器分类CAN控制器芯片分为两类:一类是独立的控制器芯片,如SJA1000;另一类是和微控制器做在一起,如NXP半导体公司的Cortex-M0内核LPC11Cxx系列微控制器、LPC2000系列32位ARM微控制器。
CAN控制器的大致分类及相应的产品可参见表1。
表1 CAN控制器分类及相应产品型号(2)CAN控制器的工作原理为了便于读者理解CAN控制器的工作原理,下面给出了一个SJA1000 CAN控制器的经过简化的结构框图如图1所示。
图1 CAN控制器结构示意接口管理逻辑接口管理逻辑如图1所示。
接口管理逻辑用于连接外部主控制器,解释来自主控制器的命令,控制CAN控制器寄存器的寻址,并向主控制器提供中断信息和状态信息。
CAN核心模块CAN核心模块如图1所示。
收到一个报文时,CAN核心模块根据CAN规范将串行位流转换成用于接收的并行数据,发送一个报文时则相反。
发送缓冲器发送缓冲器如图1所示。
发送缓冲器用于存储一个完整的报文,当CAN控制器发送初始化时,接口管理逻辑会使CAN核心模块从发送缓冲器读CAN报文。
验收滤波器验收滤波器如图1所示,验收滤波器可以根据用户的编程设置,过滤掉无须接收的报文。
接收FIFO接收FIFO如图1所示。
接收FIFO是验收滤波器和主控制器之间的接口,用于存储从CAN 总线上接收的所有报文。
工作模式CAN控制器可以有两种工作模式(BasicCAN和PeliCAN)。
汽车CAN总线详细教程课件
刹车系统的刹车力度、刹车踏板位置等信息 也可以通过CAN总线传输到制动控制单元, 以提高制动效果。
CAN总线的优势
节省线束
由于CAN总线是数字通讯,所以它能够将多个控制单 元连接在一起,减少了许多线束的使用。
高效通讯
CAN总线的通讯速率高,可以在短时间内传输大量的 数据。
稳定性好
CAN总线具有很高的抗干扰能力,并且具有自我检测 和修复功能,所以它的稳定性非常好。
分析CAN总线数据
对监测到的数据进行深入分析,包括 数据类型、字节顺序、校验和等,确 保数据的正确性和可靠性。
使用示波器进行调试和测试
连接示波器
调整示波器设置
将示波器与汽车CAN总线相连接,选择合 适的通道和触发条件。
根据CAN总线的波特率和数据格式,调整 示波器的采样速率、时基等参数。
观察信号波形
汽车底盘控制模块应用实例
总结词
汽车底盘控制模块是CAN总线在汽车上的另一个应用 ,用于实现底盘的智能化控制和监测。
详细描述
CAN总线在底盘控制模块中,主要负责传输底盘传感 器数据和控制指令,包括刹车状态、转向角度、悬挂 高度等,以及ECU对底盘的控制指令,如ABS防抱死 系统、ESP电子稳定系统等。通过CAN总线,底盘控 制模块可以实时与其他控制模块进行通信,实现底盘 的智能化控制和监测。
VS
错误恢复
当错误检测机制检测到错误时,CAN总 线采取以下措施进行错误恢复:发送错误 标志:发送节点在检测到错误时立即在总 线上发送一个错误标志,以通知其他节点 发生了错误。接收节点在接收到错误标志 后,将接收到的数据丢弃并向发送节点发 送一个否定应答。
03
汽车CAN总线协议分析
CAN协议标准及版本
手把手教你制作CAN总线系列讲座
手把手教你设计CAN总线系列讲座(1)—CAN实验设备和器材准备一.CAN实验设备和器材使用简介1. CAN总线简介(1)什么是CAN总线CAN(Controller Area Network,控制器局域网)是一种高性能、高可靠性、易开发和低成本的现场总线,在全球得到广泛应用,也是最早在我国应用的现场总线之一。
CAN 是20世纪80年代(1983)德国Bosch(博世)公司为解决众多的测量控制部件之间的数据交换问题而开发的一种串行数据通信总线。
最初,CAN作为汽车的监测、控制系统而设计,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。
比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。
现在,由于CAN总线自身的特点,其应用领域已由汽车行业扩展到过程工业、机械工业、机器人和楼宇自动化等领域。
(2) CAN总线特点CAN与其他现场总线相比,具有突出的可靠性、实时性和灵活性,其技术特点如下:●CAN从本质上讲是一种多主或对等网络,网络上任一节点均可主动发送报文,不分主从,通信方式灵活。
●废除了传统的站地址编码,而代之以对通信数据进行编码;通过报文过滤,可实现点对点、多点播送(传送)、广播等几种数据传送方式。
●采用短帧结构,传输时间短,受干扰概率低,具有极好的检错效果。
CAN 的每帧信息都有CRC及其他检错措施,降低了数据出错概率。
●具有多种检错措施及相应的处理功能,检错效果极好,处理功能很强,保证了通信的高可靠性。
位错误和位填充错误检测、CRC校验、报文格式检查和应答错误检测及相应的错误处理。
●通信介质(媒体)可为双绞线、同轴电缆或光纤,选择灵活。
●总线长度可达10km(速率为5kbps及其以下);网络速度可达1Mbps(总线长度为40m及其以下)。
●网络上的节点数主要取决于总线驱动电路,目前可达110个;标准格式的报文标识符可达2032个,而扩展格式的报文标识符的个数几乎不受限制●通过报文标识符来定义节点报文的优先级。
CAN总线系列讲座第七讲——CAN总线地址设置详解
CAN总线系列讲座第七讲——CAN总线地址设置详解在CAN总线通讯程序中,发送子程序中需要设置“目的CAN节点地址”。
例如描述符的前两个字节为:send_data[0]=0xAA;send_data[1]=0x08; //填写发送can数据帧的描述符表示向地址为550的CAN节点发送8个字节的数据。
CAN转232串口程序中的SJA1000初始化程序中需要设置“自己的CAN节点地址”,也是允许接收其他通讯节点发送过来的CAN总线数据信息。
例如:if(set_ACR_AMR(0xaa,0x00)) //设置自己的地址ID:550相互通讯的两个CAN节点之间的地址必须对应,否则通讯不成功。
Basican和Pelican两种协议CAN地址的设置方法不同,下面具体进行介绍。
1、Basican的id设置方法:由ACR和AMR两个8位寄存器决定:ACR:ID10ID9ID8 ID7 ID6 ID5ID4ID3 ID2ID1ID0二进制: 1 0 1 0 1 0 1 0十六进制:0xaaHAMR:0 0 0 0 0 0 0 0十六进制:0x00H最后三位“ID2ID1ID0”跟ACR无关。
AMR对应ACR各位,AMR位为“0”,表示can 接收滤波器接收数据时,地址必须和ACR各位设置的数字相等。
AMR位为“1”,则表明滤波器设置无效。
但是,计算CAN的id地址的时候,需要把“ID2 ID1 ID0”这3个跟ACR无关的位计算在内,例如:ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3 ID2 ID1 ID01 0 1 0 1 0 1 0 0 0 0 CAN地址为:5501 0 1 0 1 0 1 0 1 1 1 CAN地址为:557根据后三位的不同值,有不同的id地址。
2、Pelican的id设置方法:Can的id设置由ACR0~ ACR3和AMR0~ AMR3八个寄存器设置决定,AMR的功能和Basican 的id设置方法中介绍的相同,下面着重介绍ACR0~ ACR3的设置。
CAN总线呕心沥血教程
哥很郁闷,为了CAN研究了不少,看了不少资料,现在我给大家总结一下先看看工作原理当CAN总线上的一个节点(站)发送数据时,它以报文的形式广播给网络中所有节点,对每个节点来说,无论数据是否是发给自己的,都对其接收。
每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式成为面向内容的编制方案。
同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文,当几个站同时竞争总线读取时,这种配置十分重要。
大体的工作原理我们搞清了,但是根本的协议我们还要花一番功夫。
下面介绍一个重要的名词,“显性“和”隐性“在我看到的很多文章里,有很多显性和隐性的地方,为此我头痛不已,最终我把它们彻底弄明白了。
首先CAN数据总线有两条导线,一条是黄色的,一条是绿色的。
分别是CAN_High线和CAN_Low线当静止状态时,这两条导线上的电平一样。
这个电平称为静电平。
大约为2.5伏。
这个静电平状态就是隐形状态,也称隐性电平。
也就是没有任何干扰的时候的状态称为隐性状态.当有信号修改时,CAN_High线上的电压值变高了,一般来说会升高至少1V,而CAN_Low线上的电压值会降低一个同样值,也是1v,那么这时候。
CAN_High就是2.5v+1v=3.5v,它就处于激活状态了。
而CAN_Low降为2.5v-1v=1.5v。
可以看看这个图由此我们得到在隐性状态下,CAN_High线与CAN_Low没有电压差,这样我们看到没有任何变化也就检测不到信号。
但是在显性状态时,改值最低为2V,我们就可以利用这种变化才传输数据了。
所以出现了那些帧,那些帧中的场,那些场中的位,云云~~~~~~~~~~~在总线上通常逻辑1表示隐性。
而0表示显性。
这些1啊,0啊,就可以利用起来为我们传数据了。
利用这种电压差,我们可以接收信号。
一般来说,控制单元通过收发器连接到CAN驱动总线上,这个收发器(顾名思义,可发送,可接收)内有一个接收器,该接收器是安装在接收一侧的差动信号放大器。
《CAN总线培训讲义》课件
5. CAN总线的工作原理
CAN总线通过差分信号传输数据,使用CSMA/CD(载波监听多点接入/冲突检测)协议来实现节点之间 的通信。 每个节点都可以发送和接收数据帧,通过仲裁和优先级来决定哪个节点有权发送数据。
6. CAN总线的数据传输方式
1
帧扩展(Extended Frame)
用于传输较长的数据,采用29位标识符。
2 带宽
CAN总线的带宽可以根据需要进行分配,可同时传输多个节点的数据。
8. CAN总线的消息格式和帧结 构
CAN总线数据帧包括了标识符(ID)、数据长度码(DLC)、数据域 (Data)、CRC(循环冗余检测)和其他控制字段。
它们的组合形成了具有特定结构的消息格式,用于传输各种类型的数据。
2. CAN总线的起源和历史
CAN总线最早由德国汽车制造商Bosch于1983年开发,并于1986年发布。它起初用于汽车领域,作为 一种车载网络通信协议。 随着时间的推移,CAN总线逐渐被广泛应用于其他领域,成为一种通用的数据总线协议。
3. CAN总线的应用场景和优势
汽车行业
CAN总线在汽车电子系统 中实现快速、可靠的车辆 内部通信,包括引擎管理、 驱动控制me)
用于传输较短的数据,采用11位标识符。
3
远程帧(Remote Frame)
用于请求数据,不包含实际数据内容。
7. CAN总线的通信速率和带宽
1 通信速率
CAN总线支持不同的通信速率,最常用的是100 kbps、250 kbps、500 kbps和1 Mbps。
工业自动化
在工业领域,CAN总线用 于控制系统、仪器仪表以 及机器人等设备之间的高 效通信。
航空航天
满足航空航天领域对实时 性、可靠性和安全性的高 要求,用于飞行控制、通 信和导航等关键系统。
CAN总线系列讲座第六讲 ——SJA1000的滤波器设置
CAN总线系列讲座第六讲——SJA1000的滤波器设置CAN总线的滤波器设置就像给总线上的节点设置了一层过滤网,只有符合要求的CAN信息帧才可以通过,其余的一概滤除。
在验收滤波器的帮助下,只有当接收信息中的识别位和验收滤波器预定义的值相等时,CAN 控制器才允许将已接收信息存入RXFIFO。
验收滤波器由验收代码寄存器(ACRn)和验收屏蔽寄存器AMRn 定义,要接收的信息的位模式在验收代码寄存器中定义,相应的验收屏蔽寄存器允许定义某些位为“不影响”,即可为任意值。
1、BasicCAN模式下SJA1000滤波器在验收滤波器的帮助下CAN 控制器能够允许RXFIFO 只接收同识别码和验收滤波器中预设值相一致的信息,验收滤波器通过验收代码寄存器ACR和验收屏蔽寄存器AMR来定义。
表2-1验收代码寄存器ACR复位请求位被置高,验收代码寄存器ACR可以访问(读/写)。
表2-2验收屏蔽寄存器AMR复位请求位被置高,验收屏蔽寄存器AMR可以访问(读/写)。
验收屏蔽寄存器定义验收代码寄存器的相应位对验收滤波器是“相关的”或“无影响的”。
滤波的规则是:每一位验收屏蔽分别对应每一位验收代码,当该位验收屏蔽位为“1”的时候(即设为无关),接收的相应帧ID位无论是否和相应的验收代码位相同均会表示为接收;当验收屏蔽位为“0”的时候(即设为相关),只有相应的帧ID位和相应的验收代码位值相同的情况才会表示为接收。
只有在所有的位都表示为接收的时候,CAN控制器才会接收该报文。
举例:如何设置滤波器,接收标识符为0000 1010的CAN帧?在SJA1000复位模式下,设置寄存器CDR.7为“0”,即设置CAN控制器SJA1000工作于BasicCAN模式。
设置验收代码寄存器ACR0=0x0A;根据滤波器信息帧与滤波器的位对应关系,将需要参与滤波的信息位对应的验收屏蔽寄存器位设置为0,设置AMR=0x00;如此设置,SJA1000接收标识符ID.10~ID.3为0000 1010的CAN帧。
CAN总线系列讲座第五讲——CAN总线硬件电路设计
CAN总线系列讲座第五讲——CAN总线硬件电路设计一实战学习背景CAN总线节点的硬件构成方案有两种,其中的方案:(1)、MCU控制器+独立CAN控制器+CAN收发器。
独立CAN控制器如SJA10000、MCP2515,其中MCP2515通过SPI总线和MCU连接,SJA1000通过数据总线和MCU连接。
该方案编写的CAN程序是针对独立CAN控制器的,程序可移植性好,编写好的程序可以方便的移植到任意的MCU。
但是,由于采用了独立的CAN控制器,占用了MCU的I/O资源,并且电路变得复杂。
为了增强针对性,选择”51系列单片机+SJA1000”的CAN总线节点的硬件构成方案,做入门介绍.二51系列单片机CAN总线学习板硬件电路设计51系列单片机CAN总线学习板采用STC89C52RC作为节点的微处理器。
在 CAN 总线通信接口中采用PHILIPS 公司的“独立CAN总线通信控制器SJA1000”和“高性能CAN总线收发器TJA1040”芯片。
图1为51系列单片机CAN总线学习板硬件电路原理图。
从图中可以看出,电路主要由七部分构成:微控制器STC89C52RC、独立 CAN 通信控制器 SJA1000、CAN 总线收发器TJA1040、DC/DC电源隔离模块、高速光电耦合器 6N137、串口芯片MAX232电路、按键及LED灯显示电路。
STC89C52RC初始化SJA1000后,通过控制 SJA1000 实现数据的接收和发送等通信任务。
SJA1000 的 AD0~AD7 连接到STC89C52RC的 P0 口,其CS引脚连接到STC89C52RC的 P2.7,P2.7为低电平“0”时,单片机可选中SJA1000,单片机通过地址可控制SJA1000执行相应的读写操作。
SJA1000 的 RD、 WR、 ALE 分别与STC89C52RC的对应引脚相连。
SJA1000 的INT引脚接STC89C52RC的 INT0,STC89C52RC可通过中断方式访问SJA1000。
CAN总线系列讲座第六讲 SJA1000的滤波器设置
CAN总线系列讲座第六讲 SJA1000的滤波器设置can总线系列讲座第六讲-sja1000的滤波器设置can总线系列讲座第六讲――sja1000的滤波器设置can总线的滤波器设置就像是给总线上的节点设置了一层过滤网,只有符合要求的can信息帧才可以通过,其余的一概滤掉。
在验收滤波器的帮助下,只有当接收信息中的识别位和验收滤波器预定义的值相等时,can控制器才允许将已接收信息存入rxfifo。
环评滤波器由环评代码寄存器(acrn)和环评屏蔽寄存器amrn定义,必须发送的信息的位模式在环评代码寄存器中定义,适当的环评屏蔽寄存器容许定义某些十六位“不影响”,即可为任一值。
1、basiccan模式下sja1000滤波器在环评滤波器的协助之下can控制器能容许rxfifo只发送同识别码和环评滤波器中预设值相一致的信息,环评滤波器通过环评代码寄存器acr和环评屏蔽寄存器amr去定义。
表2-1bit7ac.7bit6ac.6bit5ac.5bit4ac.4环评代码寄存器acrbit3ac.3bit2ac.2bit1ac.1bit0ac.0登位命令位被置高,环评代码寄存器acr可以出访(念/写下)。
表2-2bit7am.7bit6am.6bit5am.5bit4am.4环评屏蔽寄存器amrbit3am.3bit2am.2bit1am.1bit0am.0登位命令位被置高,环评屏蔽寄存器amr可以出访(念/写下)。
环评屏蔽寄存器定义环评代码寄存器的适当智造环评滤波器就是“有关的”或“并无影响的”。
滤波的规则是:每一位验收屏蔽分别对应每一位验收代码,当该位验收屏蔽位为“1”的时候(即设为无关),接收的相应帧id位无论是否和相应的验收代码位相同均会表示为接收;当验收屏蔽位为“0”的时候(即设为相关),只有相应的帧id位和相应的验收代码位值相同的情况才会表示为接收。
只有在所有的位都表示为接收的时候,can控制器才会接收该报文。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
手把手教你设计CAN总线系列讲座(1)—CAN实验设备和器材准备一.CAN实验设备和器材使用简介1. CAN总线简介(1)什么是CAN总线CAN(Controller Area Network,控制器局域网)是一种高性能、高可靠性、易开发和低成本的现场总线,在全球得到广泛应用,也是最早在我国应用的现场总线之一。
CAN 是20世纪80年代(1983)德国Bosch(博世)公司为解决众多的测量控制部件之间的数据交换问题而开发的一种串行数据通信总线。
最初,CAN作为汽车的监测、控制系统而设计,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。
比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。
现在,由于CAN总线自身的特点,其应用领域已由汽车行业扩展到过程工业、机械工业、机器人和楼宇自动化等领域。
(2) CAN总线特点CAN与其他现场总线相比,具有突出的可靠性、实时性和灵活性,其技术特点如下:●CAN从本质上讲是一种多主或对等网络,网络上任一节点均可主动发送报文,不分主从,通信方式灵活。
●废除了传统的站地址编码,而代之以对通信数据进行编码;通过报文过滤,可实现点对点、多点播送(传送)、广播等几种数据传送方式。
●采用短帧结构,传输时间短,受干扰概率低,具有极好的检错效果。
CAN 的每帧信息都有CRC及其他检错措施,降低了数据出错概率。
●具有多种检错措施及相应的处理功能,检错效果极好,处理功能很强,保证了通信的高可靠性。
位错误和位填充错误检测、CRC校验、报文格式检查和应答错误检测及相应的错误处理。
●通信介质(媒体)可为双绞线、同轴电缆或光纤,选择灵活。
●总线长度可达10km(速率为5kbps及其以下);网络速度可达1Mbps(总线长度为40m及其以下)。
●网络上的节点数主要取决于总线驱动电路,目前可达110个;标准格式的报文标识符可达2032个,而扩展格式的报文标识符的个数几乎不受限制●通过报文标识符来定义节点报文的优先级。
对于实时性要求不同的节点报文,可定义不同级别的优先级,从而保证高优先级的节点报文得到优先发送。
●采用非破坏性逐位仲裁机制来解决总线访问冲突。
通过采用这种机制,当多个节点同时向总线发送信息时,优先级较低的节点会主动地退出发送,而最高优先级的节点可不受影响地继续传输数据,从而大大节省了总线冲突仲裁时间。
即使在网络负载很重时,也不会出现网络瘫痪现象。
●发生严重错误的节点具有自动关闭输出的功能,以使总线上其他节点的通信能够继续进行。
(3)CAN总线与RS-485总线比较RS-485是一种半双工、全双工异步通信总线,是为弥补RS-232通信距离短、速率低等缺点而产生的。
RS-485只规定了平衡驱动器和接收器的电气特性,而没有规定接插件、传输电缆和应用层通信协议,因而在当时看来是一种相对经济、具有相当高噪声抑制、相对高的传输速率、传输距离远和宽共模范围的平台。
RS-485总线上只能有一个主机,往往应用在集中控制枢纽与分散控制单元之间。
但是,CAN-bus是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率、高抗电磁干扰性而且能够检测出产生的任何错误。
CAN- bus总线在通信能力可靠性、实时性、灵活性、易用性、传输距离远、成本低等方面有着明显的优势,成为业界最有前途的现场总线之一。
RS-485与CAN总线性能比较如下:●CAN控制器工作于多主方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁方式竞争向总线发送数据,且CAN 协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信统的实时性、可靠性较差。
●CAN总线通过CAN控制器接口芯片82C250的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL 端只能是低电平或悬浮状态。
这就保证不会出现象在RS-485网络中,当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。
而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于“死锁”状态。
●CAN具有完善的通信协议,可由CAN控制器芯片及其接口芯片来实现,从而大大降低了系统的开发难度,缩短了开发周期,这些是只有电气协议的RS-485所无法比拟的。
2.学习CAN总线的知识准备CAN总线技术包含了数据通信、计算机网络、微处理器和软件设计等多方面知识,在学习CAN 总线技术之前,读者应该掌握和了解相关的知识。
(1)掌握模拟电路和数字电路基础知识模拟电路和数字电路是电子技术相关专业的基础知识,要掌握半导体器件和运算放大器的应用及性质;掌握门电路、数字系统的电平和逻辑电路等知识;并具有一定的动手实践能力。
(2)掌握微处理器的结构、原理及编程技术CAN总线的智能节点都有微处理器,这本书是基于MCS-51系列单片机的CAN总线智能节点设计,因此,读者要熟练掌握51系列单片机的结构、原理和程序设计。
(3) C51语言编程技术。
C语言简洁、紧凑,使用方便、灵活,C语言生成的目标代码质量高,程序执行效率高,可移植性好。
因此,本书主要采用以KEIL编译器的MCS-51单片机C语言程序设计。
(4)数据通信的概念和工业控制网络基础知识CAN总线是数据通信的一种方式,读者要掌握CAN总线就必须了解数据通信的基本概念和基础知识。
CAN总线网络属于工业控制网络,因此读者还要熟悉工业控制网络相关基础知识和计算机网络基础知识。
3. CAN总线实验的器材和工具初次学习CAN总线的读者必须用到的实验工具和器材如下:(1)一台PC机并安装KeilC51Windows集成开发环境如上图。
(2)串口下载软件stc -isp -v4.79-not -setup.EXESTC89 系列单片机大部分具有在系统可编程(In-System Programming ,简称ISP )特性,单片机在用户系统上即可下载/ 烧录用户程序,加快了程序调试速度。
大部分STC89 系列单片机销售给用户之前已在单片机内部固化有ISP 系统引导程序,配合使用PC 端的控制程序即可将用户的程序代码下载至单片机内部,故无需编程器,仅利用串口就可以完成在线烧写程序,非常方便,因为一般开发一个单片机系统都会开发一个串口,以备将来扩展之用,所以串口既可以完成232通信又可以进行ISP 在线烧写,是很方便的。
(3)CPU 和CAN 总线模块实验板图3 STC 系统单片机在线编程电路CPU和CAN实验板包括CPU模块、CAN模块、电源电路和串行下载电路组成。
CPU和CAN实验板1. STC STC89C52模块这里的用户板采用STC STC89C52最小应用系统,包括复位电路和晶振部分。
如下图所示。
复位电路的作用就是初始化芯片,让芯片从新开始工作,具体表现就是,一旦复位,单片机就从程序ROM中起始位置开始读程序代码,一般是如发生死机或是程序跑飞,就得重新复位。
我们采用自动复位+手动复位的方式,系统上电,自动复位,复位采用简单的阻容方式,由C1和R2来完成。
手动复位就是通过SW-PB按键来进行。
晶振部分,确切的说应该叫晶体,配合2个30p的电容C2、C3连同单片机内部振荡电路实现振荡,产生电脉冲为单片机提供时钟信号。
考虑到单片机的串口通信部分,这里选择晶振11.0592M。
R11和C8构成简单的滤波电路,对单片机P1.7输出的PWM信号滤波成平滑的直流电压信号,实际就是简单的数模转换电路。
J4、J5、J6三个输出接插针分别和单片机的P1口、P2口和P3口连接,供用户根据需要连接相应电路,这样设计会给初学者更灵活的设计空间。
2.CAN 控制器和驱动器模块CAN 控制器采用最常用的SJA1000,CAN 驱动器采用PCA82C250,具体连接电路见图所示。
SJA1000是一种独立的CAN 控制器,主要用于移动目标和一般工业环境中的区域网络控制。
它是Philips 公司PCA82C200控制器的替代产品,除了PCA82C200的BasicCAN 操作模式以外,还增加了一种新的操作模式——PeliCAN ,这种模式支持具有很多新特性的CAN2.0B 协议。
PCA82C250是CAN 控制器和物理总线之间的接口,提供向总线的差动发送能力和对CAN 控制器的差动接收能力,它与ISO11898标准完全兼容。
SJA1000有两路发送和接收管脚,CAN 总线实验板使用了第0路。
通讯状态指示灯,便于调试。
SJA1000的最高时钟可达24M ,用户实验板使用的是16M 的晶振。
CANH 和CANL 管脚增加电容滤波电路,滤除总线上的干扰,提高系统稳定性。
CANCSR210KC122u F/16VR1120CANRST Y111.0592M C330PC230P RXD TXD CANINT1T2/P1.01T2EX/P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST9RxD/P3.010TxD/P3.111INT0/P3.212INT1/P3.313T0/P3.414T1/P3.515WR/P3.616RD/P3.717XTAL218XTAL119VSS 20P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P2.7/A1528PSEN 29ALE 30EA/VPP31P0.7/AD732P0.6/AD633P0.5/AD534P0.4/AD435P0.3/AD336P0.2/AD237P0.1/AD138P0.0/AD039VCC 40U1AD0AD1AD2AD3AD4AD5AD6AD7ALEVCC VCC GND RD WR 12345678PR1CON9P24P25P26P27D11N 4148S1SW-PBT0T1INT0P21P22P2112345678J4CON812345678J5CON812345678J6CON8P10P10P11P11P12P14P14P15P15P16P16P17P17CANCSP12P13P13P27RXDTXDCANINT1T1RDT0INT0WRP21P22CANRSTP24P24P26C8100pFR111K P1712J7CPU 核心模块电路图六章。
用户实验板采用的是斜率模式,这种模式速度较低,通讯线可以是普通的双绞线,方便学习。
4 LED 显示模块、键盘输入输出模块实验板键盘和显示实验板整体电路图如图4-15所示。