USB-CAN-A
| ||||||||||||||||||||
| ||||||||||||||||||||
说明
产品特性
- 支持 CAN2.0A(标准帧)和 CAN2.0B(扩展帧)
- 支持 CAN 通讯波特率范围:5kbps~1Mbps,可自定义 CAN 波特率
- 支持四种工作模式:正常模式、环回模式、静默模式、静默环回模式
- 支持多种 CAN 数据发送方式:单帧发送、多帧发送、手动发送、定时发送和循环发送
- 支持多种 CAN 数据接收方式:可配置只接收指定 ID 的数据,也可指定 ID 自动应答配置好的数据
- 支持收发 CAN 数据保存为 TXT 或 EXCEL 文本
- 支持 CAN 总线检测,方便查看 CAN 总线状态
- CAN 收发数据显示都带时间标识,可顺序显示,也可刷新显示
- 支持设置 USB 虚拟 COM 口的通信波特率 (9600 ~ 2000000bps),默认为 2000000bps
- 支持通过配置软件或串口指令设置工作参数,可断电保存
- 采用 STM32 进口芯片方案,通信稳定可靠
- 板载 TVS(瞬态电压抑制管),有效抑制电路的浪涌电压和瞬态尖峰电压
- 提供 Windows 版本的中英文上位机软件,使用方便
- 支持二次开发,只需处理收发命令即可
基本功能
Windows系统使用
USB驱动安装
- 下载CH341SER驱动,双击CH341SER.EXE文件,点击安装,出现驱动安装成功后,点击确定完成驱动安装:
CAN配置工具使用说明
CAN配置工具使用
- 工具免安装,下载USB-CAN-A_TOOL_1.2并解压文件后,打开USB-CAN.exe文件:
配置页面功能说明
① 端口设置区:
将把 USB 转 CAN 插入电脑后,安装驱动,设备管理器会出现com口,上位机配置工具选择对应设备管理器的端口,可以打开或关闭端口,这个跟串口调试助手类似,通讯波特率默认是的2000000bps。
有些串口助手(走底层hex数据)可能没有2M,若须改小波特率,可参考下文:
更改 COM(232)波特率说明:
1. 用 USB 数据线插上转换器,同时注意发送及接受指示灯同时闪几下:
闪 1 下,对应串口的波特率为 2000000bps 闪 2 下,对应串口的波特率为 1228800bps 闪 3 下,对应串口的波特率为 115200bps 闪 4 下,对应串口的波特率为 38400bps 闪 5 下,对应串口的波特率为 19200bps 闪 6 下,对应串口的波特率为 9600bps
2. 打开软件,选择对应 COM 端口号及波特率,点击打开按钮(比如转换器插上 USB 数据线上电时收发指示灯同时闪 1 下,我们应该选波特率 2000000bps)
3. 点击打开按钮
4. 点击更改波特率按钮,此时会跳出一个对话框,我们在波特率组合框里面选择我们准备设置的波特率后,点击更改即可;若不想更改,点击取消按钮。
5. 比如我们要设置波特率为 9600bps :
- 在波特率组合框里面 9600.
- 点击更改按钮,同时注意观察转换器收发指示灯闪烁,
- 对应 9600 波特率转换器收发指示灯会同时闪 6 下。
- 由于端口波特率已经更改,需要关闭端口后,选择更改后的波特率重新打开
6. 点击关闭按钮
7. 将波特率选择为更改后的波特率
8. 重新点击打开按钮即可
② CAN 设置区:
工作模式包含正常模式,环回模式,静默模式,环回及静默模式
- 正常模式:就是 CAN 正常通讯的模式,可以正常向总线收发数据
- 环回模式:发送的数据可以发往 CAN 总线,同时反馈的内部的接受区,忽略接受引脚的实际状态,可用于自测试
- 静默模式:可以正常接受数据,但只能发送隐性位,而不能真正发送报文,常用于分析 CAN 总线活动
- 环回静默模式:该模式可以用于“热自测试”,即在线自测试。可以像环回模式那样自测试,但却不影响 CAN 总线系统。
- 帧类型:标准帧(CAN2.0A 11 位 ID) 扩展帧(CAN2.0B 29 位 ID)
- CAN 波特率:可以直接选择 CAN 通讯常用的波特率:1M,800K,500K,400K,250K,200K,125K,100K,50K,20K,10K,5K;若上面可直接设置的波特率与你的 CAN 设备的波特率不一致,可选择。
- 滤波 ID 与屏蔽 ID:都是 16 进制数据,标准帧时滤波 ID 及屏蔽 ID 低11 位有效(范围:0x00000000~0x000007ff),扩展帧 滤波 ID 及屏蔽ID低 29 位有效(范围 0x00000000~0x1fffffff)
- 固定 20 字节收发:CAN 转换器内部有 2 种转换协议,一个是可以长度的通讯协议,一种是固定 20 字节的通讯协议,选中后将是固定 20 接通讯协议,不选中则是可变协议通讯选择之后会跳出一个自定义波特率的对话框最上面位 CAN 波特率的计算公式,同时设置相位缓冲区 1,相位缓冲区 2,及预分频就可以了
- 禁止报文自动重发:CAN 通讯一般都是发送不成功自动重发,如果一直循环发送数据,可以设置禁止报文自动重发,点击设置并启动 ,就可以进行 CAN 通讯了。
③ 发送单帧数据区:
帧格式包含数据帧及远程帧,帧ID是16进制数据,对于标准帧帧ID范围为 0x00000000~0x000007fff , 对于扩展帧帧 ID 范围为0x00000000~0x1fffffff。发送的数据也为16进制数据,图中的数据分别为 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88点击发送单帧按钮则将该帧数据发送到 CAN 总线
④ 多帧发送数据区:
- 增加按钮:在发送多帧区域选中行下面将增加一条发送帧数据
- 删除按钮:将删除选中行
- 清空按钮:将清除发送多帧发送区所有数据
- 间隔时间:多帧发送区相连两帧的间隔发送时间(毫秒)
- 发送选中帧:点击此按钮将发送多帧区内选中的一行进行发送
- 顺序:选中后点击发送选中帧将自动切换到下一帧
- 循环:选中后点击发送选中帧将循环发送
- 停止:取消发送多帧命令
⑤ 自动应答区:
- 增加按钮:在自动应答区域选中行下面将增加一条自动应答数据
- 删除按钮:将删除选中行
- 清空按钮:将清除发送自动应答区所有数据
- 自动应答:将选中后接到到接受 ID 将自动回复对应的帧 ID 及数据
⑥ CAN 总线状态区:
主要用于查看 USB 转 CAN 装置的 CAN 通讯状态
⑦ 配置接受 ID 区:
增加按钮:在配置接受区域选中行下面将增加一条自动应答数据删除按钮:将删除选中行启用按钮:点击此按钮后转换器将只上传配置接受 ID 区里面设置的ID,其他 ID 都不上传到电脑不启用按钮:点击此按钮后转换器将所有 ID 数据都上传到电脑
⑧ 收发数据显示区:
- 清空:清空收发数据显示器所以数据
- 暂停:暂停在收发显示区显示其他数据
- 继续:继续显示收发数据
- 保存: 可以将收发数据缓冲区的数据保存,可以保存两种格式,excel 或 txt 文本
- 不显示发送帧:可以在收发数据区只显示接受的数据
- 自动刷新:当只显示接受的数据时,可以选择自动刷新,这时候数据是实时刷新,而不是不断增加列显示,该功能可以归纳 CAN 总结的 ID 数据选中任意一行
硬件测试
接到2-CH CAN FD HAT测试
- 将USB-CAN-A和2-CH CAN FD HAT通过杜邦线,将A-->A和B-->B相连,USB-CAN-A的USB端接到电脑USB口:
- 在电脑端打开USB-CAN调试工具,默认波特率为2M,打开对应的端口号,选择正常模式,标准帧和程序对应的速率1Mbps(USB-CAN-A 高支持1M),设置并启动;2-CH CAN FD HAT和USB-CAN-A实现数据互发互收:
接到USB-CAN-B测试
- 通过杜邦线等导线将USB-CAN-A和USB-CAN-B的H-->H和L-->L相连;然后打开两者的120欧姆电阻开关:
- 进入USBCAN配置工具配置界面->确认CAN配置正确无误后设置并启动->填入数据信息并点击发送单帧;USB-CAN-A发送数据USB-CAN-B收到,反之亦然,测试OK
Linux系统使用
硬件准备
- 2个USB-CAN-A的L和H分别对应连接起来,打开两者的120欧姆电阻开关(开关拨到靠近绿色接线端子一边),USB端分别接到树莓派的USB口,硬件连接情况如下图:
- 通过以下指令可以查询和确认树莓派识别到USB-CAN-A和加载相关的驱动
lsusb ls /dev
- 对于部分没有自动加载驱动描述符的linux 系统,可以用以下指令加载驱动:
sudo su sudo modprobe option sudo sh -c 'echo "1a86 7523" > /sys/bus/usb-serial/drivers/option1/new_id'
例程测试
- 复制以下指令到树莓派终端:
wget https://www.waveshare.net/w/upload/7/72/USB-CAN-A.zip sudo apt-get install unzip unzip USB-CAN-A.zip cd USB-CAN-A sudo make clean sudo make
- 在终端界面输入以下接受指令:
sudo ./canusb -t -d /dev/ttyUSB0 -s 1000000 -t
- 再打开多一个终端界面,运行以下发送指令:
sudo ./canusb -d /dev/ttyUSB1 -s 1000000 -t -i 5 -j BEEE
- 一个USB-CAN-A(ttyUSB0)发送数据,另一个USB-CAN-A(ttyUSB1)接收到对应的数据,效果如下图:
资料
软件
- CH341SER驱动
- USB-CAN-A_TOOL_2.12 (当前最新版本,推荐使用)
- USB-CAN-A_TOOL_1.2_2M(默认串口波特率2M,推荐使用)
- USB-CAN-A_TOOL_1.2 (可以改串口波特率,不建议改)
程序
文档
FAQ
不同的can设备,参数can速率,ID和数据帧是不一样的,具体结合can设备的规格书确认和使用,以默认CAN速率1M,ID 141,数据帧88 00 00 00 00 00 00 00,can电机为例,然后把这些数据配置到CAN-tool:
以下是部分参数的说明:
-t 在 stderr 上打印 TTY/串行流量调试信息。 -d 设备 使用 TTY 设备。 -s SPEED 以 bps 为单位设置 CAN 速度。 -b BAUDRATE 设置 TTY/串行波特率(默认值:2000000)。 -i ID 使用 ID(指定为十六进制字符串)注入。 -j DATA CAN DATA 要注入(指定为十六进制字符串)。 -n COUNT 在 COUNT 帧后终止(默认值:无限)。 -g MS 以 MS 毫秒为单位注入睡眠间隙(默认值:200 毫秒)。 -m MODE 注入负载模式(0 = 随机,1 = 增量,2 = 固定)。
数据发送太快,,第一个数据还没发送成功,又开始发下一个,也会导致丢包;
数据发送的时候正好总线上有数据,这种情况会导致丢包;
建议将发送的数据包间隔一定的时间(建议>1s)或加入适当的延迟,使其他设备有足够的时间进行数据包处理
速率=频率X数据量,模块性能有限,速率有上限的, 数据量比较多又不能削减情况下,需要频率降下来,频率=1/时间也即是说,通常模块的数据速率是有上限的,达到上限时,数据总量和发送的频次成反比
{{{5}}}
{{{5}}}
{{{5}}}
闪 1 下,对应串口的波特率为 2000000bps 闪 2 下,对应串口的波特率为 1228800bps 闪 3 下,对应串口的波特率为 115200bps 闪 4 下,对应串口的波特率为 38400bps 闪 5 下,对应串口的波特率为 19200bps 闪 6 下,对应串口的波特率为 9600bps
{{{5}}}
车子满足以下条件,可以支持:
- 有普通的CAN接口,支持CAN2.0 A/B 协议
- 汽车的接口不一样,协议也比较复杂,USB-CAN-A可能用不好,通信时把120欧姆开关关闭,其他的跟正常设备通讯类似,只要波特率一直就可以正常收发数据了
- 如果要求用到工业级或者汽车专用SAE J1939协议,请用这款 USB-CAN-B
{{{5}}}
可以作为 CAN 总线上的一个节点进行数据收发的,通过USB接口连接到PC或其他主机系统,然后通过其集成的CAN控制器与CAN总线网络通信,允许主机系统通过USB接口访问CAN网络,实现数据的发送与接收。
{{{5}}}
{{{5}}}
不完全支持,可以接受查看CAN OPEN数据,但不解析CANOPEN协议,推荐用支持的USB-CAN-B
{{{5}}}
请戳链接下载CAN-TOOL SDK 源码文件
{{{5}}}