📄 帮助.txt
字号:
==============================================================================================
※帮助文件
==============================================================================================
※CAN总线的互连结构是根据国际标准化组织的OSI参考模型制定的。
OSI参考模型最早是为通信技术而开发的,是一种开放的7层网络协议。
与OSI七层参考模型略有不同的是,CAN总线只使用其中的物理层、链路层
和应用层。这是因为OSI参考模型的其他层次只有在网络互连时才会用到,
而现场网络无需与其他网络互连。所以现场总线是一种开放式实时系统,
他具有简化的网络结构,而与OSI不完全保持一致。
其中,链路的功能包括寻找被发送的报文,以及提供与硬件有关的应用
层接口,主要功能是传送规则,亦即控制帧结构、执行仲裁、错误检测、
出错标定和故障界定。位定时特性也作为链路层的一部分。物理层的范围
是有关全部电气特性不同的节点间位的实际传送。这种网络结构具有结构
简单、执行协议直观、价格低廉等优点,同时性能也令人满意。
==============================================================================================
※CAN总线的通信协议
CAN系统中,数据在节点间接收和发送是以4种不同类型的帧出现和控制的,
其中:数据帧将数据由发送器传至接收器;远程帧由节点发送,以请求发
送具有相同标识的数据帧;出错帧可由任何节点发送,以检测总线错误,
而超载帧用于提供先前和后续数据帧或远程帧之间的附加延时。另外,数
据帧和远程帧以帧间空间同先前帧隔开。
/////////////////////////////////////////////////////////
(1)数据帧
一个数据帧由7个不同位场构成,他们是:帧起始(SOF-Start Of Frame)、
仲裁场、控制场(2 b保留位+DLC场)、数据场、CRC场、ACK场和帧结束
(EOF-End Of Frame)。如图3所示。
(*)帧起始(SOF)标志数据帧和远程帧的起始,他由单个“显性”
位构成。只有当总线空闲状态时,才允许节点开始发送,所有节点必须同
步于首先开始发送节点帧起始引起的上升沿。
(*)仲裁场由11 b标识符(ID)和RTR(Remote26Transmission Request)
位构成。11 bID可形成2 048种信息目标(CAN2.0A标准),而且ID值越小,
信息优先级越高。在数据帧中,RTR位数值为“0”,表明数据帧优先于远程帧。
(*)控制场由6 b构成,包括2 b用于未来DLC扩展的保留位。接收器接收“0”和
“1”位作为所有组合中的保留位。在定义保留位功能前,发送器只送“0”位。
(*)数据场由数据帧内被发送数据组成,他包括0~8 B,每个字节包括8 b。
(*)CRC场包括15 b CRC序列和1 b CRC界定符。用于帧校验的CRC序列由特别适用
于位数小于127 b帧的循环冗余码校验(BCH码)驱动。为实现CRC计算,被除的多项式被
定义为这样一个多项式,其系数由帧起始、仲裁
场、控制场、数据场(如果存在)和15 b最低系数为0组成的解除填充的位流给定。
(*)ACK场为2 b:ACK隙和ACK界定符。发送节点的ACK场中,送出2个“隐性”位。
在ACK隙内,所有接收到匹配CRC序列的节点,以“显性”位改写发送器的“隐性”位,
因此,ACK隙被2个“隐性”位(ACK界定符和CRC界定符)所包围。
(*)帧结束:每个数据帧和远程帧均由7个“隐性”位构成的标志序列界定。
/////////////////////////////////////////////////////////
(2)远程帧
激活数据接收器的节点可以通过发送一个远程帧启动源节点发送各自的数据。一个远程帧
由6个不同位场构成:帧起始(SOF)、仲裁场、控制场.(2 b保留位+DLC场)、CRC场、
ACK场和帧结束(EOF)。如图4所示。
除远程帧中RTR位为“1”外,其余位场与数据帧的相应位场相同。
////////////////////////////////////////////////////////
(3)出错帧
////////////////////////////////////////////////////////
出错帧由出错标志和出错界定符2个场组成。错误帧监测CAN控制器的出错状态及出错类型,
做为检测出错条件的信号。
////////////////////////////////////////////////////////
(4)超载帧
超载帧由超载标志和超载界定符组成。当接收器线路在接收下一个帧前需要更多的时间处
理当前数 据,亦即接收器未准备好,或在间歇场期间检测出显性位时将发送超载帧。
==============================================================================================
※硬件简介
硬件主要包括串口线和实验板。
实验板的电路和芯片从逻辑上划分,可以分为:CAN-232智能转换器(简称转换器),
和智能CAN节点,简称CAN节点。这两个逻辑电路都使用了独立CAN控制器——SJA1000。
SJA1000芯片模式为Intel模式,其引脚的电气特性都符合Intel类芯片的规范。
SJA1000支持两种CAN报文标准:基于CAN2.0A标准的BaseCAN模式,和基于CAN2.0B标准的PeliCAN模式.
实验1、2、3中所使用的都是PeliCAN模式,帧格式为扩展帧,帧类型为数据帧。帧标识符ID的长度
为29位。
==============================================================================================
※软件简介
“CAN实验”软件主要由VB6.0编写而成,其中使用了关键的控件“MSCOMM”。软件主要的
内容包括这么几个方面:主界面、参数读写、流量分析、外设控制等。与软件相对应的是在
电路板上的单片机程序,单片机程序内容包括CAN收发、SJA1000寄存器读写、外设控制等方
面的内容。单片机程序由制作者编写好并成功烧写在各单片机中。因此,使用者在的主要操
作是使用鼠标及键盘来控制实验板上的各个部件。
实验操作简单,但前提是必须对CAN总线的基础知识有所了解,并熟悉SJA1000的寄存器。
==============================================================================================
※错误及错误处理
"CAN实验"软件与实验板一起作为整套实验装置."CAN实验"软件由VB6.0编写而成,该软件经过多次测试,
证明工作稳定,可靠,响应速度快.
但是, 由于我能力不足及缺少相关的资料,偶而的错误还是会发生的,整套实验装置仍然有待改进.
==============================================================================================
※错误分析及解决方法
3.除了以上两个明确的错误,还有一些其它的错误就不那么容易找出来了.例如:电路故障,芯片损坏,并口线接触
不良,短路,断路等等.这些错误要么不出现,出现后则只好用万用表来排查了.
4.实验者操作失误也会招致错误。例如把CANL与CANH相连,短路片设置不正确的等.需要实验者仔细认真的操作才
能避免.
==============================================================================================
※外设控制与访问
在使用CAN总线技术的情况下,对外部设备的访问与控制进行得非常容易。
在这个访问与控制过程中,必须指定目的CAN节点的ID号,即ID3、ID2、ID1、ID0。如果一个CAN节点上有多个外部设备,
就必须进一步指定唯一的外设标识符。
在这个实验中,CAN节点的外部设备就不只一个。因此,要访问每个外部设备,就必须加上每一个的标识符。
这里使用了CAN的数据帧中的D1(地址 15H)作为标识符,例如:D1=4 (HEX) 表示访问对象是ADC0809、D1=5(HEX) 表示
访问对象是直流电机。
※外部设备访问 帧格式为:
地址 10 11 12 13 14 15 16 17 18 19 1A 1B 1C (HEX)
名称 CON ID3 ID2 ID1 ID0 D1 D2 D3 D4 D5 D6 D7 D8 (HEX)
内容 88 ID3 ID2 ID1 ID0 SL ADR DAT DAT -- -- -- -- (HEX)
注:多数外设的访问还必须有参数,在这里,使用了CAN的数据帧中的D2-D8作为可能的访问与控制参数。
==============================================================================================
※对LED访问的帧格式为:
地址 10 11 12 13 14 15 16 17 18 19 1A 1B 1C (HEX)
名称 CON ID3 ID2 ID1 ID0 D1 D2 D3 D4 D5 D6 D7 D8 (HEX)
内容 88 ID3 ID2 ID1 ID0 06 -- DAT -- -- -- -- -- (HEX)
作用 访问CAN节点(ID3、ID2、ID1、ID0)上的8位LED,并控制8位LED显示DAT的值
|例子:
| 点亮8个LED,格式为:
| 88 40 22 33 10 06 0 FF 0 0 0 0 0
| 熄灭8个LED,格式为:
| 88 40 22 33 10 06 0 00 0 0 0 0 0
==============================================================================================
※对数码管访问的帧格式为:
地址 10 11 12 13 14 15 16 17 18 19 1A 1B 1C (HEX)
名称 CON ID3 ID2 ID1 ID0 D1 D2 D3 D4 D5 D6 D7 D8 (HEX)
内容 88 ID3 ID2 ID1 ID0 07 DAT1DAT2 -- -- -- -- -- (HEX)
作用 访问CAN节点(ID3、ID2、ID1、ID0)上的两个数码管,并控制相识DATA1、DATA2的值。
注意: 这里的DATA1、DATA2只是笔形码,不是自然数。要显示一个具体的数字,必须使用软件的笔形码转换工具。
|例子:
| 显示一位数字“0”,笔形码为 FC ,帧格式为:
| 88 40 22 33 10 07 0 FC 0 0 0 0 0
| 显示两位数字“23”,笔形码为 F2 DA ,帧格式为:
| 88 40 22 33 10 07 F2 DA 0 0 0 0 0
==============================================================================================
※对拨动开关的访问格式为:
地址 10 11 12 13 14 15 16 17 18 19 1A 1B 1C (HEX)
名称 CON ID3 ID2 ID1 ID0 D1 D2 D3 D4 D5 D6 D7 D8 (HEX)
内容 88 ID3 ID2 ID1 ID0 08 -- -- -- -- -- -- -- (HEX)
作用 访问CAN节点(ID3、ID2、ID1、ID0)上的8位拨动开关,读取其状态并返回
|例子:
| 读取波动开关的状态
| 88 40 22 33 10 08 0 A8 0 0 0 0 0
==============================================================================================
※对ADC0809的访问格式为:
地址 10 11 12 13 14 15 16 17 18 19 1A 1B 1C (HEX)
名称 CON ID3 ID2 ID1 ID0 D1 D2 D3 D4 D5 D6 D7 D8 (HEX)
内容 88 ID3 ID2 ID1 ID0 04 INX -- -- -- -- -- -- (HEX)
作用 访问CAN节点(ID3、ID2、ID1、ID0)上的ADC0809,选择0809的通道(INX)
|例子:
| 选择0809的通道2,进行A/D转换
| 88 40 22 33 10 04 02 0 0 0 0 0 0
| 选择0809的通道3,进行A/D转换
| 88 40 22 33 10 04 03 0 0 0 0 0 0
==============================================================================================
※对蜂鸣器的访问帧格式:
地址 10 11 12 13 14 15 16 17 18 19 1A 1B 1C (HEX)
名称 CON ID3 ID2 ID1 ID0 D1 D2 D3 D4 D5 D6 D7 D8 (HEX)
内容 88 ID3 ID2 ID1 ID0 05 7F DAT -- -- -- -- -- (HEX)
作用 访问CAN节点(ID3、ID2、ID1、ID0)上的蜂鸣器,并控制其鸣叫与停止
例子
| 选择蜂鸣器,并让它鸣叫:
| 88 40 22 33 10 05 7F FF 0 0 0 0 0
| 选择蜂鸣器,并停止鸣叫:
| 88 40 22 33 10 05 7F FF 0 0 0 0 0
==============================================================================================
制作:温
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -