PCAN View 使用
CAN 监视软 PCAN-View 可以监视捕获 CAN 通讯数据,支持设置比特率,支持手动和自动对外发送报文。用于汽车控制系统故障分析测试,当然还可以借助这个工具来开发调试 CAN 驱动程序,以及通信应用程序验证。
1. 软件下载
PCAN-View 目前只有 Windows 版本,在 PCAN-View 官网页面点击 资料下载
,再点击 PCAN-View
即可进入下载,如下图。
下载链接: https://peak-system.com.cn/software/apsoftware/pcan-view/
下载后自行安装,这里不再说明,安装好后,启动可以看到界面如下。
2. 驱动安装
PCAN-View 属于软件调试工具,要配合 CAN 硬件调试工具(USB 转 CAN 协议工具)使用,注意电脑要安装驱动,在 PCAN-View 的信息页面点击 资料下载
,再点击 Windows驱动程序
即可下载(可以看到还提供 Linux 版本驱动)。
下载后自行安装,这里不再说明,如下图安装后打开计算机的设备管理器,可以看到可识别的 CAN 硬件调试工具。
3. 连接设备
如下图,默认启动 PCAN-View 时自动弹出的 Connect 设置页面,连接调试设备本质和打开串口一样,在此过程中要启动设置页面并配置一些参数。
还可以点击菜单栏的 CAN 菜单,再点击 “Connect” 选项来启动 Connect 页面。
如上图,Connect 界面启动后,第 1
步,在列表选择可用的 PCAN 调试器,如果设备选择列表为空表示没有可用的调试器(接入调试器,在设备选择列表右键点击刷新可重新检测)。
第 2
步,点击 Mode 输入框,选择 CAN 调试器类型,默认为 SJA1000,SJA1000 是飞利浦开发的一款适合 CAN 区域网络的独立控制器,在汽车电子和一般工业环境中使用,集成 CAN 2.0B 协议,所以 SJA1000 被当作一类。
第 3
步,点击时钟频率输入框,选择时钟频率,时钟频率是 CAN 控制器运行的频率,由外部晶振提供,通过预分频器调整,SJA1000 固定为 8MHz。
第 4
步,如上图,选择波特率,5Kbps-1Mbps 可选,还可以自定义波特率,自定义需要配置图中框选的 CAN 总线时序寄存器(BTR 即 Bus Timing Register 的缩写),下一小节详细说明。
注意: 网络中各节点波特率应一致,否则节点会进入 Bus-Off 的错误状态,并会影响其他节点通讯。
第 5
步,如下图,点击 Acceptance Filter 选项卡,选择接收帧类型 Standard/Extended
,再设置过滤 ID 范围,标准帧过滤范围 000H-7FFH,扩展帧过滤范围 00000000H-1FFFFFFFH。
第 6
步,其他选项设置,点击 Options 选项卡,如果要开启 仅监听模式 则勾选Listen-Only Mode。
默认启动后会主动发出数据帧检测总线中活动的 CAN 节点设备,启动 仅监听模式 可以禁止发出数据帧。
第五步,最后点击 OK 确认即可,点击后 PCAN 调试器开始工作。
4. 自定义波特率
如下图,第 1
步,点击波特率选择框右侧的编辑按钮。第 2
步点击相应调试器类型,这里以 CAN (SJA1000) 为例,其他类型方法相同。
第 3
步,选择时钟频率,对于 CAN(SJA1000) 固定为 8MHz。第 4
步,点击添加一个波特率选项。
第 5
步,点击新增波特率选项,再通过下图表格配置时序寄存器(BTR),BTR 寄存器值由两个字节组成,BTR 的每个数据位只由以下四个字段决定。
(1) Prescaler 为时钟预分频系数,用于降低 CAN 时钟频率。
(2) TSEG1 相位缓冲段 1,TSEG2 相位缓冲段 2。CAN 数据帧中每个位的时间被分为同步段 SS,传播段 PTS,相位缓冲段 1(TSEG1),相位缓冲段 2(TSEG2)这 4 个段,每段的时间长度决定通信同步和错误处理能力。
(3) SJW 即重同步补偿宽度(Resynchronization jump width),作用是增大或减少 CAN 波特率的容许偏差量。
其中 Prescaler 位于寄存器 D8-D13,TSEG1 位于寄存器 D0-D3,TSEG2 位于寄存器 D4-D7,SJW 位于寄存器 D14-D15,所以整理得如下表格。
注意:各个字段的值要减 1 后再组合成 BTR 值写入时序寄存器。
4.1 波特率计算
在 PCAN View 中 CAN 总线波特率根据 CAN 控制器时钟频率,Prescaler,TSEG1,TSEG2 计算得到,计算公式如下。
b p s = C l o c k P r e s c a l e r ( T S E G 1 + T S E G 2 + 1 ) bps = \frac{Clock}{\frac{Prescaler}{(TSEG1 + TSEG2 + 1)}} bps=(TSEG1+TSEG2+1)PrescalerClock
其中 Clock
为 CAN 控制器主时钟频率,这里固定为 8MHz,Prescaler
为时钟预分频数,用于降低时钟频率,参数允许范围 1-64。TSEG1
为相位缓冲段 1,参数允许范围 1-16。TSEG2
为相位缓冲段 2,参数允许范围 1-8。
4.2 时间量子
tq(即 Time quantum 的缩写)表示时间量子,Nq 为节拍数。CAN 为了适应各种波特率,不使用时间来度量每个段的时间长度,而是使用节拍,并将节拍称为时间量子即 Tq。
例如波特率为 500Kbps,则每个 Bit 周期 Tbit 为 1/500K 即 2000ns,如果分为 16 个节拍,则 Nq 为 16,得到 Tq 为 125ns。
4.3 采样点
Sample Point 即采样点,CAN 通信过程中,各节点对总线电平进行采样,判断每个 Bit 位的值是 0 或 1。为增强准确性规定每个 Bit 位的采样时机(即采样点),是进行 Bit 位的采样时间与 Bit 总时长的比值。
5. 发送报文
如果你没有新建好的报文,那么点击菜单栏的 Transmit 菜单,再点击 New Message 选项新建报文,如下图。
点击后弹出的界面如下图所示,填写设备 ID,填写字节长度,填写字节数据,选择报文类型。为了直观理解可以在 Comment 文本框给报文添加标注。
注意:多字节数据要按照小端模式填写字节,例如浮点数 200.0 对应的大端字节序为 43 48 00 00,但在填写时应按照 00 00 48 43 的方式填写。
编辑完成后点击 OK,新建报文被添加至发送列表,如下图。
如果有新建好的报文,可以选中报文在右键点击,再点击 Edit Message 选项修改报文,如下图。
选择发送列表的报文,再点击菜单栏的 Transmit 菜单,再点击 Send 选项即手动发送报文,如下图。
最后点击 File 菜单,再点击 Save,把发送列表保存起来,以后只需要打开已经保存的发送列表就不需要重新新建,即可直接使用了。
6. 接收列表
如下图,接收报文被添加至接收列表。CAN 总线属于公共总线,一个硬件调试器可以同时连接,接收多个节点发出的报文,于是接收列表把接收到的报文按照设备 (CAN-ID) 分类,用 Count 统计每个 ID 的报文数量。
Data 字段,表示报文原始数据,Data 只显示最新接收的原始数据,如果要观察实时报文则要使用报文跟踪功能(Trace)。
Type 字段,标注最新报文的类型,报文类型有:扩展帧(Extended Frame),CAN-FD,远程帧(Remote Requst),Bit-Rate-Switch(BRS)四种。
Length 字段,即 Data 字段原始字节数量。
7. 报文跟踪
如下图,点击 Trace 就进入到跟踪界面,在跟踪界面可以看到所有报文。报文跟踪默认开启。点击菜单栏 Trace 可以手动开启停止报文跟踪。
8. 工具栏
工具栏按钮并非新增功能,而是菜单选项的快捷按钮,把菜单栏中常用的菜单选项制作成了独立按钮并放置在工具栏中。
9. 状态栏
硬件调试器的连接状态,发送接收错误计数,和错误状态指示会显示在状态栏。
(1) 其中错误计数器 Overruns 表示 接收 丢失的报文个数,如果 CAN 控制器接收了太多的报文,硬件触发中断不能全部处理,此时显示丢失数量。
(2) QXmtFulls 表示 发送 丢失的报文个数,PCAN-View 的发送队列空间为 32768 个报文,如果设备驱动不能发送所有写入发送队列的报文到CAN控制器,此时显示丢失报文数量。
(3) 错误状态指示通常显示为空,只有错误发生时,会显示一个错误报警。
(4) Status,指示总线的各种状态,例如 OK,Bus-off 等状态。
详细查看:
https://www.zhihu.com/question/27405880