
usb2can_canfd分析仪双通道模块
简介
USB canfd分析仪,双通道
简介:USB canfd分析仪,双通道开源协议
:GPL 3.0
描述
|
序号 |
名称 |
功能 |
|
1 |
USB B方型母口 |
对接电脑,传输控制指令和数据 |
|
2 |
PWR灯 |
电源指示灯,USB插上电脑就亮 |
|
3 |
CAN1灯 |
通道1指示灯,通道1有数据亮 |
|
4 |
CAN2灯 |
通道2指示灯,通道2有数据亮 |
|
5 |
CAN1_H |
通道1 对应的CAN总线H |
|
6 |
CAN1_L |
通道1 对应的CAN总线L |
|
7 |
CAN1_R+ |
终端电阻120Ω默认使能,此引脚实际上是UART控制口RX |
|
8 |
CAN1_R- |
终端电阻120Ω默认使能,此引脚实际上是UART控制口TX |
|
9 |
CAN2_H |
通道2 对应的CAN总线H |
|
10 |
CAN2_L |
通道2 对应的CAN总线L |
|
11 |
CAN2_R+ |
终端电阻120Ω默认使能,此引脚实际上是GND |
|
12 |
CAN2_R- |
终端电阻120Ω默认使能,此引脚实际上是GND |
|
13 |
接线卡槽 |
将CAN盒插针形式的接口转换为带螺栓接线接口(可以拆卸) |
基础用法
- 连接电脑
通过USB A公转B公数据线,将设备连接电脑
- 在线使用
不需要安装上位机软件,直接通过浏览器打开官网https://canmb.com/
(直接点击链接,或在浏览器浏览器地址栏输入 canmb.com)

- 第一次访问必须联网,可以右键另存为保存到本地、后续从本地访问
- 浏览器建议选择新款,如Chrome,360等;需要支持webusb功能
- 连接设备
点击“连接设备”按钮
再在弹窗中选择设备“STM32 Virtual ComPort”,接着点击“连接”

- 若未出现弹窗,可能是浏览器版本过低;可以换个浏览器再试
- 若弹窗中未出现指定设备,可能是需要安装驱动;参考下文
- 安装驱动
默认免驱,若第三步已经成功识别设备、则可不用安装
若设备插上电脑后设备管理器显示为黄色标识未识别设备,则下载驱动并安装:
https://gitcode.com/Premium-Resources/15d7f
- 参数配置
使能CAN通道、选择协议、模式、速率、采样点等,最后点击“开始使用”

- 接收数据
将CAN通道对应的总线H、L接口对接外部其他节点,接收其他节点发来的报文

- 发送数据
点击界面上方“发送报文”按钮;在弹出的窗口中填写要发送的报文内容、开始发送

对端成功接收到数据:

进阶用法
功能一:高级配置
在“设备配置”界面,点击左侧“高级配置”按钮
可以自定义分频系数、sega、segb、sjw、tdc等参数,适用于高级玩家

功能二:修改主频
在“设备配置”界面,点击左侧“设备管理”按钮
可以修改CAN控制器主频,可选64M或者40M;方便精确分频和锚定采样点

功能点三:速率匹配
在“设备配置”-“基础配置”界面右侧有个“自动匹配按钮”
可以让上位机遍历调整CAN盒配置,直至能够收到报文;适用于不知道总线速率配置场景


功能点四:串口控制
除了USB接口以外,此设备还支持由串口控制
取USB转UART调试器,与设备尾部的GND、RX、TX接口对接,默认波特率115200,8N1


