uCAN设计说明通信协议docxGoogle Code.docx
《uCAN设计说明通信协议docxGoogle Code.docx》由会员分享,可在线阅读,更多相关《uCAN设计说明通信协议docxGoogle Code.docx(13页珍藏版)》请在冰点文库上搜索。
uCAN设计说明通信协议docxGoogleCode
陈正
uCan设计说明
通信协议部分
陈正
2010-7-2
历史记录
修改人
版本
日期
备注
陈正
0.0.1
2007-9-9
文档创建
陈正
0.0.2
2007-11-17
添加数据报命令
陈正
0.0.3
2007-12-15
修改命令格式
陈正
0.0.4
2010-05-27
修改命令格式
前言
uCan设计说明包括硬件设计说明,嵌入式软件设计说明,PC软件设计说明,以及通信协议设计说明。
本文属于通信协议设计说明。
范围
本文针对uCAN设备与PC通信的通信协议做了详细描述,包括通信帧格式,数据内容定义,以及通信命令定义。
引用文件
《CAN2.0规范》
术语和定义
无
1.通信速度
uCAN设备通过全速USB2.0接口与PC进行通信,传输类型为批量传输方式,理论速度可达12Mbps,采用批量传输时实际速度可达900KBps。
足够满足两个CAN以最大1Mbps的速度。
2.通信格式
uCan和PC的通信采有两种形式:
●数据流:
用于传输大量的CAN数据帧,一个数据流可以由一个或多个USB帧组成。
每一路CAN对应两个数据流,一个用于接受PC上发送的数据,另外一个用于向PC传输接收到的CAN数据。
●数据报:
用于向设备发送命令或者获取设备状态。
数据报由报头以及数据组成,且不可大于一个USB帧长。
数据报占用了两个端点,一个端点用于接收PC发送的命令,另一个端点用于设备向PC报告当前设备状态。
一个USB帧能且只能传输一个数据报。
数据流和数据报分别通过不同的端点传输,这样可以简化程序处理,但是缺点是需要占用了更多的端点。
2.1.数据流格式:
数据流的长度必须是4的整数倍,数据流由整数个CAN帧信息报文组成,如图1所示。
图1数据流与CAN帧关系
数据流由上行(设备到PC)与下行(PC到设备)两种传输方向,其中下行和上行数据流中CAN帧信息格式是不同的,下面两节将详细介绍下行和上行数据流的CAN帧信息格式。
2.1.1.下行CAN帧格式:
下行数据流用于传输PC需要往CAN网络发送的数据,其具体格式如图2所示。
图2下行数据帧格式
表1下行数据帧格式字典
名称
含义
FS
帧信息域,包含了该帧描述信息
FF
扩展帧标志,1表示扩展帧,0表示标准帧
RTR
远程帧标志,1表示远程帧,0表示数据帧
DLC
数据长度,当RTR为1时,表示远程帧请求的数据长度,当RTR为0时,表示数据帧中的数据长度。
CAN帧中数据长度最大为8字节,所以当DLC大于8时,应当作为8来处理。
PRI
CAN帧发送优先级,数值越低优先级越高。
ID
CAN标识符,当FF为0时,标识符长度为11位;当FF为1时标识符长度为29位
DATA
数据域,该域中的数据以四字节为单位出现。
当数据帧的DLC大于0时,DATA1—DATA4必须存在;当数据帧的DLC大于4时,DATA5—DATA8必须存在。
由图2可以看出,一个CAN长度范围为8-16字节。
2.1.2.上行CAN帧格式:
下行数据流用于传输设备往PC传输CAN网络上的数据,其具体格式如图3所示。
图3上行数据帧格式
表2上行数据帧格式字典
名称
含义
TIME
接收到CAN的时间,单位1us,该时间从打开CAN成功开始或者使用过程中由用户重新启动,长度为48位(溢出时间大概为8.9年)
FS
帧信息域,包含了该帧描述信息
FF
扩展帧标志,1表示扩展帧,0表示标准帧
RTR
远程帧标志,1表示远程帧,0表示数据帧
DLC
数据长度,当RTR为1时,表示远程帧请求的数据长度,当RTR为0时,表示数据帧中的数据长度。
CAN帧中数据长度最大为8字节,所以当DLC大于8时,应当作为8来处理。
R
用于表明当前帧是设备接收到的帧还是设备发出的
1表示设备接收
0表示设备发出
IDindex
保留项
ID
CAN标识符,当FF为0时,标识符长度为11位;当FF为1时标识符长度为29位
DATA
数据域,该域中的数据以四字节为单位出现。
当数据帧的DLC大于0时,DATA1—DATA4必须存在;当数据帧的DLC大于4时,DATA5—DATA8必须存在。
由图3可以看出,一个CAN帧最大长度范围是12-20字节(DLC大于4且RTR不等于1时),最小长度为12字节(DLC为0或者RTR等于1时)。
2.2.数据报格式
数据报每次传输的最大长度为一个USB帧长度,可以用于向设备发送命令以及接收设备状态。
一个USB帧能且只能传输一个数据报。
图4一个USB帧中包含多个数据报
数据报包含报头和参数,其中报头的长度为四个字节,而参数的长度根据其由报头中的长度字段来指示,其具体格式如图5所示。
数据报的下行与上行格式相同,都是采用报头加数据的形式来传输。
图5数据报格式
表3数据报格式字典
名称
含义
CMD
命令,长度为16位
一般我们最高位为1表示设置命令,最后2位用于表示CAN端口号
响应命令时,需对主控请求的命令取反
Extern
扩展字段,长度16位
主机可在这里填充一些辅助信息
响应报文可在这里填充一些简单状态
DATA
数据区,用于存放命令参数或者状态值,0-60字节长度
数据报的交互有如下几种情况:
1、PC发送数据报,设备无需应答;
2、PC发送数据报,设备做出响应;如返回参数或者执行结果等;
3.端点定义
端点定义如表4所示。
表4系统端点功能定义
顺序
端点号
方向
功能
1
2
OUT
数据报
2
2
IN
数据报
3
5
OUT
CAN1发送数据流
4
5
IN
CAN1接收数据流
5
8
OUT
CAN2发送数据流
6
8
IN
CAN2接收数据流
4.数据报命令
本小节描述设备支持的所有命令,每一条命令都将描述数据报命令的各个字段,除了ID字段。
该字段的详细说明可见表3数据报格式字典。
4.1.立即发送CAN消息
命令字:
0X8000-0X8003,最后两位表示CAN端口号
扩展字段含义:
当前报文包含的CAN帧数量,1-3有效
数据长度:
16-48字节
数据:
1-3个CAN报文数据,格式同数据流中的CAN发送帧格式。
0-15字节存放第一个CAN报文
16-31字节存放第一个CAN报文(如果有)
32-47字节存放第一个CAN报文(如果有)
响应:
扩展字段:
发送成功的帧数量
数据字段:
无
4.2.设置CAN模块状态
命令字:
0X8010-0X8013,最后两位是CAN端口号
扩展字段:
无意义,填0
数据长度:
8字节
数据:
Data[0-3]对应MOD寄存器
Data[4-7]对应BTR寄存器
响应:
无
备注:
执行该命令会导致CAN端口复位,设备端会先将CAN进入状态再设置相应的值。
设置顺序为:
先复位,再设置BTR,最后设置MOD
4.3.获取CAN状态
命令字:
0X0010-0X0013,最后两位是CAN端口号
扩展字段含义:
无意义,填0
数据长度:
0
数据:
无
响应:
扩展字段含义:
无意义,填0
数据长度:
40
数据:
Data[0-3]对应MOD寄存器
Data[4-7]对应BTR寄存器
Data[8-11]对应ICR寄存器
Data[12-15]对应GSR寄存器
Data[16-19]表示CAN总线数据过载次数(由于CPU未能及时响应报文,硬件自动丢弃)
Data[20-23]表示CAN丢弃个数(因为USB缓冲区已满,导致无法继续处理,软件丢弃)
Data[24-27]表示控制器复位次数(因为错误而导致的复位)
Data[28-31]表示总线错误发生次数
Data[32-35]最后错误代码,0表示无错误
Data[36-37]物理层接口类型
Data[38-39]保留
4.4.设置CAN总线数据过载次数
由于CPU未能及时响应报文,而导致硬件自动丢弃的过载次数统计
命令字:
0X8010-0X8013,最后两位是CAN端口号
扩展字段含义:
无意义,填充0
长度:
4
数据:
需要设置的值
响应:
无
4.5.设置CAN丢弃个数
由于USB缓冲区已满,导致无法继续处理,软件主动丢弃的过载次数统计
命令字:
0X8020-0X8023,最后两位是CAN端口号
扩展字段含义:
无意义,填充0
长度:
4
数据:
需要设置的值
响应:
无
4.6.设置CAN控制器复位次数
该复位次数是指由于总线错误而导致的复位
命令字:
0X8030-0X8033,最后两位是CAN端口号
扩展字段含义:
无意义,填充0
长度:
4
数据:
需要设置的值
响应:
无
4.7.设置CAN总线错误报警发生次数
命令字:
0X8040-0X8043,最后两位是CAN端口号
扩展字段含义:
无意义,填充0
长度:
4
数据:
需要设置的值
响应:
无
4.8.设置CAN计数器时间
命令字:
0X8050-0X8053,最后两位是CAN端口号
扩展字段含义:
无意义,填充0
长度:
8
数据:
需要设置的值,注意计数器有效长度是6字节的,最前面两个字节保留
响应:
无
4.9.获取设备信息
该命令用于获取设备总体信息。
命令发起:
该命令由PC发起。
命令字:
0X0000
扩展字段含义:
无
长度:
0
数据:
无
响应:
必须做出响应,返回设备版本号。
命令字:
0X07
扩展字段含义:
无
长度:
16
数据:
Data[0]软件主版本(BCD编码)
Data[1]软件次版本(BCD编码)
Data[2]硬件主版本(BCD编码)
Data[3]硬件次版本(BCD编码)
Data[4-5]生产年份
Data[6]生产月份
Data[7]生产日期
Data[8-15]产品序列号