文章目录
- 前言
- 一、USB-CAN模块
- 二、产品特性
- 三、引脚说明
- 四、使用说明
- 1.USB驱动安装
- 2.CAN配置工具说明
- 1. 菜单栏:
- 2. 模式选择和收发数据显示:
- 3. 数据发送
- 4. 发送模式
- 五、AT指令设置参数
- 六、硬件测试
前言
CAN总线协议:一种多主、串行通信协议,最早由博世(Bosch)在 1980 年代为汽车工业开发,现已广泛应用于工业自动化、医疗设备、船舶、航空等多个领域。CAN 总线以其高效、可靠和抗干扰能力强著称,特别适合在恶劣环境中使用。CAN通讯与 I2C、SPI 等具有时钟信号的同步通讯方式不同,CAN 通讯并不是以时钟信号来进行同步的,它是一种异步通讯,只具有 CAN_High 和 CAN_Low 两条信号线,共同构成一组差分信号线,以差分信号的形式进行通讯。
CAN总线的通信原理:是基于一组规则和机制,确保多个节点在共享同一总线时能够进行高效、可靠的通信。其核心原理包括 多主模式、仲裁机制、差分信号传输 以及 错误检测和处理。多主模式:每个节点都可以在总线空闲时发起通信请求,并且不需要预先确定哪个节点是主设备或从设备。每个节点既可以发送消息,也可以接收消息。仲裁机制:通过监视总线是否空闲以及优先级节点解决多个节点同时发起通信冲突问题。差分信号传输:CAN_H和CAN_L,两条线压差大于2V为显性,两条线压差接近0,通过电压差来确定信号状态,即使两条线同时受到干扰,信号依然可以正确传输。错误检测和处理:CAN 总线的每个节点都有错误计数器,用于记录发送或接收时的错误。如果某个节点的错误计数器超过一定阈值,节点将进入总线关闭 状态(即不再参与总线通信),以防止故障节点影响整个系统的通信。简单来说,CAN通信过程:
1. 发送方准备数据帧:节点准备好需要发送的数据帧,包括标识符、数据、CRC 等。
2. 监控总线:发送方首先监控总线是否空闲,只有当总线空闲时,才会开始发送帧。
3. 仲裁过程:如果多个节点同时发送数据帧,总线通过仲裁机制决定优先级最高的节点继续发送,其他节点进入等待状态。
4. 数据传输:获胜的节点继续发送帧,并监控总线电平以确保数据正确传输。
5. 确认和错误检测:接收方在 ACK 段确认是否正确接收到数据,同时通过 CRC 和位监控等机制检测错误。
6. 错误处理:如果检测到错误,系统触发错误处理机制,并重新发送数据。
一、USB-CAN模块
将 TTL 信号转换为 CAN 信号的模块。采用串口作为嵌入式系统的接口,数据传输简单,兼容 3.3V、5V 电源,支持 CAN 总线的 2.0A 及 2.0B 规范。模块搭载一个 32 位的 STM32 控制芯片和一个 CAN 收发芯片。14 组 32 位屏蔽滤波器,每组滤波器具有五种帧过滤方式。参数设置为 AT 指令设置方式,设置更简单。更宽的波特率范围3K-1Mpbs,网络适应性强。
二、产品特性
1、电压:3.3V~5V
2、电流:25~35mA
3、波特率:串口:4800~406800Bps,CAN:4K~1MBps
4、离线自恢复功能
5、14 组屏蔽滤波器
6、所在参数可通过 AT 指令设置,且掉电保存
7、硬件、软件两种恢复默认参数方式
8、模块应用领域:智能楼宇、工控设备、智能家居和汽车电子等
三、引脚说明
四、使用说明
1.USB驱动安装
下载CH340驱动,驱动安装成功后,插上USB-CAN模块,打开设备管理器会识别出端口。
2.CAN配置工具说明
1. 菜单栏:
- 选择设备:将USB-CAN插入电脑后,在设备管理器找到对应COM口,点击配置软件的串口设置选择对应的端口和波特率(出厂默认9600),可以打开或关闭端口。
- 自动搜索:自动搜索出并选择USB-CAN设备,和选择设备的区别一个手动一个自动。
- 开始记录:记录接收端接收到的数据,类似日志。
- 使用说明:USB-CAN的使用手册。
- 设置模块:设置USB-CAN模块的波特率、帧格式以及过滤器参数。
波特率:设置串口和CAN的波特率。
帧格式:包含CAN总线的标准帧和扩展帧。
滤波器:用于过滤报文,模块内部提供有14组滤波器,每组滤波器占据两个32位寄存器,可通过指令设置这两个寄存器来配置过滤规则。简单来说,就是过滤掉不想要的报文数据,和CAN总线的错误帧类似。将不符合设定的报文从硬件过滤掉,不需要软件参与,从而节省MCU时间。滤波器使能,只有使能时,当前设置的滤波器组才会工作。然后点击更多过滤器,里面包含着两种过滤模式,列表模式和屏蔽模式。
- 列表模式:是基于一个明确的ID接收 CAN 帧的方式,只接收设定CAN ID相匹配的消息,忽略不匹配的消息。
- 屏蔽模式:通过设置一个掩码来筛选 CAN 帧,允许灵活地选择性接收一部分符合掩码条件的帧。屏蔽模式不像列表模式那样只处理特定 ID,它允许更多的灵活性,通过部分 ID 匹配来接收消息。
综合上面所述,两种模式的优缺点:列表模式精确接收所需的 CAN 帧,避免处理无关的帧。但数量有限,如果 ID 范围比较大,列表管理可能复杂。屏蔽模式灵活性高,适合处理范围广的 CAN ID 数据。但无法精确到每个ID,会接收到不需要的消息。
如何设置过滤不想要的ID,首先需要了解CANID格式来设置想要的ID,CANID是4个字节32位,帧类型包含标准帧和扩展帧,标准帧ID是11位,扩展帧ID是29位。帧ID是16进制数据,对于标准帧帧ID范围为 0x00000000~0x000007fff , 对于扩展帧帧 ID 范围为0x00000000~0x1fffffff。如CANID为1的标准帧数据帧:0x00200000。
然后通过标识码和屏蔽码进行比较过滤,而列表模式和屏蔽模式的比较方式都不一样。列表模式:CANID和其中一个码相同则允许通过。屏蔽模式:则根据屏蔽码确定哪些位需要参与比较,屏蔽码为1表示需要比较,为0则忽略,然后标识码与CANID进行比较,也可以用上位机直接设置可通过ID。示例如下:
屏蔽码:0x00400000
标识码:0x00200000
屏蔽码:0000 0000 0100 0000 0000 0000 0000 0000 (转二进制)
标识码:0000 0000 0010 0000 0000 0000 0000 0000
ID0: 0000 0000 0000 0000 0000 0000 0000 0000
ID1: 0000 0000 0010 0000 0000 0000 0000 0000
ID2: 0000 0000 0100 0000 0000 0000 0000 0000
ID3: 0000 0000 0110 0000 0000 0000 0000 0000
列表模式的屏蔽码与ID2,标识码与ID1相同,所以ID1,2的消息允许通过。屏蔽模式,屏蔽码的22位为1,则标识码的22位与CANID的22位比较,其余位忽略,相同通过,反之过滤,所以ID0,1的消息允许通过。
2. 模式选择和收发数据显示:
- 模式:透传模块或AT模式。
- 暂停接收:暂停在收发显示区显示其他数据。
- 筛选显示:通过ID范围筛选哪些帧ID数据显示和不显示,和过滤器类似。
- 搜索内容:搜索数据消息。
3. 数据发送
- 透传发送:以设置模块中的透传帧格式直接发送数据消息。
- AT指令发送:可以选择不同的帧类型帧格式,设置不同ID发送数据消息。
4. 发送模式
- 正常模式:可以和CAN网络通信。
- 回环模式:不能和CAN网络通信,模块本身自收发。
五、AT指令设置参数
AT指令 | 功能 |
---|---|
AT | 测试串口转 CAN 处于配置模式 |
AT+CAN_MODE=? / AT+CAN_MODE=0/1 | 查询/设置工作模式,0:正常工作模式,1:环回模式 |
AT+CAN_FRAMEFORMAT=? / AT+CAN_FRAMEFORMAT=使能,帧类型,标准帧ID,扩展帧ID | 查询/设置数据透传格式,0禁止1使能,0标准帧1扩展帧,标准帧ID范围:0-0x7FF,扩展帧ID范围:0 – 0x1FFFFFFF |
AT+CAN_FILTER < n > =? / AT+CAN_FILTERn=使能,模式,标识寄存器,屏蔽寄存器 | 查询/设置CAN滤波器,n:滤波器组号(0-13);0禁止1使能;0屏蔽模式,1列表模式;寄存器范围:0 – 0x1FFFFFFF |
AT+CAN_BAUD=? / AT+CAN_BAUD=3K-1000K | 查询/设置CAN波特率 |
AT+USART_PARAM=? / AT+USART_PARAM=波特率,数据位,停止位,校验位 | 查询/设置串口,数据位,0-8,1-9;停止位,0-0.5,1-1,2-1.5,3-2;校验位:0-无校验,1-奇校验,2-偶校验 |
AT+DEFAULT | 恢愎出厂默认参数 |
AT+CG | 进入配置模式,注意:需要先进入配置模式才能发送指令设置参数 |
AT+ET | 退出配置模式 |
AT+AT | 进入AT 指令模式 |
六、硬件测试
- 回环测试:短接CAN_H和CAN_L,上位机回环和串口助手回环,串口助手回环需把工作模式改为回环模式。
- 正常模式,准备2两个USB-CAN模块,CAN_H接CAN_H,CAN_L接CAN_L,组成CAN网络。注意:串口测试需要把十六进制数转换为十进制后,再设置相关参数。0x00200000转十进制2,097,152,0x00400000转十进制4,194,304。