周立功CAN总线设计详解通讯
周立功USBCAN-II上位机开发(MFC)

周⽴功USBCAN-II上位机开发(MFC)使⽤的USB转CAN的设备是周⽴功的USBCAN-II,在购买的时候,会有上位机⼆次开发的库⽂件、例程和API⽂档等材料,可以参考。
1、库函数的调⽤⾸先,把库函数⽂件都放在⼯作⽬录下。
库函数⽂件总共有三个⽂件:ControlCAN.h、ControlCAN.lib、ControlCAN.dll和⼀个⽂件夹kerneldlls。
VC调⽤动态库的⽅法(1) 在扩展名为.CPP的⽂件中包含ControlCAN.h头⽂件。
如:#include “ControlCAN.h”(2) 在⼯程的连接器设置中连接到ControlCAN.lib⽂件。
如:在VC7环境下,在项⽬属性页⾥的配置属性→连接器→输⼊→附加依赖项中添加ControlCAN.lib中间换了⼀台电脑,出现电脑丢失ControlCAN.dll的问题,将ControlCAN.dll拷到了可执⾏⽂件的⽂件夹中即可2、基本操作2.1 连接设备我这⾥每次连接都会重新开启接收数据的线程,创建⼀次接收数据的txt⽂档void CTest_OilDlg::OnBnClickedButtonConnect(){//⾸先判断CAN是否打开,,如果已经打开,则先复位及重启CAN--1.8//关闭程序前必须点击断开连接按钮,否则报错if(m_connect == 1){m_connect = 0;//isShow = 0;Sleep(500);GetDlgItem(IDC_BUTTON_CONNECT)->SetWindowTextW(_T("连接"));VCI_CloseDevice(m_deviceType,m_deviceIndex);showListInfo(_T("断开设备成功"));//结束⾃发⾃收测试的定时器KillTimer(0);//结束当前线程if(m_pThread != NULL){//::WaitForSingleObject(m_pThread->m_hThread,INFINITE);//该函数会造成死锁//https:///silvervi/article/details/5874212 将上⾯函数修改成如下,以避免上⾯函数阻塞对话框主线程的消息队列DWORD dwRet = 0;MSG msg;while(true){//等待处理数据线程结束,和等待消息队列中的任何消息dwRet = MsgWaitForMultipleObjects(1,&m_pThread->m_hThread,false,INFINITE,QS_ALLINPUT);//dwRet = WaitForSingleObject(m_pThread->m_hThread,50);switch (dwRet){case WAIT_OBJECT_0:break;case WAIT_OBJECT_0 + 1://get the message from Queue and dispatch it to specific windowPeekMessage(&msg,NULL,0,0,PM_REMOVE);DispatchMessage(&msg);continue;default:break;}break;}//CloseHandle(m_pThread->m_hThread);delete m_pThread;m_pThread = NULL;//不太懂}//关闭存储数据的⽂件for(int i = 0;i < 4;i++){//判断⽂件是否打开,若打开了关闭if(m_waveDataFile[i].m_hFile != CFile::hFileNull){m_waveDataFile[i].Close();}}GetDlgItem(IDC_BUTTON_START)->SetWindowTextW(_T("开始⼯作"));return;}//------------打开设置---------------------////设备类型m_deviceType = VCI_USBCAN2;//设备索引号,只有⼀个设备,索引号为0m_deviceIndex = 0;//第0路CAN--只有⼀路,⽤户选择CString canNum;m_selectCANNum.GetWindowTextW(canNum);m_canNumA = _ttoi(canNum);if(VCI_OpenDevice(m_deviceType,m_deviceIndex,0) != STATUS_OK)//m_deviceType:设备类型号;m_deviceIndex:设备索引号;最后⼀个是保留参数,⼀般为0 {MessageBox(_T("打开设备失败!",_T("警告"),MB_OK|MB_ICONQUESTION));showListInfo(_T("打开设备失败"));SetHScroll();return ;}else{showListInfo(_T("打开设备成功"));SetHScroll();}///-------------对CAN进⾏初始化------------------////对CAN进⾏初始化VCI_INIT_CONFIG init_config;init_config.AccCode = 0x00000000;init_config.AccMask = 0xffffffff;//表⽰全部接收,(全部接收,AccMask:0xffffffff;AccCode:0x00000000---这块可以通过测试软件中的滤波设置功能中计算)init_config.Mode = 0;//正常模式;1:表⽰只听模式(只接收,不影响总线)init_config.Timing0 = 0x00;init_config.Timing1 = 0x14;//相当于波特率1000kbpsif(VCI_InitCAN(m_deviceType,m_deviceIndex,m_canNumA,&init_config) != STATUS_OK){MessageBox(_T("初始化CAN失败!"),_T("警告"),MB_OK|MB_ICONQUESTION);VCI_CloseDevice(m_deviceType,m_deviceIndex);showListInfo(_T("初始化CAN失败"));SetHScroll();return ;}else{showListInfo(_T("初始化CAN成功"));SetHScroll();}m_connect = 1;GetDlgItem(IDC_BUTTON_CONNECT)->SetWindowTextW(_T("断开"));//创建存储数据的⽂件CTime time0 = CTime::GetCurrentTime();CString fileName = _T("WaveData");if(!PathIsDirectory(fileName)){::CreateDirectory(fileName,NULL);}fileName.Format(_T("WaveData/%d-%d %dh%dm%ds"),time0.GetMonth(),time0.GetDay(),time0.GetHour(),time0.GetMinute(),time0.GetSecond());if(!PathIsDirectory(fileName)){::CreateDirectory(fileName,NULL);}CString fileName0 = fileName;for(int i = 0;i < 4;i++){CString i0;i0.Format(_T("/%dth"),i+1);fileName = fileName0 + i0;fileName += _T(".txt");m_waveDataFile[i].Open(fileName,CFile::modeWrite|CFile::modeCreate|CFile::modeNoTruncate);//若⽂件存在,则清空}//开启接收数据的线程m_pThread = AfxBeginThread(ReceiveThread,this,0,CREATE_SUSPENDED,NULL);m_pThread->m_bAutoDelete = false;}2.2 接收数据UINT CTest_OilDlg::ReceiveThread(void *param){CTest_OilDlg *dlg = (CTest_OilDlg*)param;VCI_CAN_OBJ frameInfo[5000];//⼀次性从缓冲区获取50个帧VCI_ERR_INFO errInfo;int len = 1;//获取到的CAN帧的个数int i = 0;CString str,tmpstr;while(1){Sleep(1);if(dlg->m_connect == 0){break;}//获取缓冲区的长度int lenBuf = VCI_GetReceiveNum(dlg->m_deviceType,dlg->m_deviceIndex,dlg->m_canNumA);//获取到的数据的个数,如果缓冲区⼤于5000,则取出5000,否则将缓冲区全部取出len = VCI_Receive(dlg->m_deviceType,dlg->m_deviceIndex,dlg->m_canNumA,frameInfo,5000,400);//每次从缓冲区获取50帧,等待200ms⽆响应后结束if(len <= 0){//注意:如果没有读到数据则必须调⽤此函数来读取出当前的错误码//千万不能省略这⼀步(即使你可能不想知道错误码是什么)DWORD error = VCI_ReadErrInfo(dlg->m_deviceType,dlg->m_deviceIndex,dlg->m_canNumA,&errInfo);//返回值为1 表⽰操作成功if((errInfo.ErrCode & 0x0000) == 0x0000){//表⽰错误码是0x0000}}else{for(i = 0;i < len;i++){str = _T("数据:\n");if(frameInfo[i].DataLen > 8)frameInfo[i].DataLen = 8;//原始数据----但是这⾥没有保存for(int j = 0; j < frameInfo[i].DataLen;j++){tmpstr.Format(_T("%04x \n"),frameInfo[i].Data[j]);str += tmpstr;}::SendMessage(dlg->GetSafeHwnd(),WM_WAVEFORM,WPARAM(&frameInfo[i]),NULL);//TRACE(_T("receive\n"));}}}return0;}这⾥的数据处理是通过发送⾃定义消息的⽅法实现的,因为这些数据同时也要画成曲线显⽰在界⾯上,需要对界⾯进⾏更新操作,这时候需要给界⾯的主线程发消息去实现界⾯更新2.3 发送数据void CTest_OilDlg::OnBnClickedButtonSend(){//-----------------发送井下仪器⼯作模式命令-------------------//if(m_connect == 0)return ;VCI_CAN_OBJ frameInfo;//设置发送重发超时时间,建议不⼩于1500ms,默认4000msVCI_SetReference(m_deviceType,m_deviceIndex,m_canNumA,4,&m_sendTimeout);frameInfo.ID = 0x84444444;//需要再确定frameInfo.SendType = 0;//正常发送frameInfo.RemoteFlag = 0;//数据帧frameInfo.ExternFlag = 1;//扩展帧frameInfo.DataLen = 3;//⼀个字节frameInfo.Data[0] = 0x04;frameInfo.Data[1] = 0xff;//01仪器待机;02:仪器⾃检;03:仪器定时开关机;04:仪器测试;05:仪器连续⼯作frameInfo.Data[2] = m_selectMode.GetCurSel() + 1;int ret = VCI_Transmit(m_deviceType,m_deviceIndex,m_canNumA,&frameInfo,1);if(ret == 1){showListInfo(_T("命令发送成功"));SetHScroll();}else{showListInfo(_T("命令发送失败"));SetHScroll();}}View Code3、问题做到现在,程序⾃发⾃收可以,接收下位机数据能接受5个左右的循环就接不到了,后来把数据的操作都屏蔽掉,只接收,发现也接不到,缓冲区内的数据个数为0.这个问题还没解决。
广州周立功单片机 PCA82C250 CAN收发器 说明书

5.1 总线电缆阻抗的影响 ........................................................................................................ 10 5.2 节点的最大数量 ................................................................................................................11 5.3 举例 ..................................................................................................................................11
y 物理信令
位编码 定时和同步
y 物理媒体连接 驱动器和接收器特性
y 媒体相关接口 总线连接器
本文档着重介绍如何使用 Philips 半导体的收发器 PCA82C250[1]和 PCA82C251[2]实现物理媒体连接子
层 物理信令子层和数据链路层之间的连接是通过集成的协议控制器实现的 这些产品有像 Philips 的
12V
最大的总线终端 DC 电压 0V<VCC<5.5V ;VCANL,H<+18V -150V<Vtr<+100V
扩展扇出应用时最小收发器电源电压 RL=45
java代码编写周立功can盒报文发送和报文处理

java代码编写周立功can盒报文发送和报文处理(原创版)目录1.周立功 CAN 盒简介2.Java 代码编写 CAN 盒报文发送3.Java 代码编写 CAN 盒报文处理正文一、周立功 CAN 盒简介周立功 CAN 盒是一款基于 CAN 总线协议的硬件设备,可以用于实现各种电子设备的通信。
它具有多个 CAN 接口,可以方便地与其他设备进行连接。
在使用周立功 CAN 盒时,我们需要编写相应的代码来实现数据的发送和接收。
本文将介绍如何使用 Java 代码编写 CAN 盒的报文发送和报文处理。
二、Java 代码编写 CAN 盒报文发送要使用 Java 代码编写 CAN 盒的报文发送,我们需要先了解 CAN 总线协议的基本原理。
CAN 总线协议是一种多主控制器的串行通信协议,它具有较高的传输速率和较好的抗干扰性能。
在发送报文时,我们需要按照 CAN 总线协议的格式组织数据,然后通过 CAN 盒发送给其他设备。
以下是一个简单的 Java 代码示例,用于发送一个 CAN 报文:```javaimport java.io.IOException;import java.util.Arrays;public class CANBoxSender {public static void main(String[] args) throws IOException{// 初始化 CAN 盒// 设置 CAN 盒的波特率、数据位、停止位等参数// 初始化成功后,获取 CAN 盒的句柄// 设置要发送的报文 ID、数据长度、数据缓冲区等参数 // 发送报文canBox.send(data);}}```三、Java 代码编写 CAN 盒报文处理在接收到其他设备发送的 CAN 报文后,我们需要编写相应的 Java 代码来处理这些数据。
处理过程中,我们需要解析 CAN 报文的内容,然后将数据存储到相应的数据结构中,以便后续进行分析和处理。
周立功CANalyst Manual用户手册

广州周立功单片机发展有限公司
w w w. z l g m c u . c o m
一、 版权信息
CANalyst CAN 分析仪及相关软件产品均属广州市周立功单片机发展有限公司所有,其产权受国家法 律绝对保护,未经本公司授权,其他公司、单位、代理商及个人不得非法使用和拷贝,否则将受到国家法 律的严厉制裁。
发光管代表的具体意义如下:
表 4.2 指示灯状态说明
指示灯
状态
指示状态
红
系统初始化状态指示
SYS
绿
USB 接口信号指示
CAN1
红 CAN1 接口运行状态
绿
CAN2
红 CAN2 接口运行状态
绿
CANalyst 分析仪上电后,系统初始化状态指示灯 SYS(红)点亮,表明系统正在初始化;否则,表 示存在系统电源故障或系统发生有严重的错误。
4.1 硬件连接
CANalyst CAN 分析仪具有体积小、支持即插即用的特点。用户可以选择 CANalyst 的供电方式为下列 两种方式之一:
外部供电模式:将外部+9~+25V 的电源连接到 CANalyst 分析仪的电源插座 POWER,然后将 PC 与 CANalyst 分析仪通过 USB 电缆连接;此时,指示灯 SYS 点亮红色。这种模式适合 CANalyst 分析仪使用 USB 总线集线器、或同一 PC 连接多个 USB 设备的场合。 USB 总线供电模式:将 PC 与 CANalyst 分析仪通过 USB 电缆连接,由 USB 电缆向 CANalyst 分 析仪提供+5V 电源,此时,指示灯 SYS 点亮,先显示红色,稍后将闪烁数次绿色,最终稳定显 示绿色。这种模式适合于大多数场合,例如 CANalyst 分析仪是 USB 总线上的唯一设备时。 CANalyst 分析仪在工作时,指示灯 CAN1 表示第 1 路 CAN 通道的状态:绿色表示正在运行,红色表 示发生错误。同理,指示灯 CAN2 表示第 2 路 CAN 通道的状态。
广州周立功单片机 PC104-CAN 单路非智能 CAN 接口卡 说明书 V1.0

V CA N_H
屏蔽线
红色 P.M.S#207C 白色 EIA935A 线缆限制
CAN_L V
蓝色 P.M.S.#297C 黑色 P.M.S.#426C
图 3.2 OPEN5 连接器
3.5. CAN 总线连接
终端电阻
Node #1
Node #2 ........ Node #n
CAN_H
CAN_L
图 3.3 CAN 网络结构
参考相关接口函数说明。
3.4. DB9 针型插座引脚定义
PC104-CAN 非智能 CAN 接口卡只有一个 CAN 通道,通过 DB9 针型插座 CZ1 与实际的 CAN 网络进 行连接。CZ1 的管脚信号定义如表 三-1 所示。管脚定义符合 DeviceNet 和 CANopen 标准。
广州周立功单片机发展有限公司
6.1.
保修期.......................................................................................................................................... 20
6.2.
四 设备安装 .......................................................................................................................................................... 6
PHILIPS PCA82C250;
z 数据传送速率: CAN 控制器数据传送速率可编程,最高达 1Mbit/s;
广州周立功单片机 TJA1041 CAN高速收发器 说明书

TJA1041 CAN高速收发器应用指南目录1介绍 (3)2高速CAN的一般应用 (3)3新特性 (6)3.1 低功耗管理 (6)3.2 总线故障诊断 (7)3.3 系统的自动防故障特性 (7)3.4 共模稳压 (7)3.5 I/O级和主控制器电源电压的匹配 (7)4工作模式 (7)4.1 正常模式 (8)4.2 Pwon/只听模式 (8)4.3 待机模式 (9)4.4 睡眠模式 (9)4.5 进入睡眠命令模式Go-to Sleep Command Mode (9)5TJA1041在应用中的使用 (10)5.1 应用举例 (10)5.2 如何使用引脚V I/O” (11)5.3 如何使用引脚INH” (12)5.4 如何使用引脚Wake” (12)5.4.1 R s和R eb的计算 (13)5.5 分裂终端和共模稳压 (13)5.5.1 分裂终端的概念 (13)5.5.2 传统收发器产品的共模稳压 (13)5.5.3 TJA1041的共模稳压 (14)5.5.4 短截线stub节点的分裂终端 (14)6诊断 (15)6.1 标志 (15)6.2 检测和发信总线故障 (16)6.2.1 哪些总线故障可被检测 (16)6.2.2 如何读总线故障标志 (18)6.3 检测和发信本地故障 (18)6.3.1 从本地故障恢复 (19)6.3.2 TxD显性箝位 (19)6.3.3 TxD/RxD短路 (19)6.3.4 引脚RXD隐性箝位 (20)6.3.5 总线显性箝位 (20)6.3.6 过热保护 (20)6.4 处理通讯故障的软件流程图 (20)6.5 Vcc/V I/O欠电压检测 (22)6.6 V BAT欠电压检测 (22)7TJA1041的低功耗管理 (22)7.1 ECU冷起动的软件流程图 (22)7.2 ECU热启动的软件流程图 (23)7.3 如何进入待机模式第一级低功耗 (24)7.4 如何进入睡眠模式第二级低功耗 (25)8和其他高速收发器的互操作性 (26)8.1 TJA1041和C520/251在待机模式结合使用 (26)8.2 TJA1041和不上电的TJA1050/C250/C251在点火后结合使用 (27)8.3 TJA1041和TJA1040在待机模式结合使用 (27)9参考文献 (27)10附录 (28)10.1 Vcc电源 (28)10.1.1 没有总线故障的Vcc平均电源电流 (28)10.1.2 存在总线故障时的Vcc平均电源电流 (28)10.1.3 计算电压调节器的旁路电容 (28)1介绍根据ISO 11898 [2]和SAE J2284 [3]Philips Semiconductors 的CAN 高速收发器TJA1041 [1]可以实现协议控制器和物理传输媒体之间的物理连接它主要在始终由电池供电的汽车电子控制应用中使用因此TJA1041提供了类似容错的CAN 收发器TJA1054 [4]的低功耗管理功能依照这些概念收发器自动地控制电子控制单元ECU 的一个或多个外部电压调节器例如在TJA1041的睡眠模式中电压调节器通常都被TJA1041关断禁能收发器和主控制器的Vcc电源TJA1041如图 1.1所示用SO14封装SO14封装的上面部分引脚和用SO8封装的PhilipsSemiconductors 的其他CAN 高速收发器例如PCA82C250 [5]PCA82C251 [6]TJA1050 [7] 和TJA1040[8] 的引脚一致兼容TXD G ND Vc c RXD V I/O E N INHS T B CANH CANL S P LIT V B ATWAK E E RR图1.1 TJA1041的引脚图2高速CAN 的一般应用高速CAN 的一般应用如图2.1所示这里的ECU 通过短截线stub连接到线形拓扑的总线根据ISO 11898 [2]额定的总线负载是60因此每条总线的末端都端接一个120的电阻图2.1也显示了分裂终端Split Termination 的概念它有助于改善CAN 高速总线系统[9]的EMC 性能它将前面的单个120端接电阻分裂成两个60的电阻中心抽头通过电容C spl 连接到地图2.1的结构图说明了ECU 的结构典型的ECU CAN 节点是由一个独立的收发器和一个集成了CAN 控制器的主控制器组成它们都由电压调节器供电虽然CAN 高速收发器使用+5V 的电源但越来越多新的微控制器产品使用更低的电源电压这种情况下微控制器就必需使用一个专用的电压调节器协议控制器通过串行数据输出线TxD和串行数据输入线RxD 连接到收发器收发器则通过两个有差动接收和发送能力的总线终端CANH 和CANL 连接到总线Cspl图2.1 高速CAN的应用协议控制器输出一个串行的发送数据流到收发器的TxD输入TJA1041的内部上拉功能将TxD输出置成逻辑高电平即总线输出驱动器在开路的情况下是不起作用的在隐性状态时见图2.2CANH 和CANL引脚被偏置到Vcc/2的电压级在TxD是逻辑低电平的情况下总线输出级被激活因此在总线上产生显性状态图2.2输出驱动器CANH提供了向Vcc的源级输出而CANL提供了向GND 的下拉输出这在图2.3TJA1041的结构图中说明如果没有总线节点发送一个显性位总线会一直处于隐性状态如果一个或多个总线节点发送一个显性位总线进入显性状态覆盖原来的隐性状态线与特性接收器将差动的总线信号转换成逻辑电平信号并在RxD输出那么串行接收数据流就被传送到总线协议控制器译码接收比较器是一直激活的即它在总线节点发送报文时监控总线这就要求支持CAN 的非破环性逐位仲裁方案图2.2 按照ISO11898的额定总线电平V V INHC A NH C A NLSPLIT R X DE R RWAK ESTBE NT XDGND图2.3 TJA1041的结构图3新特性由于汽车中的CAN网络越来越复杂现代的总线愈加要求系统功率消耗低系统可靠性高有优良的的EMC电磁兼容性性能和灵活的接口TJA1041的新特征反映了这些日益增加的要求见图3.1FlexibleInterfacingI/O Lev elAdaptation toµC图3.1 TJA1041的新特征3.1 低功耗管理现代的汽车内网络结构要求CAN高速总线甚至在汽车停车时也能使用由于连接的CAN节点越来越多而且停车时它们需要用电池供电所以静态的ECU电流消耗要尽可能低否则电池会在汽车停车后的短时间内放电完毕TJA1041的低功耗管理允许将整个节点的静态电流消耗减少到大约20µA典型值这样的电流消耗就足够低允许电池对节点持续地供电这样系统能对本地事件以及CAN报文作出反应唤醒整个总线系统TJA1041的工作模式正常Pwon/只听待机睡眠建立了三个不同级别的低功耗管理见表3.1在第0级总线系统是活动的TJA1041工作在正常或Pwon/只听模式收发器和主控制器由有效的Vcc 电源供电下一个低功耗级别是第1级此时TJA1041在待机模式中工作收发器和主控制器仍然由有效的Vcc 供电但收发器的电流消耗显著下降通常主控制器也处于掉电状态以减少电流由于微控制器仍然上电它可以监控自己输入引脚的本地唤醒事件第2级低功耗对应的是TJA1041的睡眠模式这个模式中向收发器和主控制器供电的电压调节器关断因此收发器和微控制器的Vcc电源不存在当主控制器完全不上电时TJA1041通过V BAT的电池供电保持有效可使用这个电源是用于确保TJA1041能被总线或本地唤醒事件唤醒第2级低功耗保证节点的电流消耗最低表3.1 不同低功耗级别的特性低功耗级别工作模式 Vcc电源 µC 节点功率消耗第0级总线活动正常Pwon/只听有效上电正常第1级待机有效上电低第2级睡眠关闭不上电非常低3.2 总线故障诊断物理的总线故障通常会导致总线通信中断高速CAN的物理层容许存在某些总线故障如果TJA1041没有诊断总线故障的功能应用的微控制器就没有机会意识到知道这些总线故障这些总线故障除了增加电流消耗外还使EMC性能变得很差所以要避免产生总线故障TJA1041能够检测出总线线路短路还包括上面所描述的那些故障TJA0141通过提供的总线故障标志向微控制器发信总线故障信息3.3 系统的自动防故障特性目的是建立一个自动防故障系统能够检测和处理严重影响总线操作的故障使总线系统的其他部分不受故障的影响有几种本地的总线故障情况像引脚短路都会导致总线通讯被严重扰乱或者甚至通讯中断如果使用TJA1041这些本地故障的影响都被限制在故障节点上不会降低其他节点间的总线通讯质量TJA1041通过提供的本地故障标志向微控制器发信本地故障信息3.4 共模稳压由于在隐性状态中总线相应地呈现高阻抗此时总线上很小的漏电流就会导致共模电压显著地下降当系统中存在不上电的ECU而其他ECU处于工作状态时漏电流就可能会产生TJA1041通过在引脚Split提供Vcc/2的额定电压源提供了一种共模稳压的方法见5.5.3节如果TJA1041没有这个特性总线在隐性状态时微弱的漏电流将导致共模电压有显著的下降在发送CAN报文的第一个显性位帧的起始位前共模电压将恢复到它的额定值此时电压将产生一个大的阶跃使辐射增大实际上即使总线上有不上电的ECU TJA1041的共模稳压功能仍能确保总线有优良的EMC性能3.5 I/O级和主控制器电源电压的匹配由于TJA1041支持ISO11898标准的物理层因此它需要+5V的电源电压作为参考电压另一方面现代的微控制器集成电路通常使用低于5V的电源电压大多数使用3.3V和更低的电源电压TJA1041提供了一个连续的阀值电平可以匹配最低2.5V[1]的微控制器电源电压因此主控制器的电源电压连接到收发器的引脚V为输入输出引脚提供参考电压它定义了TXD EN/STB的公制数字输入阀值和RXD/ERR的高电平输出电压由于TJA1041具有这些功能它可被接口到任何电源电压的典型值在2.5V和5V之间的微控制器4工作模式TJA1041提供了5种不同的工作模式由输入引脚/STB和EN控制在V BAT Vcc或V I/O任一条引脚出现欠电压的情况下/STB和EN的模式选择都被否决强迫收发器进入睡眠模式工作模式的状态图如图4.1所示对于不同的工作模式收发器的接收器和总线驱动器以及/ERR和RXD等输出引脚都呈现不同的性能每个工作模式的特征总结见表4.1此外这些模式都被编码成自动防故障确保控制引脚/STB和EN上可能出现的短脉冲低频干扰不会产生不需要的有害的影响11 E N&S TB-tateUVNOM= 1an under voltage is detec ted on VC Cor VI/OUVB AT= 1an under voltage is detec ted on VB AT-> a s ignal transition (e.g. -> 1 s ignifies a tr ansition from 0 to 1)= a steady signal level"1""High" level"0""Low" level图4.1 不同工作模式的状态图4.1 正常模式正常模式用于CAN通讯从TxD输入的数字位流被转换成相应的模拟总线信号同时收发器监控总线将模拟的总线信号转换成相应的数字位流并在RxD输出这种模式中外部电压调节器是激活的总线被偏置到Vcc/2发送器使能设置/STB=1和EN=1可以进入正常模式4.2 Pwon/只听模式Pwon/只听模式通常有两种不同的功能第一种功能就象名字所提示的一样实现只听的性能节点只允许从总线接收报文不允许发送报文到总线CAN控制器在TxD上的数字位流都被忽略这样可以防止节点影响总线第二种功能是Pwon/只听模式在引脚/ERR提供了微控制器可读的本地故障标志和PWON标志引脚/ERR的发信请参考6.1节设置/STB=1和EN=0就可以进入Pwon/只听模式4.3 待机模式待机模式可以达到第一级低功耗此时TJA1041的功率消耗比正常模式或Pwon/只听模式有明显的下降在待机模式中TJA1041不能发送和接收常规的CAN 报文但TJA1041仍监控总线上的CAN 报文当在总线上检测到大于t BUS [1]的显性相位表示总线要进行通信时内部的唤醒标志置位TJA1041也可以通过引脚Wake 接收到本地唤醒信号另外一个可能产生唤醒信号的操作是使模式转换到正常模式或Pwon/只听模式检测到远程或本地唤醒后内部唤醒标志被置位在待机模式中这个标志在引脚/ERR 和RXD 输出为了尽量减少电流消耗总线被端接到地而不是像正常模式或Pwon/只听模式一样偏置到Vcc/2设置/STB=0和EN=0就可以进入Pwon/只听模式4.4 睡眠模式睡眠模式可以达到第二级低功耗此时收发器的电流消耗和待机模式一样但收发器还能关断给收发器主控制器等供电的外部电压调节器供电到Vcc睡眠模式和待机模式唯一的差别是引脚INH的使用这个引脚提供了一个连接电池的开漏输出来控制一个或多个外部电压调节器在睡眠模式中引脚INH是悬空的典型地禁能收发器和微控制器的电压调节器而在所有其他模式中包括待机模式INH 呈现高电平基于VBAT当微控制器完全不上电的时候没有Vcc 电源TJA1041通过电池电源保持部分激活使收发器可以监控总线的CAN 报文实际上收发器是一个自动控制ECU Vcc 电源的器件由于在待机模式中可以通过4.3节提到的三种方法唤醒收发器和相关的节点− 通过CAN 总线远程唤醒 − 在引脚Wake用跳变沿进行本地唤醒−微控制器强迫将模式切换到正常模式或Pwon/只听模式唤醒后引脚INH 变成高电平再一次使能外部电压调节器并置位唤醒标志唤醒标志在引脚/ERR 和RXD 输出由于在待机模式中总线CANH 和CANL 都端接到GND 表4.1总结了TJA1041在不同工作模式中的特性根据图4.1的状态图使TJA1041进入睡眠模式的唯一方法是使用进入睡眠命令模式Go-to SleepCommand Mode /STB=0EN=1如果选中这个模式的时间比进入睡眠命令的最小持续时间th(min)[1]更长收发器自动进入睡眠模式并将引脚INH 切换成悬空的状态应当避免一部分总线节点处于正常或Pwon/只听模式而另一部分节点处于待机或睡眠模式的总线持续状态因为这些状态中有不同的总线偏置否则持续的横向电流将从一部分流向另一部分4.5 进入睡眠命令模式将进入睡眠命令模式Go-to Sleep Command Mode看成是一个命令比将它看成一个典型的工作模式更合适它主要是用于使TJA1041进入睡眠模式选中进入睡眠命令模式的时间必须比进入睡眠命令的最小持续时间t h(min)[1]的最大值要大才能确保可靠地进入睡眠模式在选择进入睡眠命令模式后发送器立即被禁能总线端接到GND 唤醒标志在引脚/ERR和RXD 发信设置/STB=0EN=1就选择了进入睡眠命令模式表4.1不同工作模式的特性 引脚/ERR引脚RXD 工作 模式/STB EN 低高低 高总线 偏置INH 引脚正常 1 1 置位总线故障标志注1 清除总线故障标志注1总线显性总线隐性 Vcc/2 V BAT检测到本地总线唤醒请求注2检测到远程总线唤醒请求注2置位PWON标志注3清除PWON标志注3Pwon/只听1 0置位本地故障标志注4清除本地故障标志注4总线显性总线隐性 Vcc/2V BAT进入睡眠命令0 1 V BAT待机 0 0 V BAT睡眠注60 X置位唤醒标志注5清除唤醒标志置位唤醒标志注5清除唤醒标志地悬空注1只有TJA1041进入正常模式后在TXD检测到4个显性到隐性的跳变沿后有效2只有TJA1041进入正常模式后在TXD检测到4个显性到隐性的跳变边沿前有效3只有存在Vcc和V I/O而且从睡眠待机或进入睡眠命令模式切换到Pwon/只听模式时有效4只有从正常模式切换到Pwon/只听模式才有效5只有存在Vcc和V I/O时有效6只有当选中进入睡眠命令模式的时间比进入睡眠命令的持续时间t h(min)长或者在V BAT Vcc或V I/O检测到欠电压收发器会进入睡眠模式5TJA1041的应用5.1 应用举例图5.1显示了如何将TJA0141集成到应用中这个应用例子假设使用3.3V电源供电的微控制器TJA1041收发器有一个专用的5V调压器微控制器有一个专用的3.3V调压器电压调节器的输出电压通常通过一个电容来稳压推荐使用的电容值由负载情况和电压调节器的性能决定见附录10.1电容C1和C2应当位于电压调节器的输出电容C3应连接得尽量接近收发器的Vcc和GND引脚它的功能是保护Vcc电源电压特别在负载在瞬间从隐性向显性快速转换的时候典型值大约是100nF TJA1041的应用的特性是电压调节器由收发器的INH引脚控制在睡眠模式中TJA1041典型地禁能电压调节器CA Nx.y图5.1 3.3V 微控制器的典型应用TJA1041除了连接Vcc 电源外还直接连接电池电源确保在睡眠模式中关断Vcc 电源后TJA1041仍然有本地和远程唤醒能力TJA1041通过5条信号线连接到主控制器微控制器通过信号/STB 和EN 控制TJA1041的工作模式见第4章这两个引脚都提供内部的下拉电流如果这些引脚没有连接收发器会进入待机模式TJA1041的输出引脚/ERR 向微控制器提供例如唤醒标志本地故障标志或PWON 标志等状态信息TxD 和RxD 分别代表发送和接收位流为了改善系统的EMC 性能微控制器和TJA1041之间的接口线可以选择串连大约1k 的电阻注意这些串连电阻会轻微地增加传播延迟TJA1041相关的总线引脚是两个总线终端CANH 和CANL 以及引脚Split 引脚Split 可被连接到分裂终端的中心抽头为共模电压提供直流稳定性或者直接让引脚开路在图5.1的应用例子中引脚Wake 是由一个低端开关控制这个开关默认是打开的在某段时间内关闭这个开关会导致在引脚Wake 上产生一个负脉冲如果脉冲的持续时间比t WAKE [1]长TJA1041认为是一个本地唤醒事件并开始唤醒将INH 切换到高电平由于引脚Wake有灵活的内部偏置概念因此它也可以使用高端开关见5.45.2 如何使用引脚V I/O引脚V I/O连接到µC 的电源电压为数字输入引脚的输入阀值和数字输出的高电平提供正确的电压参考TJA1041不象市场上的其他产品它提供了从2.5V 到5V 的连续电平匹配变化电平匹配应用到微控制器和收发器之间所有的接口引脚上即TxD EN /STB 输入引脚和RxD /ERR 输出引脚在正常模式中电池电源流出一个可以忽略不计的微弱电流I I/O [1]在睡眠模式中没有电流流过这个引脚如果引脚V I/O断开连接收发器将检测到V I/O有欠电压的情况此时收发器进入睡眠模式提供定义的自动防故障低功耗系统性能5.3如何使用引脚INH引脚INH 的目的是控制ECU 中的一个或多个电压调节器图5.1是通过收发器的INH 输出控制两个电压调节器的例子收发器使用5V 的调压器而微控制器使用3.3V的调压器引脚INH提供了连接电池的开漏输出在睡眠模式中它是悬空的由于共模电压调节器有典型的下拉特性导致在电压调节器的抑制输入产生低电平信号禁能电压调节器的输出在所有其他工作模式中引脚INH 被拉到电池电压使能外部电压调节器5.4 如何使用引脚Wake引脚Wake 用于向收发器发信本地唤醒信号它和容错的CAN 收发器TJA1054[5]很相似引脚Wake 上足够长度的信号变化会产生本地唤醒TJA1054有向电池电压的内部上拉允许使用低端开关而TJA0141的Wake 引脚有可变的偏置由于有外部偏置内部偏置从GND 切换到电池电压或相反图5.2显示了TJA1041的偏置概念以及不同的外部开关电路图5.2 引脚Wake的开关电路如果引脚Wake 的电压比唤醒阀值电压V th(WAKE)[1]高并持续超过t WAKE [1]的最大值而且引脚之前是低电平则内部偏置电流源将可靠地切换到电池电平同样地如果电压低于这个值并持续超过t WKAE 的最大值而且之前引脚是高电平则内部偏置电流源将可靠地切换到GND 实际上内部偏置会自动适应外部偏置的条件这个概念允许使用低端开关以及高端开关或者基于V BAT 的推挽级在没有唤醒事件时不会产生不期望的偏置电流使用低端开关时电阻R eb 和内部电流源都提供向V BAT 的上拉为了启动本地唤醒外部开关闭合在引脚Wake上产生一个负脉冲如果负脉冲的长度比t WAKE [1]的最大值大它将会终止内部定时器并发出可靠的唤醒信号在终止定时器的同时偏置切换到GND 释放低端开关后外部上拉电阻将内部偏置切换回VBAT电阻R eb 决定了外部开关闭合时流过的电流而且需要保证开关正确接触5.4.1 R s 和R eb 的计算串联电阻R s 用于在ECU 丢失了地而唤醒开关仍连接在正确的GND 的情况下保护收发器串联电阻要求的最小值由预计的最大电池电压V BAT.max 和引脚Wake 允许的最大电流15mA 决定这个电阻要确保电流永远不会超过这个级别串联电阻R s 要求的最小值可以用下面的式子计算max.Wake max.BAT min .S I V R =假设V BAT 不超过40V DC 串联电阻的是应当是2.7k电阻R eb 的作用是在使用外部开关后将偏置带回默认的状态这就规定了这个电阻值的上限例如使用低端开关时电阻R eb 和串联电阻R s 必须将引脚Wake 的电平拉得高于引脚Wake 的开关阀值决定R eb 上限的方程是max ).Wake (th BAT max .Pull s eb V V I )R R (−<⋅+ 用最大的下拉上拉电流10µA 以及V th(WAKE)的最大阀值可以算出R eb 的上限是大约180k5.5 分裂终端和共模稳压 5.5.1 分裂终端的概念TJA1041的总线驱动器向CANH 和CANL 提供了优良的信号对称性使电磁辐射非常低测量显示使用改良的总线终端概念――分裂终端split termination 可以获得更小的辐射没有共模扼流的分裂终端使特别是AM 频段的辐射达到最小除此之外这个概念还能使总线系统的电磁抗干扰性更强分裂终端的概念请看图 5.3两个终端电阻被分别分裂成两个等值的电阻即用两个60的电阻代替一个120的电阻这个方法的特殊功能是可以从终端的中心抽头取得共模信号这个共模信号通过电容C spl例如4.7nF端接到地由于TJA1041本身能达到很高的对称级别所以两条总线的对称问题变得更重要了因此为了使TJA1041有优良的辐射性能要考虑每个总线末端的两个端电阻的匹配容差C C spl图5.3 分裂终端的概念5.5.2 传统收发器产品的共模稳压 在前面的3.4节已经提到由于网络中存在不上电的ECU 而产生稳定的漏电流共模电压必须进行DC 稳压由于从分裂终端的中心抽头可以取得共模电压DC 共模稳压就可以通过一个分压器来实现典型的收发器产品要求如图5.4左边所示的外部分压器来实现共模稳压分裂终端的中心抽头简单地连接到分压器的输出如果分压器的阻抗低即分压器电流高稳定性就更好分压器的5V 电源通常连接到收发器的Vcc 电源在ECU 不上电的时候分压器禁能否则从不上电分压器流出的相当大的漏电流会使隐性总线状态时的共模电压变得更差要禁能分压器要求至少附加两个开关晶体管Common Mode Stabilization with a conventionalTransceiverCommon Mode Stabilization with the TJA1041图5.4 DC共模稳压5.5.3 TJA1041的共模稳压从图5.4可以看出传统收发器产品的共模稳压要求添加硬件即至少两个电阻和两个开关晶体管相反TJA1041的共模稳压不需要添加硬件因此节省了系统成本TJA1041有集成的分压器特性引脚Split是内部分压器的输出要进行共模稳压引脚Split 只要简单地连接到分裂终端的中心抽头就可以了见图5.4引脚Split的输出电压有大约2k的内部阻抗在Split输出和中心抽头之间可选择串联一个电阻调节输出阻抗稳定强度内部分压器只在正常模式开启在所有其他模式中引脚Split在宽广的共模范围中是悬空的引脚Split像总线终端引脚CANH和CANL一样可以承受-27V~+40V的DC电压我们推荐使用分裂输出的功能特别是系统存在不上电节点而其他的节点需要工作时可以我们也不强制您使用引脚Split的功能如果不使用引脚Split只要简单地让它开路就可以了5.5.4 短截线节点的分裂终端ISO 11898标准建议端接总线末端的节点以抑制反射短截线stub节点一般没有额外的终端但是我们发现正在发送的短截线节点如果也端接了分裂终端它的辐射会大大降低终端必须是高阻抗否则会大大影响总线负载图5.5显示了相应的范例配置这里的短截线节点都安装了分裂终端然而为了要保持总线负载在ISO 11898规定的范围内匹配电阻R r.Stub的阻值必须很高典型值大约是1.5k注意所选择的短截线节点的电阻值必须使总线负载在5060这个指定的范围内[2]C ANL图5.5 有分裂终端的总线配置6诊断6.1 标志TJA1041向诊断功能提供了5个不同的标志微控制器可以通过引脚/ERR 读出这些标志的状态引脚/ERR 当前显示的标志由当前的工作模式以及历史记录决定引脚/ERR 的标志发信请看图6.1的显示•唤醒标志在待机模式和进入睡眠命令模式中引脚/ERR发信的是唤醒标志低电平表示向微控制器发出唤醒请求无论何时进入正常模式这个标志都被清除复位只要唤醒标志置位进入睡眠模式命令就会被忽略因此不可能切换到睡眠模式唤醒标志也显示在引脚RXD• PWON 标志从待机模式睡眠模式或进入睡眠命令模式进入Pwon/只听模式后引脚/ERR 表示的是PWON标志当有电池欠电压的情况时PWON 标志被置为低电平因此当电池首次连接到引脚V BAT或者电池电源有暂时的中断这个标志都会被置位一旦进入正常模式PWON 标志就被复位清除设置了PWON 标志后不可能进入睡眠模式• 唤醒源标志进入正常模式后引脚/ERR 首先反映的是唤醒源标志低电平表示是通过引脚Wake 本地唤醒而高电平则表示通过总线唤醒当节点在正常模式中发送了至少4个显性位后唤醒源标志将被总线故障标志覆盖由于应用控制自己的传输它可以在任意时间读这个唤醒源标志无论何时退出正常模式唤醒源标志都被清除并置为默认状态的高电平• 总线故障标志收发器在正常模式发送了至少4个显性位后唤醒源标志会被总线故障标志覆盖低电平表示总线出现短路的情况可被检测到的总线线路故障将在6.2节详细解释无论何时退出正常模式总线故障标志都被复位成默认的高电平如果在离开正常模式和重新进入正常模式的期间没有唤醒信号则引脚/ERR 进入默认的高电平状态要发信总线故障标志要求再次发送至少4个显性位检测到总线故障并不会改变收发器的工作但它不支持CAN 低速收发器TJA1054提供的容错功能• 本地故障标志从正常模式进入Pwon/只听模式引脚/ERR 发信本地故障标志低电平表示以下的本地节点故障−TxD 显性箝位。
周立功CANET-100_200硬件使用及帧格式

产品数据手册
Date:2006/08/18
4/32
Rev 1.01 ©2006 Zhiyuan Electronics CO., LTD.
广州致远电子有限公司 CANET-100/CANET-200
产品数据手册
Date:2006/08/18
2/32
Rev 1.01 ©2006 Zhiyuan Electronics CO., LTD.
广州致远电子有限公司 CANET-100/CANET-200
CANET-100/CANET-200 CAN 转以太网适配器
销售信息
如果需要购买本产品,请在办公时间(星期一至五上午 8:30~11:50;下午 1:30~5:30; 星期六上午 8:30~11:50)拨打电话咨询广州致远电子有限公司。
CAN to 10M Ethernet,CAN 最大波特率为 1000K bps(CAN 波特率任意设定); 可利用 Windows utility 轻松进行设定; UDP 作业模式; 支持动态(DHCP) ;或静态获取 IP 地址; 转换效率非常高(CAN_Bus 的收发都可实 现 4000 帧/秒 以上的速度);
DataSheet
CANET-100/CANET-200
CANET-100/CANET-200 CAN 转以太网适配器
Rev 1.01 Date: 2006/08/18
产品数据手册
———————————————概述 ——————————————产品特性
CANET-100/CANET-200 是周立功公 司开发的嵌入式网络设备,它内部集成了一 路 CAN_Bus 接口(CANET-100)或两路 CAN_Bus 接口(CANET-200)和 EtherNet 接口以及 TCP/IP 协议栈,用户利于它可以 轻松完成 CAN_Bus 网络和 EtherNet 网络 的互连互通,进一步拓展 CAN_Bus 网络 的范围。
CAN-bus标准电路

(楼宇自动化事业部)
技术支持: CAN-bus:
电话:(020)22644381 22644382 22644253 邮箱:can.support@
iCAN 及数据采集:
电话:(020)28872344 22644373 邮箱:ican@
地址:武汉市洪山区广埠屯珞瑜路 158 号 12128 室 (华中电脑数码市场) 电话:(027)87168497 87168297 87168397 传真:(027)87163755
上海周立功
地址:上海市北京东路 668 号科技京城东座 7E 室 电话:(021)53083452 53083453 53083496 传真:(021)53083491
1.4
CAN-bus网络的保护 ............................................................................................... 3
1.5
配套资料................................................................................................................... 3
ARM 嵌入式系统:
电话:(020)28872347 28872377 22644383 22644384 邮箱:arm.support@
楼宇自动化:
电话:(020)22644376 22644389 28267806 邮箱:mjs.support@
mifare.support@
标准规范手册
图 1.2 基于 ARM7 的 CAN-bus 节点电路示例 ©2008 Guangzhou ZHIYUAN Electronics CO., LTD. 2
CAN交流分享3--总线报文解析(工具介绍及数据库编写)

CAN总线报文解析(工具介绍及数据库编写)初步了解CAN协议基本知识后,下面开始进行报文解析,进行报文解析需要如下三个步骤:找到一个CAN总线工具,编写协议数据库,实车采集报文并分析。
1. CAN总线工具有哪些?低端产品:蓝马,周立功CAN卡,KVASER。
他们具备价格低,几百到几千的价格,作为报文解析工具,基本可满足使用要求。
蓝马目前已淘汰,周立功CAN卡被部分零部件公司使用,kvaser由于其配套软件BUSMASTER逐步更新、且免费、软件功能已接近于VSPY功能,目前依然被大多数汽车零部件公司作为常规总线工具使用。
中高端产品:美国英特佩斯公司的VSPY,价格2万左右,基本功能和canoe类似,功能稍微欠缺。
德国VECTOR公司的总线工具系列,一套canoe基本需要20万左右,一套canscope及canstress需要20-30万。
国产致远电子的canscope及cantress,功能都有,价格相对比vector低。
2. 编写dbc数据库kvaser、vspy、canoe、cansscope等总线工具,都具备编写协议数据库功能。
我们主要以canoe为例说明。
如下操作步骤及顺序只是其中一种,可以根据个人习惯进行调整。
2.1打开VECTOR CANdb++ Editor,File中选择新建database,保存为testexample.dbc,如下图1所示,包括networks、ECUs、Environment variables、network nodes、messages、signals。
图12.2 选择network nodes,右键后,新建节点test1。
如图2所示内容需要根据总线通讯矩阵进行填写。
图22.3 选择Messages,右键后,新建消息msg1。
如图3所示内容需要根据总线通讯矩阵进行填写。
图32.4 选择Messages,右键后,新建信号msg1。
如图4所示内容需要根据总线通讯矩阵进行填写。
基于周立功PCI9820的CAN卡组态王驱动协议V2.2-推荐下载

1.协议编制目的
本协议是基于 PCI-9820I 通讯卡而编写的 CAN 通讯协议。
2.报文类型:
2.1 服务数据报文 SDO(Service Data Object) SDO 报文通过索引和子索引来传输数据,可批量下载和上传数据。 SDO 报文发送方式采用一对一或主从应答方式来传输数据。
Client->Server/Server->Client
帧名称 帧索引
数据 1
SDO 帧 目的地址 命令字 索引高位 索引低位 备用
◆ 目的地址:范围 1-127,客户端(clint)的节点号固定为 0x7f。
◆ 命令字:
数据 2
3
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术通关,1系电过,力管根保线据护敷生高设产中技工资术艺料0不高试仅中卷可资配以料置解试技决卷术吊要是顶求指层,机配对组置电在不气进规设行范备继高进电中行保资空护料载高试与中卷带资问负料题荷试2下卷2,高总而中体且资配可料置保试时障卷,各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并22工且22作尽22下可22都能22可地护以缩1关正小于常故管工障路作高高;中中对资资于料料继试试电卷卷保破连护坏接进范管行围口整,处核或理对者高定对中值某资,些料审异试核常卷与高弯校中扁对资度图料固纸试定,卷盒编工位写况置复进.杂行保设自护备动层与处防装理腐置,跨高尤接中其地资要线料避弯试免曲卷错半调误径试高标方中高案资等,料,编试要5写、卷求重电保技要气护术设设装交备备置底4高调、动。中试电作管资高气,线料中课并敷3试资件且、设卷料中拒管技试试调绝路术验卷试动敷中方技作设包案术,技含以来术线及避槽系免、统不管启必架动要等方高多案中项;资方对料式整试,套卷为启突解动然决过停高程机中中。语高因文中此电资,气料电课试力件卷高中电中管气资壁设料薄备试、进卷接行保口调护不试装严工置等作调问并试题且技,进术合行,理过要利关求用运电管行力线高保敷中护设资装技料置术试做。卷到线技准缆术确敷指灵设导活原。。则对对:于于在调差分试动线过保盒程护处中装,高置当中高不资中同料资电试料压卷试回技卷路术调交问试叉题技时,术,作是应为指采调发用试电金人机属员一隔,变板需压进要器行在组隔事在开前发处掌生理握内;图部同纸故一资障线料时槽、,内设需,备要强制进电造行回厂外路家部须出电同具源时高高切中中断资资习料料题试试电卷卷源试切,验除线报从缆告而敷与采设相用完关高毕技中,术资要资料进料试行,卷检并主查且要和了保检解护测现装处场置理设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
CAN 2.0中文 通信协议

周立功CAN总线设计详解通讯

CAN-bus 器件列表
序号
型号
1 P87C591
2 SJA1000 3 PCA82C250 4 PCA82C251 5 TJA1050 6 TJA1040 7 TJA1041 8 TJA1054 9 TJA1020 10 DC/DC 电源模块
器件说明 集成 CAN 控制器的 8 位 MCU,512B RAM、16K OTP,内有 A/D、 PWM 功能 独立 CAN 控制器,符合 CAN2.0 规范,兼容并可替代 PCA82C200 通用 CAN 收发器 通用 CAN 收发器 高速 CAN 收发器,可替代 PCA82C250/251 高速 CAN 收发器,可替代 PCA82C250/251 高速 CAN 收发器,兼容 TJA1040 并具有网络监听功能 容错的 CAN 收发器, 可完全替代 252/TJA1053 标准 LIN 收发器,CAN-bus 的低成本配套网络 电气隔离元件
CAN-bus 分 析 仪 CANalyst-I 单路 CAN 分析仪 CANalyst-II 双路 CAN 分析仪
CAN-bus 技 术 方 案 CAN-bus 通讯/测试/控制实验室 汽车电子通讯控制 RS485 网络升级 智能楼宇系统 电力通讯控制 工业自动化控制 矿业远程通讯 DeviceNET 应用
高层协议
CAN 高层协议························································································· 8 CANopen 协议 ························································································ 9 DeviceNET 协议 ···················································································· 10 ZLGCAN 系列产品介绍 ············································································ 12
广州周立功单片机 构建 CAN-bus 网络中的虚拟串口 (VCOM) 说明书

构建CAN-bus网络中的虚拟串口 (VCOM)广州周立功单片机发展有限公司2005年8月目录构建CAN-bus网络中的虚拟串口 (1)1.1 基于CAN-bus网络的虚拟串口 (1)1.1.1 虚拟串口特点 (1)1.1.2 支持平台: (1)1.2 虚拟串口的建立 (2)1.2.1 主要硬件设备 (3)1.3 虚拟串口服务器的配置 (4)1.4 CAN232MB转换器的配置 (8)1.5 虚拟串口网络的测试 (8)1.6 CAN-bus网络的优势 (11)构建CAN-bus网络中的虚拟串口关键词:CAN-bus 虚拟串口VCOM CAN232MB转换器 PCI-9820接口卡1.1 基于CAN-bus网络的虚拟串口在工业串行通讯领域中,RS-232与RS-485都是会被经常用到的数据传输标准之一。
例如,普通PC一般会提供1~4个标准RS-232端口,分别被标注为COM1~COM4端口。
用户可以通过这些现成的RS-232端口连接外部设备,比如键盘、IC读卡器、条码阅读器、数字化仪、打印机、数据记录仪,或者由用户自己定制的串行通讯仪器,等等。
操作或编程这些标准的COM端口也是非常方便的,因为市场上有众多的串口软件调试工具可供通讯测试,也有功能齐全的DLL程序开发库可供编程时调用。
但是,传统RS-232串行通讯存在着数据可靠性、通讯距离、端口数量等多个方面的限制。
例如,在工业控制等现场环境中,常会有电气噪声干扰传输线路,使用RS-232通讯时经常因外界的电气干扰而导致信号传输错误;其次,在不增加缓冲器的情况下,RS-232通讯的最大传输距离只可以达到15米;还有,同1个RS-232端口只能够连接1个RS-232通讯设备。
上述因素大大限制了RS-232通讯的应用领域。
本文介绍了一种简单、可靠的方法,通过利用ZLGCAN接口卡、CAN232MB转换器等设备,可以在1条普通双绞线上连接多达2048个RS-232设备,通讯距离可以长达10公里甚至更远的距离。
周立功致远电子CAN总线产品技术支持FAQ全集

广州致远电子股份有限公司类别内容 关键词CAN-bus 总线产品 摘 要 介绍CAN-bus 总线产品使用的疑难问题修订历史版本日期原因V1.00 2015/01/01 创建文档目录1. USB接口CAN卡 (1)1.1软件问题 (1)1.1.1USBCAN板卡的驱动安装不成功要如何处理? (1)1.1.2CANtest测试软件CAN的数据帧怎样能分类固定查看CAN报文数据? (1)1.1.3使用CANtest软件发送数据时,总是提示发送数失败? (3)1.1.4电脑进入休眠之后唤醒,CANtest不需重新启动就能驱动CAN卡? (3)1.1.5使用CANtest软件启动通道时,提示启动通道失败或初始化通道失败。
(3)1.2原理问题 (3)1.2.1如何计算并选择自定义波特率的配置数值? (3)1.2.2如何识别多个同型号USBCAN卡在一台PC机上所分配的设备索引号? .. 41.2.3CAN总线为什么要有两个120欧姆的终端电阻? (6)1.2.4CAN总线错误状态的种类有哪些? (6)1.2.5USBCAN-II是否支持Win8平板上的OTG接口? (6)2. PCI接口CAN卡 (7)2.1软件问题 (7)2.1.1使用CANtest软件发送数据时,总是提示发送数失败? (7)2.1.2电脑进入休眠之后唤醒,CANtest不需重新启动就能驱动CAN卡? (7)2.1.3使用CANtest软件启动通道时,提示启动通道失败或初始化通道失败。
(7)2.2原理问题 (7)2.2.1如何计算并选择自定义波特率的配置数值? (7)2.2.2为什么PCI-5110 CAN板卡无法使用? (8)2.2.3PCI-9820I的DB9接头内的管脚定义是怎样的? (9)2.2.4系统中插入多张相同的PCI CAN板卡后,如何确定各各设备的索引号?.. 92.2.5CAN总线为什么要有两个120欧姆的终端电阻? (9)2.2.6CAN总线错误状态的种类有哪些? (9)2.2.7PCI-9820I的linux系统驱动为什么无法使用? (10)3. CPCI接口CAN卡 (11)3.1软件问题 (11)3.1.1使用CANtest软件发送数据时,总是提示发送数失败? (11)3.1.2电脑进入休眠之后唤醒,CANtest不需重新启动就能驱动CAN卡? (11)3.2原理问题 (11)3.2.1如何计算并选择自定义波特率的配置数值? (11)3.2.2CAN总线为什么要有两个120欧姆的终端电阻? (12)3.2.3CAN总线错误状态的种类有哪些? (12)4. PCIe接口CAN卡 (14)4.1软件问题 (14)4.1.1使用CANtest软件发送数据时,总是提示发送数失败? (14)4.1.2电脑进入休眠之后唤醒,CANtest不需重新启动就能驱动CAN卡? (14)4.2原理问题 (14)4.2.1如何计算并选择自定义波特率的配置数值? (14)4.2.2CAN总线为什么要有两个120欧姆的终端电阻? (15)4.2.3CAN总线错误状态的种类有哪些? (15)5. CANalyst-II总线分析仪 (17)5.1软件问题 (17)5.1.1CANalyst-II如何安装驱动? (17)5.2原理问题 (17)5.2.1如何计算并选择自定义波特率的配置数值? (17)5.2.2CAN总线为什么要有两个120欧姆的终端电阻? (18)5.2.3CAN总线错误状态的种类有哪些? (18)6. 以太网转CAN模块 (20)6.1软件问题 (20)6.1.1电脑进入休眠之后唤醒,CANtest不需重新启动就能驱动CAN卡? (20)6.2原理问题 (20)6.2.1如何计算并选择自定义波特率的配置数值? (20)6.2.2为什么使用CANET-200T的UDP通信方式会出现通信不稳定? (21)6.2.3CANET-100T如何恢复出产设置? (21)6.2.4CAN总线为什么要有两个120欧姆的终端电阻? (22)6.2.5CAN总线错误状态的种类有哪些? (22)6.2.6CANET-200T设备无法正常使用,怎么调通进行自发自收的测试? (22)7. Wifi转CAN模快 (26)7.1软件问题 (26)7.1.1电脑进入休眠之后唤醒,CANtest不需重新启动就能驱动CAN卡? (26)7.2原理问题 (26)7.2.1如何计算并选择自定义波特率的配置数值? (26)7.2.2CAN总线为什么要有两个120欧姆的终端电阻? (27)7.2.3CAN总线错误状态的种类有哪些? (27)8. 串口转CAN模快 (29)8.1软件问题 (29)8.2原理问题 (29)8.2.1如何计算并选择自定义波特率的配置数值? (29)8.2.2CAN总线为什么要有两个120欧姆的终端电阻? (30)8.2.3CAN总线错误状态的种类有哪些? (30)8.2.4CANCOM-100IE的串口RS485能不能带多个串口设备? (30)8.2.5CANCOM-100IE的有几种数据转换模式? (30)8.2.6CANCOM-100IE设备CAN口的波特率一定需要与串口波特率一样? (31)8.2.7CANCOM-100IE在格式转换模式下,串口往CAN发送不了1-7个字节数据?319. CAN隔离中继器集线器 (32)9.1软件问题 (32)9.1.1为什么无法对CAN485MB进行参数的配置? (32)9.2原理问题 (32)9.2.1CAN232MB能否同时实现对标准帧与扩展帧的转换? (32)9.2.2CAN485MB单个测试正常,接入RS-485的大网络中就无法使用? (32)9.2.3CANHub-AS4的电源接口与CAN接口之间的隔离电压值是多少? (32)9.2.4CANBridge智能网桥能否使用在CANOPEN网络中? (33)9.2.5如何计算并选择自定义波特率的配置数值? (33)9.2.6为什么CANHub-AS4替换原来的CANHub-S5设备后,系统无法使用?.339.2.7CAN总线为什么要有两个120欧姆的终端电阻? (34)9.2.8CAN总线错误状态的种类有哪些? (34)10. CAN光纤转换器 (36)10.1软件问题 (36)10.2原理问题 (36)10.2.1如何计算并选择自定义波特率的配置数值? (36)10.2.2为什么CANHub-AF1S1接入系统后通信不正常? (37)10.2.3CAN总线为什么要有两个120欧姆的终端电阻? (37)10.2.4CAN总线错误状态的种类有哪些? (37)10.2.5CANHUB-AF2S2使用在西门子消防控制主机上,CAN口设置波特率自适应,CAN口故障灯亮无法进行数据传输。
BOSCH+CAN规范V2.0

bus规范V2.0版本引言随着串行通讯进入更多应用领域在一些应用里原先的地址范围由11个识别位定义则这些应用就可以更好地由CAN来实现由29位定义有的用户不需要由扩展格式提供的识别符范围可以采用市场上可用的CAN仪器为了区别标准格式和扩展格式使用了CAN报文格式的第一个保留位因此仍然是有效的由于扩展格式已经定义这本CAN规范技术规范由两部分组成CAN的报文格式说明标准格式和扩展格式的说明要求CAN的仪器应兼容A部分或B部分只要没有用到扩展格式根据A部分或CAN旧版本设计的仪器可以和根据B部分设计的仪器相互间进行通讯介绍 (3)2报文传输 (6)3.1 帧类型 (6)3.1.1 数据帧 (6)3.1.2 远程帧 (9)3.1.3 错误帧 (10)3.1.4 过载帧 (11)3.1.5 帧间空间 (11)3.2 发送器/接收器的定义 (12)4编码 (13)6故障界定 (13)8介绍控制器局域网为串行通讯协议CAN的应用范围很广在汽车电子行业里传感器等等同时诸如车灯组用以代替接线配线装置可是比如电气特性和数据转换的解释CAN被细分为以下不同的层次the object layerthe transfer layerthe phyical layer¶ÔÏó²ãµÄ×÷Ó÷¶Î§°üÀ¨l 确定由实际要使用的传输层接收哪一个报文在这里传输层的作用主要是传送规则执行仲裁出错标定总线上什么时候开始发送新报文及什么时候开始接收报文位定时的一些普通功能也可以看作是传输层的一部分传输层的修改是受到限制的当然物理层对于所有的节点必须是相同的在选择物理层方面还是很自由的并定义CAN协议于周围各层当中所发挥的作用基本概念CAN具有以下的属性就自动将破坏的报文重新传输• 将节点的暂时性错误和永久性错误区分开来Layered Structure od a CAN node±¾¼¼Êõ¹æ·¶Ã»Óж¨ÒåÎïÀí²ã¶Ô·¢ËÍýÌåºÍÐźŵçƽ½øÐÐÓÅ»¯Ëü°Ñ½ÓÊÕµ½µÄ±¨ÎÄÌṩ¸ø¶ÔÏó²ã´«Êä²ã¸ºÔðλ¶¨Ê±¼°Í¬²½ÖٲôíÎó¼ì²âºÍ±ê¶¨l 对象层的功能是报文滤波以及状态和报文的处理所具有的意义Messagesµ«³¤¶ÈÊÜÏÞ信息路由 在CAN系统里比如l 系统灵活性就可以在CAN网络中直接添加节点报文的内容由识别符命名但解释数据的含义网络上所有的节点可以通过报文滤波确定是否应对该数据做出反应由于引入了报文滤波的概念并同时对此报文做出反应在CAN网络内或同时不被接收系统的数据连贯性是通过多播和错误处理的原理实现的Bit rateCAN的速度不同在一给定的系统里并且是固定的Prioritiesʶ±ð·û¶¨ÒåÒ»¾²Ì¬µÄ±¨ÎÄÓÅÏÈȨRemote Data RequestÐèÒªÊý¾ÝµÄ½Úµã¿ÉÒÔÇëÇóÁíÒ»½Úµã·¢ËÍÏàÓ¦µÄÊý¾ÝÖ¡IDENTIFIERMultimasterÈκε¥Ôª¶¼¿ÉÒÔ¿ªÊ¼´«Ëͱ¨ÎÄ仲裁任何单元都可以开始发送报文那么就会有总线访问冲突仲裁的机制确保信息和时间均不会损失数据帧优先于远程帧每一个发送器都对发送位的电平与被监控的总线电平进行比较则这个单元可以继续发送隐性显性见总线值必须退出发送状态SafetyCAN的每一个节点均采取了强有力的措施以进行错误检测错误检测必须采取以下措施发送器对发送位的电平与被监控的总线电平进行比较Performance of Error Detection- 检测到所有的全局错误- 检测到发送器所有的局部错误- 可以检测到一报文里多达5个任意分布的错误- 检测到一报文里长度低于15µÄÍ»·¢ÐÔ´íÎó- 检测到一报文里任一奇数个的错误对于没有被检测到的错误报文报文错误率* 4.7 * 10 –11Error Sinalling and Recovery Time´Ë±¨ÎÄ»áʧЧ²¢½«×Ô¶¯µØ¿ªÊ¼ÖØд«ËÍ´Ó¼ì²âµ½´íÎóµ½ÏÂÒ»±¨ÎĵĴ«ËÍ¿ªÊ¼ÎªÖ¹故障界定永久故障的节点会被关闭ConnectionsÀíÂÛÉϵ«ÓÉÓÚʵ¼ÊÉÏÊÜÑÓ³Ùʱ¼äÒÔ¼°/或者总线线路上电气负载的影响Single Channelͨ¹ý´ËͨµÀ¿ÉÒÔ»ñµÃÊý¾ÝµÄÔÙͬ²½ÐÅÏ¢ÓÐÐí¶àµÄ·½·¨¿ÉÒÔ²ÉÓüÓÉϽӵعâÀµȵȼ´Î´¶¨ÒåÎïÀí²ãBus value»ò显性隐性总线的结果值为在执行总线的时显性逻辑1代表等级比如光Acknowledgment¶ÔÓÚÁ¬¹áµÄ±¨ÎĶÔÓÚ²»Á¬¹áµÄ±¨ÎÄ睡眠模式可以将CAN器件设为睡眠模式以便停止内部活动及断开与总线驱动器的连接或系统内部状态而被唤醒虽然传输层要等待一段时间使系统振荡器稳定通过检查11个连续的的位总线在线内部运行已重新开始可以使用一特殊的唤醒报文最低等级的识别符rrr rrrd rrrr; r = d=- 数据帧- 远程帧请求发送具有同一识别符的数据帧任何单元检测到一总线错误就发出错误帧过载帧用以在先行的和后续的数据帧之间提供一附加的延时或远程帧帧起始控制场CRC场帧结尾 帧起始它标志数据帧和远程帧的起始显性只在总线空闲信号参见Interframe Spac eInterfram eSpac eRTRʶ±ð·ûµÄ³¤¶ÈΪ11位最低位是ID-0ID-10到ID-4¸ÃλÔÚÊý¾ÝÖ¡Àï±ØÐëΪÒþÐÔ控制场控制场由6个位组成所发送的保留位必须为显性隐性数据长度代码数据长度代码为4个位DATA LENGTH CODEd显性012345678d d d d d d d d rd d d d r r r r dd d r r d d r r dd r d r d r d r d其他的数值不允许使用它可以为0ÿ×Ö½Ú°üº¬ÁË8个位 CRC 场CRC 场包括CRC序列CRC DELIMITERÓÉÑ-»·ÈßÓàÂëÇóµÃµÄÖ¡¼ì²éÐòÁÐ×îÊÊÓÃÓÚλÊýµÍÓÚ127位的帧被除的多项式系数由无填充位流给定帧起始控制场假如有将此多项式被下面的多项式发生器除CRC SEQUENCE¿ÉÒÔʹÓÃ15位的位移寄存器CRC_RG ËüÓÉ´ÓÖ¡µÄÆðʼµ½Êý¾Ý³¡Ä©Î²¶¼ÓÉÎÞÌî³äµÄλÐòÁиø¶¨CRC SEQUENCE1414:113:0014:014:04599hexCRC序列开始或存在一个错误条件CRC_RG 包含有CRC 序列它包含一个单独的位°üº¬Ó¦´ð¼ä϶和应答界定符发送站发送两个位接收器就会在应答间隙期间向发送器发送一的位以示应答CRC Fi eldACK Sl o tACK D elimiterEnd of Fr ameACK F IELDËùÓнÓÊÕµ½Æ¥ÅäCRC 序列的站会在应答间隙期间用一的位写入发送器的位来作出回答ACK 界定符是ACK 场的第二个位隐性因此ACK SLOTµÄλËù°üΧCRC DELIMITERACKDELIMITERÕâ¸ö±êÖ¾ÐòÁÐÓÉ7个位组成作为某数据接收器的站通过其资源节点对不同的数据传送进行初始化设置帧起始控制场应答场与数据帧相反隐性它没有数据场可以标注为容许范围里0...8的任何数值Int erSp ac eRTR位RTRµÚÒ»¸ö³¡ÓÃ×÷Ϊ²»Í¬Õ¾ÌṩµÄ´íÎó±êÖ¾的叠加为了能正确地终止错误帧错误被动如果的接收器有本地错误的话总线的载荷不应为100%Ö÷¶¯´íÎó±êÖ¾和被动错误标志显性被动错误标志由6个连续的的位组成显性检测到错误条件的的站通过发送主动错误标志错误标志的形式破坏了从帧起始到CRC界定符的位填充规则所有其他的站由此检测到错误条件并与此同时开始发送错误标志位位可以在总线上监视这个顺序的总长度最小为6个位检测到错误条件的的站试图通过发送被动错误标志的站等待6个相同极性的连续位被动错误标志的发送就完成了ÒþÐÔ错误标志传送了以后隐性隐性然后就开始发送7位以上的位过载标志和过载界定符1. 接收器的内部条件显性由过载条件1而引发的过载帧只允许起始于所期望的间歇场的第一个位时间开始显性Á½¸ö¹ýÔØÖ¡¶¼»á²úÉúÏÔÐÔ¹ýÔرêÖ¾µÄËùÓÐÐÎʽºÍÖ÷¶¯´íÎó±êÖ¾µÄÒ»ÑùÒò´ËÏÔÐÔÔòÆäËûµÄ½Úµã½«²»ÄÜÕýÈ·µØ½âÊ͹ýÔرêÖ¾ÏÔÐÔÕâµÚ6个的位破坏了产生错误条件的位填充的规则过载界定符过载界定符包括8个的位过载标志被传送后显性隐性过渡形式总线上的每一个站完成了过载标志的发送隐性3.1.5 帧间空间 数据帧与其前面帧的隔离是通过帧间空间实现的数据帧错误帧过载帧与错误帧之前没有帧间空间帧间空间帧间空间包括间歇场如果的站已作为前一报文的发送器时总线空闲外SUSPEND TRANSMISSION´íÎ󱻶¯»òÕß´ËÕ¾ÒÑ×÷Ϊǰһ±¨ÎĵĽÓÊÕÆ÷´íÎ󱻶¯ÆäÖ¡¼ä¿Õ¼äÈçÏÂͼËùʾÒþÐÔ间歇期间唯一要做的是标示一个过载条件时间任何等待发送信息的站就会访问总线有报文被挂起其传送起始于间歇之后的第一个位显性挂起传送µÄÕ¾·¢Ëͱ¨ÎĺóÒþÐÔÈç¹ûÓë´ËͬʱÁíÒ»Õ¾¿ªÊ¼·¢Ëͱ¨ÎÄ3.2 发送器/接收器的定义发送器 产生报文的单元被称之为报文的ARBITRATIONRECEIVERÔòÕâÒ»µ¥Ôª¾Í±»³Æ֮Ϊ±¨ÎĵÄ报文校验校验报文是否有效的时间点发送器Ôò´Ë±¨ÎĶÔÓÚ·¢ËÍÆ÷ÓÐЧÔò±¨ÎÄ»á¸ù¾ÝÓÅÏÈȨ×Ô¶¯ÖØ·¢ÖØд«Êä±ØÐëÔÚ×ÜÏß¿ÕÏÐʱÆô¶¯如果直到一最后的位均没有错误5帧的部分仲裁场数据场以及CRC序列无论何时便自动在位流里插入一补码位CRC界定符的剩余位场形式相同错误帧和过载帧的形式也相同其报文里的位流根据之方法来编码在整个位时间里显性要么为错误处理6.1 错误检测有以下5种不同的错误类型• 位错误站单元在发送位的同时也对总线进行监视则在此位时间里检测到一个位错误ARBITRATION FIELDACK SLOTλµÄÇé¿öÊÇÀýÍâµÄ此时显性不会发出位错误显性也不视为位错误出现了第6个连续相同的位电平时• CRC错误CRC序列包括发送器的CRC计算结果如果计算结果与接收到CRC序列的结果不相符CRC ERRORÔò¼ì²âµ½Ò»¸öÐÎʽ´íÎóACK SLOTACKNOWLEDGMENT ERROR¶ÔÓڵĽڵãÖ÷¶¯´íÎó±êÖ¾¶ÔÓڵĽڵ㱻¶¯´íÎó±êÖ¾Õ¾¼ì²âµ½ÎÞÂÛÊÇλ´íÎóÐÎʽ´íÎóÕâ¸öÕ¾»áÔÚÏÂһλʱ·¢³ö´íÎó±êÖ¾ÐÅÏ¢´íÎó±êÖ¾µÄ·¢ËÍ¿ªÊ¼ÓÚACK½ç¶¨·ûÖ®ºóµÄλ故障界定至于故障界定•错误被动总线关闭错误主动µÄµ¥Ôª²»ÔÊÐí·¢ËÍÖ÷¶¯´íÎó±êÖ¾´íÎ󱻶¯¶øÇÒµ¥Ôª½«ÔÚÔ¤ÉèÏÂÒ»¸ö·¢ËÍ֮ǰ´¦Óڵȴý״̬¼ûµÄµ¥Ôª²»ÔÊÐíÔÚ×ÜÏßÉÏÓÐÈκεÄÓ°Ïì• 发送错误计数• 接收错误计数这些计数按以下规则改变可能要用到的规则不只一个接收错误计数就加1½ÓÊÕ´íÎó¼ÆÊýÆ÷Öµ²»¼Ó1ÏÔÐÔ½ÓÊÕ´íÎó¼ÆÊýÖµ¼Ó8·¢ËÍ´íÎó¼ÆÊýÆ÷Öµ¼Ó8发送器为注显性显性发送器因为填充错误而发送错误标志引起填充错误是由于填充位隐性但是却被监视为发送错误计数器值不改变如果发送器检测到位错误 5. 当发送主动错误标志或过载标志时位错误6. 在发送主动错误标志任何节点最多容许7个连续的λÿһ·¢ËÍÆ÷½«ËüÃǵķ¢ËÍ´íÎó¼ÆÊýÖµ¼Ó8当检测到第14个连续的位后显性在每一附加的8个连续位顺序之后得到应答及直到帧末尾结束没有错误除非已经是0Ôڳɹ¦µØ½ÓÊÕµ½±¨Îĺ󼰳ɹ¦µØ·¢ËÍÁËÓ¦´ðλ如果接收错误计数器值是0如果大于1279. 当发送错误计数器值等于或超过128时节点为错误被动10.当发送错误计数器值大于或等于256时总线关闭11. 当发送错误计数器值和接收错误计数器值都小于或等于127时错误被动错误主动12. 在总线监视到128次出现11个连续位之后总线关闭错误主动不再是 备注最好能够采取措施测试这个条件Æð¶¯/睡眠以及如果这个节点发送一些报文如此检测到错误并重复报文节点会变为总线关闭8标称位时间标称位时间 = 1 /标称位速率可以把标称位时间划分成了几个不重叠时间的片段同步段 传播时间段 相位缓冲段1相位缓冲段2位时间如下图所示SYN C_SEG PR OP_SEG PH ASE_SE G1PH AS E_SEG2SYNC SEGÕâÒ»¶ÎÄÚÒªÓÐÒ»¸öÌø±äÑØPROP SEG它是总线上输入比较器延时和输出驱动器延时总和的两倍相位缓冲段2ÕâÁ½¸ö¶Î¿ÉÒÔͨ¹ýÖØÐÂͬ²½¼Ó³¤»òËõ¶ÌSAMPLE POINT²É¼¯µãλÓÚÏàλ»º³å¶Î1之后INFORMATION PROCESS TIME²É¼¯µãÓÃÓÚ¼ÆËãºóÐøλµÄλµçƽTIME QUANTUM´æÔÚÓÐÒ»¸ö¿É±à³ÌµÄÔ¤±ÈÀýÒò×Ó32的整数时间份额的长度为TIME QUANTUM MINIMUM TIME QUANTUM m为预比例因子Length of Time SegmentsSYNC_SEG传播段的长度可设置为1…»º³å¶Î1 的长度可设置为1…Ïàλ»º³å¶Î2的长度为阶段缓冲段1和信息处理时间之间的最大值一个位时间总的的时间份额值可以设置在8同步 硬同步内部的位时间从同步段重新开始硬同步强迫由于硬同步引起的沿处于重新开始的位时间同步段之内RESYHCHRONIZATION JUMP WIDTHʹÏàλ»º³å¶Î1增长相位缓冲段加长或缩短的数量有一个上限重新同步跳转宽度应设置于1和最小值之间后续位有固定的最大数值这个属性提供了总线单元在帧期间重新和位流同步的可能性这里有一个属性只有后续位的一固定最大值才具有相同的数值可用于重新同步的两个过渡过程之间的最大长度为29个位时间一个沿的相位误差一个沿的相位误差由相关于同步段的沿的位置给出相位误差定义如下SYNC_SEGSAMPLE POINTSAMPLE POINTÖØÐÂͬ²½ºÍÓ²¼þͬ²½µÄ×÷ÓÃÏàͬ• 如果相位误差为正增长的范围为与重新同步跳转宽度相等的值则相位缓冲段2被缩短同步的原则硬同步和重新同步都是同步的两种形式1. 在一个位时间里只允许一个同步才把沿用作于同步有一转变到的沿硬同步都会被执行隐性显性则其他符合规则1和规则2的所有从转化为的沿可以用作为重新同步即隐性显性此沿具有正的相位误差9 增加CAN振荡器容差这章介绍CAN协议的向上兼容的修改有必要作以下修改以便向上兼容现有的CAN规范 如果CAN节点在间歇的第三位采集到一显性位2Ôò´Ëλ±»½âÊÍΪ֡µÄÆðʼλ¶ø²»ÊÇÊ×ÏÈ·¢ËÍÖ¡µÄÆðʼλ»ò³ÉΪһ½ÓÊÕÆ÷如果节点在错误界定符或过载界定符的第八个位采集到一显性位而不是错误帧4Ϊ·ûºÏÏÖÓеĹ淶56CAN才发送帧起始位 这个修改允许振荡器最大为1.58%的容差为了满足CAN协议的整个总线速度范围只要符合以下的要求8ËùÓеĿØÖÆÆ÷±ØÐëʹÓþ§Õñ具有最高振荡准确度要求的芯片只有在所有的节点使用增强型的CAN协议时才能使用陶瓷谐振器简介 (19)2 基本概念 (19)3报文滤波 (31)5 报文校验 (31)6错误处理 (31)7.1 错误检测 (31)7.2 错误标定 (32)8位定时要求 (33)简介控制器局域网CAN为串行通讯协议CAN的应用范围很广在汽车电子行业里传感器等等同时诸如车灯组用以代替接线配线装置可是比如电气特性和数据转换的解释根据ISO/OSI参考模型• 数据链路层- 逻辑链路控制子层(LLC)- 媒体访问控制子层 物理层注数据链路层的LLC子层和MAC子层的服务及功能分别被解释为和• 为远程数据请求以及数据传输提供服务• 为恢复管理和过载通知提供手段定义对象处理较为自由也就是控制帧结构错误检测故障界定均在MAC 子层里确定理所当然物理层的作用是在不同节点之间根据所有的电气属性进行位的实际传输尽管如此这本技术规范的目的是定义数据链路层中MAC子层和一小部分LLC子层所具有的意义• 报文的优先权• 保证延迟时间• 设置灵活• 时间同步的多点接收• 系统内数据的连贯性• 多主机• 错误检测和错误标定• 只要总线一处于空闲并且可以自动关闭由OSI参考模型分层CAN结构的错误的节点因此涉及到位时间同步的解释以便允许根据它们的应用• MAC子层是CAN协议的核心并接收来自LLC子层的报文仲裁错误检测和标定ÒÔ±ã°ÑÓÀ¾Ã¹ÊÕϺͶÌʱÈŶ¯Çø±ð¿ªÀ´¹ýÔØ֪ͨData LinkLay erPhys ica l Lay erLL CMA CAcceptan ce Fi ltering Over load N otification Recove ry Ma nagem entData E ncapsul ation /Decap sul ation Fr ame C oding(S tuffing, Des tuffing)Medium A ccess M anag emen t Error D etection E r ror Sig nalling Acknow ledgmentSe rializa tion / De se rializa tionBit E ncoding/Decoding Bit T iming Synchro nizationDriver/Recei ver C haracteristicsFau ltConfinem en tBu s Fa ilure Mana gem en tSuperviso rLL C =Logical L ink C ontrolMAC = M edium Access C ontrol此技术规范的目的是为了定义数据链路层及定义CAN 协议在周围各层中所发挥的作用Messagesµ«³¤¶ÈÊÜÏÞ信息路由 在CAN 系统里比如l系统灵活性可以在CAN 网络中直接添加节点±¨ÎĵÄÄÚÈÝÓÉʶ±ð·ûÃüÃûµ«½âÊÍÊý¾ÝµÄº¬ÒåÍøÂçÉÏËùÓеĽڵã¿ÉÒÔͨ¹ý±¨ÎÄÂ˲¨È·¶¨ÊÇ·ñÓ¦¶Ô¸ÃÊý¾Ý×ö³ö·´Ó¦ÓÉÓÚÒýÈëÁ˱¨ÎÄÂ˲¨µÄ¸ÅÄî²¢Óë´Ëͬʱ¶Ô´Ë±¨ÎÄ×ö³ö·´Ó¦Ó¦È·±£±¨ÎÄÔÚCAN网络里同时被所有的节点接收系统的数据连贯性是通过多播和错误处理的原理实现的Bit rateCAN的速度不同在一个给定的系统里并且是固定的Prioritiesʶ±ð·û¶¨ÒåÒ»¸ö¾²Ì¬µÄ±¨ÎÄÓÅÏÈȨRemote Data RequestÐèÒªÊý¾ÝµÄ½Úµã¿ÉÒÔÇëÇóÁíÒ»½Úµã·¢ËÍÏàÓ¦µÄÊý¾ÝÖ¡多主机任何单元都可以开始传送报文仲裁任何单元都可以开始发送报文那么就会有总线访问冲突仲裁的机制确保了报文和时间均不损失数据帧优先于远程帧每一个发送器都对发送位的电平与被监控的总线电平进行比较则这个单元可以继续发送隐性显性见总线值必须退出发送状态SafetyCAN的每一个节点均采取了强有力的措施以便于错误检测错误检测必须采取以下措施发送器对发送位的电平与被监控的总线电平进行比较错误检测的机制要具有以下的属性位其剩余的错误可能性概率低于任何检测到错误的节点会标志出损坏的报文如果不再出现错误的话恢复时间最多为31个位的时间Fault Confinement¹ÊÕϵĽڵã»á±»¹Ø±ÕConnectionsÀíÂÛÉϵ«ÓÉÓÚʵ¼ÊÉÏÊÜÑÓ³Ùʱ¼äÒÔ¼°/或者总线线路上电气负载的影响单通道通过此通道可以获得数据的再同步报文有许多的方法可以采用加上接地光缆等等总线值或显性隐性总线的结果值为在总线的执行时显性逻辑1代表等级比如灯光Acknowledgment¶ÔÓÚÁ¬¹áµÄ±¨ÎĶÔÓÚ²»Á¬¹áµÄ±¨ÎÄ睡眠模式可以将CAN器件设为睡眠模式以便停止内部活动及断开与总线驱动器的连接或系统内部状态而被唤醒虽然MAC子层要等待一段时间使振荡器稳定通过检查11个连续的的位总线在线内部运行已重新开始Oscillator ToleranceÓйظü¶à׼ȷµÄÆÀ¹ÀDais, S; Chapman, M;“Impact of Bit Representation on Transport Capacity and Clock Accuracy in Serial Data Streams”, SAE Technical Paper Series 890532, Multiplexing in Automobiles SP-773 March 1989为了满足CAN协议的整个总线速度范围3²»Í¬Ö®´¦ÎªÊ¶±ð·û³¡µÄ³¤¶È²»Í¬¶øº¬ÓÐ29位识别符的帧为扩展帧数据帧远程帧请求发送具有同一识别符的数据帧任何单元检测到总线错误就发出错误帧过载帧用以在先行的和后续的数据帧之间提供一附加的延时它们用一个帧间空间与前面的帧分隔Data Frame帧起始Arbitration Frame Control Frame Data Frame CRC Frame ACK Frame End of FrameDATA FRAME帧起始帧起始标志数据帧和远程帧的起始显性只在总线空闲信号参见- 标准格式里识别符位由ID-28…ID-18Öٲó¡°üÀ¨29位识别符IDE位其识别符由ID-28... ID-0Ç°°æ±¾CAN规范1.0-1.2的保留位r1现表示为IDE Bitr 0R T R标准格式识别符的长度为11位Base ID最低位是ID-18ID-28 - ID-22扩展格式和标准格式形成对比其格式包含两个部分18位扩展ID基本ID 包括11位它相当于标准识别符的格式扩展IDËü°´ID-17到ID-0顺序发送识别符其后是RTR 位标准格式以及扩展格式远程发送请求位RTR位在数据帧里必须为隐性基本ID 首先发送扩展ID 的发送位于SRR 位之后扩展格式替代远程请求位SRR是一隐性位因此代替标准帧的RTR 位标准帧与扩展帧的冲突是通过标准帧优先于扩展帧这一途径得以解决的参见以下的扩展格式识别符扩展位- 扩展格式的仲裁场 - 标准格式的控制场 标准格式里的IDE 位为隐性±ê×¼¸ñʽÒÔ¼°À©Õ¹¸ñʽ±ê×¼¸ñʽµÄ¿ØÖƳ¡¸ñʽºÍÀ©Õ¹¸ñʽµÄ²»Í¬IDE 位扩展格式里的帧包括数据长度代码和两个保留位其保留位必须发送为显性显性隐性Standard F ormat and ExtendedFormat数据长度代码数据长度代码指示了数据场里的字节数量它在控制场里发送d显性012345678d d d d d d d d rd d d d r r r r dd d r r d d r r dd r d r d r d r d数据帧{0,1,....,7,8}数据场数据场由数据帧里的发送数据组成8个字节首先发送MSB±ê×¼¸ñʽÒÔ¼°À©Õ¹¸ñʽCRC SEQUENCECRC DELIMITERData or Co ntrol Fie ldCRC S equenceCRC Del im iterAc k Fie ldCRC F IELD±ê×¼¸ñʽÒÔ¼°À©Õ¹¸ñʽBCH码被除的多项式系数由无填充位流给定帧起始控制场假如有将此多项式被下面的多项式发生器除CRC序列可以使用15位的位移寄存器如果NXTBIT指示位流的下一位CRC序列的计算如下CRC_RG 包含有CRC 顺序标准格式以及扩展格式它包含一个单独的位±ê×¼¸ñʽÒÔ¼°À©Õ¹¸ñʽ°üº¬Ó¦´ð¼ä϶和应答界定符应答场隐性当接收器正确地接收到有效的报文ACK SLOT·¢ËÍACK 信号位以示应答CRC Fi eldACK Sl o tACK D elimiterEnd of Fr ameACK F IELDCRC SEQUENCEACK SLOTµÄλдÈë·¢ËÍÆ÷µÄλÀ´×÷³ö»Ø´ð²¢ÇÒÊÇÒ»¸ö±ØÐëΪµÄλӦ´ð¼ä϶被两个的位所包围CRC DELIMITERACK DELIMITER±ê×¼¸ñʽÒÔ¼°À©Õ¹¸ñʽÕâ¸ö±êÖ¾ÐòÁÐÓÉ7个的位组成作为某数据接收器的站可以初始化通过其资源节点传送不同的数据而且都由6个不同的位场组成仲裁场CRC 场帧结尾远程帧的RTR 位是的数据长度代码的数值是不受制约的Int er Sp aceRTR位RTRµÚÒ»¸ö³¡ÓÃÊDz»Í¬Õ¾ÌṩµÄ´íÎó±êÖ¾的叠加为了能正确地终止错误帧错误被动如果的接收器有局部错误的话总线的载荷不应为100%Ö÷¶¯µÄ´íÎó±êÖ¾ºÍ±»¶¯µÄ´íÎó±êÖ¾ÏÔÐÔ2. 被动的错误标志由6个连续的的位组成显性检测到错误条件的的站通过发送主动错误标志指示错误参见所有其他的站由此检测到错误条件并与此同时开始发送错误标志位位可以在总线上监视这个序列的总长度最小为6个位检测到错误条件的的站试图通过发送被动错误标志指示错误错误被动这6个位处于被动错误标志的开始被动错误标志的发送就完成了隐性错误标志传送了以后隐性隐性然后就开始发送其余7个位过载标志和过载界定符这三种情况都会引发过载标志的传送此接收器对于下一数据帧或远程帧需要有一延时显性3. 如果CAN节点在错误界定符或过载界定符的第8位采样到一个显性位不是错误帧根据过载情况1而引发的过载帧只允许起始于所期望的间歇的第一个位时间显性通常为了延时下一个数据帧或远程帧Overload FlagÏÔÐÔ¹ýÔرêÖ¾µÄËùÓÐÐÎʽºÍÖ÷¶¯´íÎó±êÖ¾µÄÒ»ÑùÒò´ËÈç¹ûÓеĽڵãÔÚ¼äЪµÄµÚ3个位期间检测到位备注如下显性则其他的节点将不能正确地解释过载标志显性这第6个的位破坏了产生错误条件的位填充的规则过载界定符 过载界定符包括8个的位过载标志被传送后显性隐性此时并开始同时发送其余7个位或远程帧数据帧错误帧过载帧与错误帧之前没有帧间空间帧间空间 帧间空间包括间歇如果的站已作为前一报文的发送器时总线空闲外SUSPEND TRANSMISSION´íÎ󱻶¯ÆäÖ¡¼ä¿Õ¼äÈçÏÂͼËùʾ´íÎóÖ÷¶¯ÆäÖ¡¼ä¿Õ¼äÈçÏÂͼËùʾIntermissionÒþÐÔ间歇期间唯一要做的是标示一个过载条件如果CAN节点有一报文等待发送并且节点在间歇的第三位采集到一显性位并从下一个位开始发送报文的识别符首位总线空闲 总线空闲的时间是任意的任何等待发送报文的站就会访问总线有报文被挂起其传送起始于间歇之后的第一个位显性挂起传送 的站发送报文后隐性如果与此同时另一站开始发送报文3.3 关于帧格式的符合性标准格式相当于在CAN1.2规范中描述的数据/远程帧为了使控制器的设计相对地简单比如仪器必须无条件地支持标准格式这些属性与3.1和3.2定义的帧格式有关- 每一新的控制器支持标准格式- 每一新的控制器可以接收扩展格式的报文可是3.4 发送器/接收器的定义发送器 产生报文的单元被称之为报文的ARBITRATIONReceiverÔòÕâÒ»µ¥Ôª¾Í±»³Æ֮Ϊ±¨ÎĵÄ报文滤波报文滤波取决于整个识别符不考虑可以选择多组的识别符如果使用屏蔽寄存器即屏蔽寄存器的长度可以包含整个识别符5 报文校验校验报文有效的时间点发送器 如果直到帧的末尾位均没有错误如果报文破损为了能够和其他报文竞争总线接收器 如果直到一最后的位均没有错误帧末尾最后的位被置于状态显性参见7.1章节编码位流编码 帧的部分仲裁场数据场以及CRC序列无论何时便自动在位流里插入一补充位CRC界定符的剩余位场形式固定错误帧和过载帧的形式也固定其报文里的位流根据之方法来编码在整个位时间里显性要么为错误处理7.1 错误检测有以下5种不同的错误类型• 位错误 单元在发送位的同时也对总线进行监视则在此位时间里检测到一个位错误ARBITRATION FIELD ACK SLOT λµÄÇé¿öÊÇÀýÍâµÄ此时显性不会发出位错误显性也不视为位错误Struff Error³öÏÖÁ˵Ú6个连续相同的位电平时• CRC错误 CRC序列包括发送器的CRC计算结果如果计算结果与接收到CRC序列的结果不相符• 形式错误 当一个固定形式的位场含有1个或多个非法位(备注Acknowledgment ErrorACK SLOT。
CANopen协议介绍-周立功

w w w. z l g m c u . c o m
CANopen 协议介绍
流行欧洲的 CAN-bus 高层协议
1Байду номын сангаас
广州周立功单片机发展有限公司
w w w. z l g m c u . c o m
目录
1、介绍 ..................................................................................................................................................................... 1 2、CAL 协议............................................................................................................................................................ 2 3、CANopen ............................................................................................................................................................. 3
3.1 对象字典 OD
对象字典(OD:Object Dictionary)是一个有序的对象组;每个对象采用一个 16 位的索引值来寻址, 为了允许访问数据结构中的单个元素,同时定义了一个 8 位的子索引,对象字典的结构参照表 3-1。不要被 对象字典中索引值低于 0x0FFF 的‘data types’项所迷惑,它们仅仅是一些数据类型定义。一个节点的对 象字典的有关范围在 0x1000 到 0x9FFF 之间。
周立功CAN总线设计详解工具

CAN-bus 专 用 芯 片
P87C591 集成 PeliCAN 控制器的增强型 8 位单片机 LPC2119/2129 集成 2 路 CAN 控制器的 ARM 芯片 LPC2219/2229 集成 6 路 CAN 控制器的 ARM 芯片 SJA1000 独立 CAN 控制器 PCA82C250/251 通用 CAN 收发器 TJA1050/1040/1041 高速 CAN 收发器 TJA1054 容错的 CAN 收发器 TJA1020 标准 LIN 收发器 各类 DC/DC 电源模块 软件源码:SJA1000 BasicCAN 模块 & PeliCAN 模块、P87C591 PeliCAN 模块; 应用协议方案:DeviceNET & CANopen
广州周立功单片机发展有限公司
w w w. z l g m c u . c o m
CAN-bus 现场总线基础方案 工具篇
广州周立功单片机发展有限公司 2004 年 1 月 10 日
-1-
广州周立功单片机发展有限公司
w w w. z l g m c u . c o m
前言
2003 年 5 月 6 日,PHILIPS 正式授权:广州周立功单片机发展有限公司为汽车电子产品线(含 CAN-bus、汽 车防盗器 RFID、汽车传感器)中国地区代理商。 依靠强大的专业开发团队、PHILIPS 半导体的领先技术与国际 CiA 协会、ODVA 协会的支持,我们致力于发展中 国的 CAN 产品与应用事业。至现在,我们已成功开发出一系列 CAN-bus 教学、接口、工具、应用产品,能够为客户 提供从“芯片” 、 “工具” 、 “模块” 、 “方案”等各个方面的服务,涉及 CAN-bus 多个行业与应用领域。我们自主开发 的数个型号产品已经领先于国外技术水平,并已投入广泛的实际应用。
周立功CAN控制器SJA1000的控制模块BCAN

状态
SR.4 SR.3
SR.2
SR.1
SR.0
IR.7
IR.6
IR.5
IR.4 中断
IR.3
IR.2
IR.1
IR.0 验收代码 AC.7 0
验收屏蔽 AM.7 0
BTR0.7
BTR0.6
BTR0.5
BTR0.4 总线定时0
BTR0.3
BTR0.2
BTR0.1
BTR0.0
BTR1.7
BTR1.6
BTR1.5
2.3.3 各寄存器功能介绍 下面根据实际应用情况 具体介绍 BasicCAN 模式下 SJA1000 内部各寄存器的功能
2.3.3.1 控制寄存器(CR) 控制寄存器位于 SJA1000 寄存器区的 0 地址
如表 4 所示 表 4 控制寄存器各位的说明 CAN 地址 0
用于设置 SJA1000 访问模式和各种中断
软件置位控制寄存器中的复位请求位 或总线关闭 后 内部寄存器的配置
表 3 内部寄存器在复位模式下的配置 BasicCAN 模式
寄存器
位
CR.7
符号
保留
名称
硬件复位 0
值 软件或总线关闭 复位CR.0 0
CR.6
保留
×
×
CR.5
保留
1
1
控制
CR.4 CR.3
OIE
溢出中断使能
EIE
错误中断使能
×
×
×
×
完全兼容 PCA82C200 的基础上 增加了一种新的工作模式 PeliCAN SJA1000 完全支持具有很多新特性的 CAN 2.0B 协议 SJA1000 的工作模式通过其内部的时钟分频寄存器 CDR 中的 CAN 模式位来选择 硬 件复位时默认模式是 BasicCAN 工作模式
广州周立功单片机 带 CAN 控制器的单片 8 位微控制器-P8xC591 说明书

带CAN控制器的单片8位微控制器-P8xC591 1. 特性 1.1 P8xC591的80C51相关特性 Ÿ 全静态80C51中央处理单元,可提供OTP,ROM和无ROM型Ÿ 16K字节内部程序存储器,可外部扩展到64K字节Ÿ 512字节片内数据RAM,可外部扩展到64K字节Ÿ 3个16位定时/计数器T0,T1(标准80C51)和附加的T2(捕获&比较)Ÿ 带6路模拟输入的10位ADC,可选择快速8位ADCŸ 2个8位分辨率的脉宽调制输出(PWM)Ÿ 作为标准80C51引脚时有32个I/O口Ÿ 带字节方式主和从功能的I2C总线串行I/O口Ÿ 片内看门狗定时器T3Ÿ 扩展的温度范围:-40~+85℃Ÿ 加速指令周期500ns@12MHzŸ 操作电压范围:5V5%Ÿ 保密位:-ROM(2位)-OTP(3位)Ÿ 32字节加密阵列Ÿ 4个中断优先级,15个中断源Ÿ 全双工增强型UART,带有可编程波特率发生器Ÿ 电源控制模式―时钟可停止和恢复―空闲模式―掉电模式Ÿ 空闲模式中ADC有效Ÿ 双DPTRŸ 可禁止ALE实现低EMIŸ 可编程I/O口(准双向、推挽、高阻和开漏)Ÿ 掉电模式可通过外部中断唤醒Ÿ 软件复位(AUXR1.5)Ÿ 复位脚低有效Ÿ 上电检测复位Ÿ Once模式1.2 P8xC591与CAN相关的特性 Ÿ CAN2.0B控制器,支持11位标准和29位扩展标识符Ÿ 8MHz时钟可实现1Mbit/sCAN总线速率Ÿ 64字节接收FIFOŸ 13字节发送缓冲区Ÿ 增强型PeliCAN内核(取自SJA1000独立CAN2.0B控制器)1.2.1 PeliCAN特性 Ÿ 4个独立可配置的筛选器(验收滤波器)Ÿ 每个筛选器有32位区分符-32位Match-32位MaskŸ 每筛选器的32位Mask允许唯一的组寻址Ÿ 更高层的协议支持标准CAN格式:-最多4个11位ID筛选器可筛选两个数据字节-即数据流可通过CAN ID和数据字节内容进行筛选Ÿ 最多8个11位ID筛选器其中半数可筛选第一个数据字节Ÿ 所有筛选器都可“change on the fly”Ÿ 只听模式,自检测模式Ÿ 错误代码捕获,仲裁丢失捕获,可读的错误计数器2 概述 PP8xC591是一个单片8位高性能微控制器,具有片内CAN控制器,从80C51微控制器家族派生而来。
基于周立功PCI9820的CAN卡组态王驱动协议V2.2

基于周立功PCI-9820I板卡的组态王CAN通讯协议V2.2 2011-03-151.协议编制目的本协议是基于PCI-9820I通讯卡而编写的CAN通讯协议。
2.报文类型:2.1 服务数据报文SDO(Service Data Object)SDO报文通过索引和子索引来传输数据,可批量下载和上传数据。
SDO报文发送方式采用一对一或主从应答方式来传输数据。
2.2 过程数据报文PDO(Process Data Object)PDO报文用来传输实时数据,数据从一个创建者传到一个或多个接收者。
PDO报文发送方式包括定时触发、事件触发和请求应答触发。
3.CAN帧格式3.1 帧结构一个CAN帧包含13个字节,内容如下:◆帧信息:长度1字节,用于标识该CAN帧的一些信息,如类型、长度等。
FF:标准帧和扩展帧的标识,1为扩展帧,0为标准帧。
本驱动固定为扩展帧。
RTR:远程帧和数据帧的标识,1为远程帧(用于请求数据),0为数据帧(用于数据传输)。
保留:值为0,不可写入1。
D3~D0:标识该CAN帧的数据长度。
◆帧ID:长度4字节,标准帧有效位是11位,扩展帧有效位是29位。
内容如下:节点号(低字节) 类型索引备用(高字节)注意:1.本协议采用扩展帧格式。
2.本协议中帧ID采用高端对齐的方式,如果驱动程序接收的帧ID是低端对齐的话,需将帧ID左移三位后,再进行处理。
例如:计算机收到的扩展帧的帧ID(低端对齐)为0x2468ACE;实际处理时需将此帧ID左移三位(高端对齐)变成0x12345670。
即表示节点号为12H,类型为34H,索引为56H,备用为70H。
1-127(1-7f)|3.2 帧ID描述3.2.1 节点号节点号指下位机站点号,范围1-127。
3.2.2 帧类型帧类型描述了CAN帧的类别,定义如下:◆开关量PDO帧:用来传输开关量数据,一个开关量PDO帧可以传输最多64个数字I/O值。
◆模拟量PDO帧:用来传输模拟量数据,一个模拟量PDO帧可以传输最多4个16位的AD值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
-4– 文档编号:20030810_1
广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925
CAN-bus 介绍
概述
CAN-bus(Controller Area Network)即控制器局域网,是国际上应用最广泛的现场总线之一。 起先,CAN-bus 被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置 ECU 之间交换信息, 形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入 CAN 控制装置。
高层协议
CAN 高层协议························································································· 8 CANopen 协议 ························································································ 9 DeviceNET 协议 ···················································································· 10 ZLGCAN 系列产品介绍 ············································································ 12
我们立志成为国内第一流的 CAN-bus 开发、服务、应用的团队。关于 CAN-bus 的详细应用,请浏览技术支持 专业主页:
或进入 CAN-bus 技术讨论园地:
http:///club/bbs/bbsView.asp 我们的服务邮箱:
简介:
1983 年,德国 BOSCH 开始研究新一代的汽车总线;1986 年,第一颗 CAN-bus 芯片交付应用; 1991 年,由德国 BOSCH 公司发布 CAN 2.0 规范;1993 年,国际标准 ISO11898 正式出版;1995 年,ISO11898 进行了扩展,从而能够支持 29 位 CAN 标识符。2000 年,市场销售超过 1 亿个 CAN 器件。
CAN-bus 资料
/philips/can/can_about.asp
-1– 文档编号:20030810_1
广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925
BOSCH CAN 2.0 规范
广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925
CAN-bus 现场总线基础方案 通讯篇
广州周立功单片机发展有限公司 2004 年 3 月 30 日
-1-
广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925
广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925
CAN-bus 转 换 器 CANrep-A 智能全隔离 CAN 中继器 CANrep-B 隔离 CAN 中继器 CAN485 智能 CAN 转换卡 CAN232B 智能 CAN 转换卡
通用协议
自定通讯协议 ·························································································· 4 HiLon 协议 A ·························································································· 5 HiLon 协议 B ·························································································· 6 ModBus 协议 ·························································································· 7
目录
CAN-bus 介绍························································································· 1 CAN 2.0B 规范 ······················································································· 2 CAN 2.0B 协议帧格式 ··············································································· 3
CAN-bus 专 用 芯 片 P87C591 集成 PeliCAN 控制器的增强型 8 位单片机 LPC2119/2129/2192 集成 2 路 CAN 控制器的 ARM 芯片 LPC2219/2292/2294 集成 4 路 CAN 控制器的 ARM 芯片 SJA1000 独立 CAN 控制器 PCA82C250/251 通用 CAN 收发器 TJA1050/1040/1041 高速 CAN 收发器 TJA1054 容错的 CAN 收发器 TJA1020 标准 LIN 收发器 各类 DC/DC 电源模块 软件源码:SJA1000 BasicCAN 模块 & PeliCAN 模块、P87C591 PeliCAN 模块; 应用协议方案:DeviceNET & CANopen
前言
2003 年 5 月 6 日,PHILIPS 正式授权:广州周立功单片机发展有限公司为汽车电子产品线(含 CAN-bus、汽车防盗 器 RFID、汽车传感器)中国地区代理商。
依靠强大的专业开发团队、PHILIPS 半导体的领先技术与国际 CiA 协会、ODVA 协会的支持,我们致力于发展中 国的 CAN 产品与应用事业。至现在,我们已成功开发出一系列 CAN-bus 教学、接口、工具、应用产品,能够为客户 提供从“芯片”、“工具”、“模块”、“方案”等各个方面的服务,涉及 CAN-bus 多个行业与应用领域。我们自主开发 的数个型号产品已经领先于国外技术水平,并已投入广泛的实际应用。
CAN 对象层(the object layer) CAN 传输层(the transfer layer) 物理层(the phyical layer) 对象层和传输层包括所有由 ISO/OSI 模型定义的数据链路层的服务和功能。定义对象处理较为灵 活。对象层的作用范围包括: 查找被发送的报文。 确定由实际要使用的传输层接收哪一个报文。 为应用层相关硬件提供接口。 传输层的作用主要是传送规则,也就是控制帧结构、执行仲裁、错误检测、出错标定、故障界定。 总线上什么时候开始发送新报文及什么时候开始接收报文,均在传输层里确定。位定时的一些普通功能也 可以看作是传输层的一部分。理所当然,传输层的修改是受到限制的。 物理层的作用是在不同节点之间根据所有的电气属性进行位信息的实际传输。当然,同一网络内, 物理层对于所有的节点必须是相同的。尽管如此,在选择物理层方面还是很自由的。 作为通用、有效、可靠及经济的平台,CAN-bus 已经广泛地受到了欢迎。它可以使用于汽车系统、 机械、技术设备和工业自动化里几乎任何类型的数据通信。 CAN 2.0 规范没有规定媒体的连接单元以及其驻留媒体,也没有规定应用层。因此,用户可以直接 建立基于 CAN 2.0 规范的数据通信;不过,这种数据通信的传输内容一般不能灵活修改,适合于固定通 讯方式。 由于 CAN 2.0 规范没有规定信息标识符的分配,因此可以根据不同应用使用不同的方法。所以, 在设计一个基于 CAN 的通讯系统时,确定 CAN 标识符的分配非常重要,标识符的分配和定位也是应用 协议、高层协议的其中一个主要研究项目。
作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通讯控制方式,CAN-bus 已被广 泛应用到各个自动化控制系统中。从高速的网络到低价位的多路接线都可以使用 CAN-bus。例如,在汽 车电子、自动控制、智能大厦、电力系统、安防监控等各领域,CAN-bus 都具有不可比拟的优越性。
主要特性
低成本的现场总线; 极高的总线利用率; 很远的数据传输距离(长达 10Km); 高速的数据传输速率(高达 1Mbps); 可根据报文的 ID 决定接收或屏蔽该报文; 可靠的错误处理和检错机制 发送的信息遭到破坏后,可自动重发; 节点在错误严重的情况下具有自动退出总线的功能; 报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。
can@ 和 cantools@ 用户可以直接从周立功公司专业网站下载大部分本文中介绍或引用的数据手册/开发资料;特定的部分芯片源代 码内容可以通过向周立功公司提出申请、或购买相关开发工具而获得。
-3-
广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925
CAN 2.0 规范分为 CAN 2.0A 与 CAN 2.0B。CAN 2.0A 支持标准的 11 位标识符;CAN 2.0B 同时支持标准的 11 位标识符和扩展的 29 位标识符。CAN 2.0 规范的目的是为了在任何两个基于 CAN-bus 的仪器之间建立兼容性;规范定义了传输层,并定义了 CAN 协议在周围各层当中所发挥的作 用。CAN 2.0 规范涉及兼容性的不同方面,比如电气特性和数据转换的解释。为了达到设计透明度以及 实现柔韧性,CAN 被细分为以下不同的层次:
CAN-bus 器件列表
序号
型号
1 P87C591