ZQWL-USBCANFD二次开发通讯协议V1.04
liebian365 2025-03-30 18:18 21 浏览 0 评论
修订历史:
1.功能介绍
1.1型号说明
本文档适用以下型号:
ZQWL-CAN(FD)系列产品,USB通讯采用CDC类实现,可以在PC机上虚拟出一个串口,串口参数N,8,1格式,波特率可以根据需要设置(范围9600~48000000bps),硬件自动匹配。本文档介绍二次开发的参数配置,数据收发等协议。
智嵌物联ZQWL开发的一系列高性能USBCAN(FD)接口卡,具有类型多,安装方式灵活,方便易用,功能强大等特点。接口卡支持XP/Win7/Win10/Win11等操作系统。
其中,ZQWL-UCANFD-200U、ZQWL-UCAN-201U、ZQWL-UCANFD-400U、ZQWL-UCAN-401U等型号,CAN(FD)通道均采用电气隔离设计,可以适用于电磁环境恶劣的的场合。
1.2产品特性
● USB接口符合USB2.0高速规范;CAN接口支持 CAN2.0A、B 协议,符合 ISO11898-1 规范;
● CAN和CANFD协议可选;CANFD支持ISO标准和Non-ISO标准;
● 每个通道可以独立设置波特率,系统不仅预置了常用波特率列表,而且支持自定义波特 率;支持的波特率范围:CAN:10Kbps~1Mbps,CANFD:100Kbps~5Mbps;
● 最大流量测试:
● 每个通道均有14组硬件滤波器;每组滤波器可以设置滤波ID以及掩码。
● 支持连续循环发送、组发送、定时发送等;
● 支持波特率探测,支持合并相同帧ID,支持总线异常统计,支持收发速率统计;
● 双通道CAN(FD)接口卡支持中继功能;
● 200U、201U、400U、401U的CAN(FD)-bus电路采用DC 2500V电气隔离,具有强大的抗电磁干扰的能力;
● 工作温度:-40~+85℃;
1.3典型应用
● 车载通讯系统、电力通讯系统;
● 煤矿远程通讯;
● 工业现场控制/;
● 远程监控与数据采集;
2.通讯协议
2.1USB硬件描述符
通过USB的硬件ID(VID和PID)来识别该系列设备,特征如下:
例如(双通道CANFD类型):
2.2参数配置
每帧数据长度为22字节,十六进制格式:包括2个字节帧头(0x49,0x3B)、1个字节功能码、1个字节读/写标志、16个字节数据和2个字节帧尾(0x45,0x2E):
注意:
● 当需要读参数,“读/写”填0x52;当需要写参数时,“读/写”填0x57;其中,“设备信息”和“设备序列号”命令只支持读命令(0x52)。
● CAN通道号:取值为0x00~0x03,分别对应CAN0~CAN3;
● 自定义波特率标志:0x00为采用“常用波特率码”;0x01为自定义波特率;当为自定义波特率时(CAN3仅支持“常用波特率码”),实际波特率由SJW、TSEG1、TSEG2和BRP计算获得,计算方式:
Baud = 60000000/(SJW+1 + TSEG1+1 + TSEG2+1)/BRP。
其中SJW取值范围:0x00~0x03;
TSEG1取值范围:0x00~0x0F;
TSEG2取值范围:0x00~0x07;
BRP取值范围:1~0x0400,BRP是2字节长度,高字节在前,低字节在后。
采样点计算:SMP=(SJW+1 + TSEG1+1)/(SJW+1 + TSEG1+1 + TSEG2+1)。
● 常用波特率码:高4位是仲裁域波特率(CAN),低4位是数据域波特率(CANFD)
仲裁域波特率码对应表:
数据域波特率码对应表:
●滤波器组号:每个通道均有14组硬件滤波器,组号取值范围0~13;
组使能:0x00为禁止该组;0x01为开启该组;注意,设备从0组开始查询该位,遇到一个不为0x01的组时,退出查询,即便是后面再有使能的组也无效。
●滤波器帧类型:0x00为标准帧;0x01为扩展帧;
●滤波验收ID和掩码:
滤波验收ID:用于比对CAN(FD)接收到的帧ID,以确定该帧是否被接收,十六进制。
掩码:用于屏蔽滤波验收ID里的某些位,以确定验收码某些位(bit)是否参与比对(对应位为0不参与比对,为1参与比对),十六进制。
举例1:滤波帧类型选择“标准帧”;“滤波验收ID”填001,“掩码”填7FF;
释义:由于标准帧ID只有11位,滤波验收ID和掩码最后11位有意义, 掩码最后11位全是1,所以滤波验收ID的后11位全部参与比对,因此上述设置可以让帧ID为001的标准帧通过。
举例2:滤波帧类型选择“标准帧”;“滤波验收ID”填010,“过滤屏蔽码”填7F0释义:同例1,标准帧只有11位有效,掩码的最后4位是0,表示滤波验收ID的最后4位不参与对比,因此上述设置可以让帧ID从010到01F的一组标准帧通过。
举例3:滤波帧类型选择“扩展帧”;“滤波验收ID”填00 03 04 01,“掩码”填1F FF FF FF;
释义:扩展帧有29位,掩码的后29位全为1,表示滤波验收ID的后29位全部参与比对,因此上述设置可以让帧ID为00 03 04 01的扩展帧通过。
举例4:滤波帧类型选择“扩展帧”;“滤波验收ID”填00 03 04 00,“掩码”填1F F0 FF FF;
释义:根据上述设置可以让帧ID从00 00 04 00到00 0F 04 00的一组扩展帧通过(注意只是标红色的0到F变化,04 00为固定)。
●系统控制命令
可以通过这个命令实现将设置好的参数写入到设备里(即断电不丢失)。
生效参数:0x00为不生效(断电参数丢失),0x01为生效(保存到flash中,断电不丢失);
系统复位:0x00为系统不复位,0x01为系统复位;
CAN0开关:0x00为关闭CAN0,0x01为开启CAN0;
CAN1开关:0x00为关闭CAN1,0x01为开启CAN1;
举例说明(用串口助手作为上位机):
①读取设备信息
上位机发送(Hex格式):49 3B 40 52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 45 2E
②读取设备序列号
上位机发送(Hex格式):49 3B 41 52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 45 2E
③设置CAN参数
设置CAN0参数:仲裁域波特率250kbps,数据域波特率500kbps
上位机发送(Hex格式):49 3B 42 57 00 00 45 00 00 00 00 00 00 00 00 00 00 00 00 00 45 2E
注意,设置完后,还要发送生效参数并开启CAN0命令:
49 3B 44 57 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 45 2E
开启任一CAN通道后,设备开始向上位机发心跳包。
2.3心跳包
根据设备的CAN(FD)的通道数量,心跳包分为2种格式:单双通道设备心跳包和4通道设备心跳包。
2.3.1单双通道心跳包格式
单双通道心跳包为设备向上位机发送的数据包,心跳包长度为17字节,含义如下:
●功能码为0xFF(注意4通道功能码是0xFE)。
●设备状态:1个字节,定义如下:
开启标志:0为未开启,1为开启;
总线状态:
00:总线正常;
01:总线警告
10:总线被动错误
11:设备离线(此时已不能再发送CAN(FD)报文)
2.3.24通道心跳包格式
4通道心跳包为设备向上位机发送的数据包,心跳包长度为32字节,含义如下:
●功能码为0xFE(注意单双通道功能码是0xFF)。
●CAN0~1设备状态:1个字节,定义如下:
●CAN2~3设备状态:1个字节,定义如下:
开启标志:0为未开启,1为开启;
总线状态:
00:总线正常;
01:总线警告
10:总线被动错误
11:设备离线(此时已不能再发送CAN(FD)报文)
2.3.3心跳包参数含义
●发送速率:每秒发送的CAN(FD)报文个数。
●接收速率:每秒接收的CAN(FD)报文个数。
●错误计数器:
包括发送错误计数器和接收错误计数器,这些状态直接反映了总线的通畅情况,当接收错误计数器值大于127时,总线几乎已经瘫痪。当出现错误值较高的情况(40以上),表示总线的通讯出现比较严重的阻塞,此时就有必要调整CAN(FD)网络的波特率值或增加CAN(FD)网桥,以提高CAN(FD)总线质量。当总线通信良好时,错误计数器一般都能维持在0。
在没有数据向CAN(FD)发送时,心跳包每隔1秒向上位机发送一次,当有数据向CAN(FD)发送时,设备立即向上位机发送一条心跳包。
2.4CAN(FD)数据收发指令
通过该命令可以实现CAN(FD)报文的发送和接收,报文格式如下:
●BYTE0:帧头固定为0x5A;
●BYTE1:帧信息1,包含CAN通道和CAN(FD)报文数据长度DLC;
该字节的每个bit位的含义如下:
当为CAN帧时,DLC的取值范围是0~8;
当为CANFD帧时,DLC取值为0~8、12、16、20、24、32、48、64。
注意,BYTE1为0xFF或0XFE时为设备发向上位机的心跳包,接收数据时需要注意。
●BYTE2:帧信息2,包含发送类型、帧格式、帧类型和是否加速等信息,含义定义如下:
注意:CAN通道号有3个bit构成,从高位到低位分别是:BYTE2的Bit4、Bit3、BYTE1的Bit7。取值为0x00~0x07,分别对应CAN0~CAN7通道。
正常发送:在ID仲裁丢失或发送出现错误时,CAN控制器会自动重发,直到发送成功,或 发送超时(超时时间1秒),或总线关闭。
单次发送:在一些应用中,允许部分数据丢失,但不能出现传输延迟时,自动重发就没有意 义了。在这些应用中,一般会以固定的时间间隔发送数据,自动重发会导致后面的数据无法发送,出现传输延迟。使用单次发送,仲裁丢失或发送错误,CAN 控制器不会重发报文。
●BYTE3~6:CAN(FD)帧ID,一共4个字节。标准帧时,只有BYTE5~6的低11bit有效;扩展帧时,29bit有效。
注意,BYTE3的最高位(Bit7)是CAN协议类型标志:
0:CAN帧;
1:CANFD帧;
●帧数据:长度为DLC。
●帧尾:一个字节,固定为0xA5
当上位机向设备发送CAN(FD)数据包时,设备收到后会立即返回一条心跳包。
相关推荐
- 精品博文嵌入式6410中蓝牙的使用
-
BluetoothUSB适配器拥有一个BluetoothCSR芯片组,并使用USB传输器来传输HCI数据分组。因此,LinuxUSB层、BlueZUSB传输器驱动程序以及B...
- win10跟这台计算机连接的前一个usb设备工作不正常怎么办?
-
前几天小编闲来无事就跑到网站底下查看粉丝朋友给小编我留言询问的问题,还真的就给小编看到一个问题,那就是win10跟这台计算机连接的一个usb设备运行不正常怎么办,其实这个问题的解决方法时十分简单的,接...
- 制作成本上千元的键盘,厉害在哪?
-
这是稚晖君亲自写的开源资料!下方超长超详细教程预警!!全文导航:项目简介、项目原理说明、硬件说明、软件说明项目简介瀚文智能键盘是一把我为自己设计的——多功能、模块化机械键盘。键盘使用模块化设计。左侧的...
- E-Marker芯片,USB数据线的“性能中枢”?
-
根据线缆行业的研究数据,在2019年搭载Type-C接口的设备出货量已达到20亿台,其中80%的笔记本电脑和台式电脑采用Type-C接口,50%的智能手机和平板电脑也使用Type-C接口。我们都知道,...
- ZQWL-USBCANFD二次开发通讯协议V1.04
-
修订历史:1.功能介绍1.1型号说明本文档适用以下型号: ZQWL-CAN(FD)系列产品,USB通讯采用CDC类实现,可以在PC机上虚拟出一个串口,串口参数N,8,1格式,波特率可以根据需要设置(...
- win10系统无法识别usb设备怎么办(win10不能识别usb)
-
从驱动入手,那么win10系统无法识别usb设备怎么办呢?今天就为大家分享win10系统无法识别usb设备的解决方法。1、右键选择设备管理器,如图: 2、点击更新驱动程序,如图: 3、选择浏览...
- 微软七月Win8.1可选补丁有内涵,含大量修复
-
IT之家(www.ithome.com):微软七月Win8.1可选补丁有内涵,含大量修复昨日,微软如期为Win7、Win8.1发布7月份安全更新,累计为6枚安全补丁,分别修复总计29枚安全漏洞,其中2...
- 如何从零开始做一个 USB 键盘?(怎么制作usb)
-
分两种情况:1、做一个真正的USB键盘,这种设计基本上不涉及大量的软件编码。2、做一个模拟的USB键盘,实际上可以没有按键功能,这种的需要考虑大量的软件编码,实际上是一个单片机。第一种设计:买现成的U...
- 电脑识别U盘失败?5个实用小技巧,让你轻松搞定USB识别难题
-
电脑识别U盘失败?5个实用小技巧,让你轻松搞定USB识别难题注意:有些方法会清除USB设备里的数据,请谨慎操作,如果不想丢失数据,可以先连接到其他电脑,看能否将数据复制出来,或者用一些数据恢复软件去扫...
- 未知usb设备设备描述符请求失败怎么解决
-
出现未知daousb设备设备描述符请求失du败解决办zhi法如下:1、按下Windows+R打开【运行】;2、在版本运行的权限输入框中输入:services.msc按下回车键打开【服务】;2、在服务...
- 读《飘》47章20(飘每章概括)
-
AndAhwouldn'tleaveMissEllen'sgrandchildrenfornotrashystep-patobringup,never.Here,Ah...
- 英翻中 消失的过去 37(消失的英文怎么说?)
-
翻译(三十七):消失的过去/茱迪o皮考特VanishingActs/JodiPicoult”我能做什么?“直到听到了狄利亚轻柔的声音,我才意识到她已经在厨房里站了好一会儿了。当她说话的时候,...
- RabbitMQ 延迟消息实战(rabbitmq如何保证消息不被重复消费)
-
现实生活中有一些场景需要延迟或在特定时间发送消息,例如智能热水器需要30分钟后打开,未支付的订单或发送短信、电子邮件和推送通知下午2:00开始的促销活动。RabbitMQ本身没有直接支持延迟...
- Java对象拷贝原理剖析及最佳实践(java对象拷贝方法)
-
作者:宁海翔1前言对象拷贝,是我们在开发过程中,绕不开的过程,既存在于Po、Dto、Do、Vo各个表现层数据的转换,也存在于系统交互如序列化、反序列化。Java对象拷贝分为深拷贝和浅拷贝,目前常用的...
- 如何将 Qt 3D 渲染与 Qt Quick 2D 元素结合创建太阳系行星元素?
-
Qt组件推荐:QtitanRibbon:遵循MicrosoftRibbonUIParadigmforQt技术的RibbonUI组件,致力于为Windows、Linux和MacOSX提...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)