- 由于设备尾部没有VCC引脚,所以使用串口控制时候,USB接口依旧要接(有电就行)
- 串口控制指令与USB接口控制指令完全一样,控制指令介绍参考“控制指令”章节
控制指令(用于二次开发)
一、获取能力集和当前配置
|
格式 |
{c:attr} |
|
参数 |
无 |
|
返回值 |
设备能力集 { sys_frequency:系统主频 uart_baudrate:串口波特率 tx_gates_num:发送邮箱格式 rx_filter_num:过滤条件个数 rx_fifo_size:缓存队列深度 } 控制器配置 { Channel:控制器编号 CurrentMode:当前模式 AutoRetransmission:自动重传使能位 NominalPrescaler:仲裁段分频系数 NominalSyncJumpWidth:仲裁段Sjw TQ NominalTimeSync:仲裁段同步段 TQ NominalTimeProp:仲裁段传输段 TQ NominalTimeSeg1:仲裁段Seg1 TQ NominalTimeSeg2:仲裁段Seg2 TQ DataPrescaler:数据段分频系数 DataSyncJumpWidth:数据段Sjw TQ DataTimeSync:数据段同步段 TQ DataTimeProp:数据段传输段 TQ DataTimeSeg1:数据段Seg1 TQ DataTimeSeg2:数据段Seg2 TQ TdcEnable:TDC使能位 TdcValue:TDC大小 } 缓存队列状态 { wp:写指针位置 rp:读指针位置 } 整系统状态 { rx_fifo_over_flow:队列溢出标记(0:未发送 1:发生) xx_pkt_print_mode:报文打印格式(0:二进制 1:字符) } |
|
示例 |
上位机发送: {c:attr}
设备反馈: ====Auth:CanMB.com ====Type:CanMB_CANFD ====Ver:V1.0 ====ID:4d40c1a1 ====Attribution: ---- sys_frequency:40M ---- uart_baudrate:115200 ---- tx_gates_num:32 ---- rx_filter_num:32 ---- rx_fifo_size:100 ====Configuration: ---- Init { Channel:0 CurrentMode:DISABLE AutoRetransmission:0 NominalPrescaler:0 NominalSyncJumpWidth:0 NominalTimeSync:1 NominalTimeProp:1 NominalTimeSeg1:0 NominalTimeSeg2:0 DataPrescaler:0 DataSyncJumpWidth:0 DataTimeSync:1 DataTimeProp:1 DataTimeSeg1:0 DataTimeSeg2:0 TdcEnable:0 TdcValue:0 } ---- Init { Channel:1 CurrentMode:DISABLE AutoRetransmission:0 NominalPrescaler:0 NominalSyncJumpWidth:0 NominalTimeSync:1 NominalTimeProp:1 NominalTimeSeg1:0 NominalTimeSeg2:0 DataPrescaler:0 DataSyncJumpWidth:0 DataTimeSync:1 DataTimeProp:1 DataTimeSeg1:0 DataTimeSeg2:0 TdcEnable:0 TdcValue:0 } ---- Rx_Fifo { wp:0 rp:99 } ---- Status { rx_fifo_over_flow:0 xx_pkt_print_mode:0 } |
二、修改CAN控制器主频
|
格式 |
{c:freq,mode:%mode%} |
|
参数 |
%mode% 0: 40M主频(默认)1: 64M主频 |
|
返回值 |
ok |
|
示例 |
上位机发送: {c:freq,mode:0}
设备反馈: ok |
三、修改串口波特率
|
格式 |
{c:uart,baud:%baud%,keep:%keep%} |
|
参数 |
%baud% 0: 115200(默认), 1: 1200, 2: 2400, 3: 4800, 4: 9600, 5: 19200, 6: 38400, 7: 57600, 8: 115200, 9: 230400, a: 460800, b: 921600, c: 1000000, d: 1500000 (数据格式8N1) %keep% 0: 临时修改 1: 永久修改 |
|
返回值 |
ok |
|
示例 |
上位机发送: {c:uart,baud:0,keep:0}
设备反馈: ok |
四、修改报文打印方式
|
格式 |
{c:rx_print,mode:%mode%} |
|
参数 |
%mode% 0: 二进制格式(默认) 1: 文本格式 |
|
返回值 |
ok |
|
示例 |
上位机发送: {c:rx_print,mode:0}
设备反馈: ok |
|
备注 |
l 文本打印格式: {c:rx_pkt,ch:%u,id:%08x,ext:%u,fd:%u,brs:%u,len:%u,data:%02x....%02x,idx:%08x} ch: 控制器通道ID id: 报文ID ext: 扩展帧标记 fd: CANFD格式标记 brs: 变速帧标记 len: 数据长度 data: 数据内容 idx: 报文索引
l 二进制打印格式: struct { uint32_t ext:1; // 扩展帧标记 uint32_t fd:1; // CANFD格式标记 uint32_t brs:1; // 变速帧标记 uint32_t id:29; // 报文ID // uint8_t ch:1; // 控制器通道ID uint8_t dir:1; // 0 rx, 1 tx uint8_t idx:2; // 报文索引 uint8_t dlc:4; // 报文DLC值 uint8_t data[data_len]; // 数据内容,变长 uint8_t maigc:4; // 固定0x3b,对应字符 ';' } |
五、初始化CAN控制器
|
格式 |
{c:init,channel:%channel%,mode:%mode%,arb_pre:%arb_pre%,arb_sega:%arb_sega%,arb_segb:%arb_segb%,arb_sjw:%arb_sjw%,brs_pre:%brs_pre%,brs_sega:%brs_sega%,brs_segb:%brs_segb%,brs_sjw:%brs_sjw%,tdc_enable:%tdc_enable%,tdc_value:%tdc_value%,auto_retry:%auto_retry%} |
|
参数 |
%channel% 通道ID;0:通道1,1:通道2 %mode% 模式;0: disable,1: classic can, 2: canfd without brs, 3: canfd with brs, 4: listen only %arb_pre% 仲裁段分频系数;%02x格式 %arb_sega% 仲裁段sega逻辑值(对应同步段+传输段+seg1);%02x格式 %arb_segb% 仲裁段segb逻辑值(对应seg2);%02x格式 %arb_sjw% 仲裁段sjw;%02x格式 %brs_pre% 数据段分频系数;%02x格式 %brs_sega% 数据段sega逻辑值(对应同步段+传输段+seg1);%02x格式 %brs_segb% 数据段segb逻辑值(对应seg2);%02x格式 %brs_sjw% 数据段sjw;%02x格式 %tdc_enable% TDC使能位;0:不使能,1:使能 %tdc_value% TDC值;%02x格式 %auto_retry% 自动重传使能位;0:不使能,1:使能 |
|
返回值 |
ok |
|
示例 |
上位机发送: {c:init,channel:0,mode:3,arb_pre:01,arb_sega:38,arb_segb:18,arb_sjw:38,brs_pre:02,brs_sega:07,brs_segb:03,brs_sjw:04,tdc_enable:1,tdc_value:05,auto_retry:1}
设备反馈: ok |
|
备注 |
l 波特率计算方法 主频(MHz) / 分频系数 = (sega+segb) * 速率(Mbps) 比如示例中配置”arb_pre:01,arb_sega:38,arb_segb:18”,带入公式 40/1 = (0x38+0x18)*speed,得speed=0.5Mbps |
六、发送CAN报文
|
格式 |
{c:send,channel:%channel%,gate:%gate%,enable:%enable%,id:%id%,ext:%ext%,fd:%fd%,brs:%brs%,len:%len%,repeat:%repeat%,period:%period%,data:%data%} |
|||
|
参数 |
%channel% 通道ID;0:通道1,1:通道2 %gate% 发送通道(邮箱):%02x格式,范围0~tx_gates_num %enable% 使能标记:0:不使能,1:使能 %id% 报文ID:%08x格式 %ext% 扩展帧标记:0:不是扩展帧,1:是扩展帧 %fd% CANFD格式标记:0:不是CANFD帧,1:是CANFD帧 %brs% 变速帧标记:0:不是变速帧,1:是变速帧 %len% 报文长度:%02x格式 %repeat% 是否重复:0:不重复,1:重复 %period% 重放间隔:%04x格式,单位ms %data% 数据内容:%02x格式,长度需与%len%匹配 |
|||
|
返回值 |
ok |
|||
|
示例 |
上位机发送: {c:send,channel:0,gate:00,enable:1,id:00000210,ext:1,fd:0,brs:0,len:08,repeat:1,period:0001,data:0102030405060708}
设备反馈: ok |
|||
|
备注 |
l 若总线上存在其他节点且波特率匹配,则能顺利接收到报文 l
若报文顺利被接收,会回显打印报文,打印格式参考上文“修改报文打印格式”
|
七、配置接收过滤条件
|
格式 |
{c:recv,channel:%channel%,gate:%gate%,enable:%enable%,id:%id%,mask:%mask%,from:%from%,to:%to%} |
|
参数 |
%channel% 通道ID;0:通道1,1:通道2 %gate% 发送通道(邮箱):%02x格式,范围0~tx_gates_num %enable% 使能标记:0:不使能,1:使能 %id% 报文ID:%08x格式 %mask% 报文ID对应的掩码:%08x格式,当且仅当收到的报文ID & %mask% == %id% & %mask% 时候,报文才会被接收 %from% 报文ID起始值:%08x格式 %to% 报文ID结束值:%08x格式,当且仅当%from% <=收到的报文ID <=%to%时候,报文才会被接收 |
|
返回值 |
ok |
|
示例 |
上位机发送: {c:recv,channel:0,gate:00,enable:1,id:00000210,mask:00000ff0,from:00000210,to:00000211} 设备反馈: ok |
|
备注 |
l 如果配置了多个过滤条件,则所有的条件都被满足才能收到报文(与关系) |
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。










评论