本帖最后由 ArterySW 于 2022-6-18 15:53 编辑
AN0044 Segger Jscope波形软件在AT32 MCU的使用
前言
这篇应用笔记描述了J-Scope波形软件简单应用。
在实际应用中,我们需要将数据以波形的形式显示。但使用串口上位机、 MDK的逻辑分析仪功能等
方式都比较复杂。而Segger推出的J-Scope,硬件连接仅需要J-Link,简单易用。
支持型号列表:
AT32F系列
1 J-Scope 简介
1.1 什么是 J-Scope
J-Scope 是 Segger 推出的一款免费软件,用于 MCU 运行时,实时显示数据的波形。
J-Scope 分为 HSS 和 RTT 两种模式:
1)HSS 模式直接使用 J-Scope 加载 MDK 或 IAR 的可执行文件即可,操作简单但采样速度较慢;
2)RTT 模式只需要在用户程序里添加 Segger 的 RTT 组件,操作稍麻烦但是采样速度更快更实用。
1.2 软/硬件版本
硬件-JLINK:常见的 JLINK BASE 需要 V9 及以上版本;而 JLINK PRO 或 JLINK ULTRA 使用 V4 及以上版本即可。
软件-MDK:MDK4 或 MDK5 皆可。本专题配套的例程需使用 MDK5。
1.3 支持的设备
1)J-Scope在HSS(High-Speed-Sampling)模式下支持的内核如下:
2)J-Scope在RTT(Real-Time Transfer)模式下支持的内核如下:
1.4 不同版本 JLINK 速度对比
截图中的数据主要对于HSS模式说的,而RTT模式没有这些限制,基本JLINK速度支持到多大,RTT就可以达到多大。
对于JLINK BASE来说,基本都是截图里面的Other选项,也就是说在HSS模式下支持10个变量采集,采样速度1KHz。
2 J-Scope 环境准备
2.1 J-Scope 安装
1)解压 xx\AN0044_Segger_Jscope_on_AT32_MCU \JScopeTool\Setup_JScope_V6xxm.zip;
2)双击 Setup_JScope_V6xxm.exe,开始安装。
3)点击点击 NEXT,继续安装。
4)点击 I Agree 同意协议。
5)选择快捷方式添加位置,此处选择了添加到开始菜单,然后点击 NEXT 继续安装。
6)点击 Browse 选择安装路径。
7)在弹出的界面选择路径,然后点击确认。用户可自行选择安装路径,本示例选择安装在D:\tool\J_Scope。
8)点击 Install 开始安装。
9)点击 Finish 完成安装。
2.2 安装 AT32 相关 package
先解压 xx\AN0044_Segger_Jscope_on_AT32_MCU \JScopeTool\AT32F4xx_Pack_V1.x.x.zip;然后分别安装 Keil.AT32F4xx_DFP.1.x.x.pack,Segger_AT32F4xx_AddOn.exe。
2.2.1 安装 Keil.AT32F4xx_DFP.1.x.x.pack
1)双击 Keil.AT32F4xx_DFP.1.x.x.pack 开始安装。
2)点击 NEXT 继续安装
3)点击 Finish 完成安装。
2.2.2 安装 Segger_AT32F4xx_AddOn.exe
1)双击 Segger_AT32F4xx_AddOn.exe 开始安装。
2)在弹出界面点击 Browse 以选择安装路径。
3)选择安装路径:注意,安装路径必须选择 JLink 的安装路径,否则找不到 JLinkDevices.xml,无法安装。
4)点击 Start,开始安装。
5)若安装成功,会绿色字体提示安装成功。
6)若安装失败,则会红色字体提示失败原因:此处是安装路径不对,因此找不到 JLinkDevices.xml文件。重新安装,正确选择安装路径为 JLink 安装路径即可。
3 HSS(High Speed Sampling)模式
3.1 HSS 模式简介
HSS 模式比较简单,仅需大家将 MDK 生成的可执行文件 xxx.axf 或者 IAR 生成的可执行文件 xxx.out文件加载到 JScope 软件里面即可。
硬件连接:使用标准的下载接口(VCC,GND,SWDIO,SWCLK 和 NRST)或三线 JLINK-OB(GND,SWDIO,SWCLK)即可。
优势:随时可以连接目标板,不影响目标板的正常功能,不需要额外资源。无需用户写目标板代码。
劣势:相对 RTT 模式 ,采样速度慢,基本固定在 1KHZ 左右,仅适用于变量变化速度低于 1KHZ 的情况。
3.2 使用方法
此处以 MDK 为例,硬件以 AT32F403A 为例。
3.2.1 生成可执行文件
打开 MDK 工程,编译、下载程序,并生成可执行文件 HSS.axf。
3.2.2 新建工程
打开 J-Scope 后,新建工程:
3.2.3 配置工程
1)JLINK接口选择:大家通常使用的JLINK都是USB接口,所以此处选择USB。
2)目标器件选择:此处选择AT32F403AVGT7。
3)目标接口和速度选择:
目标接口:根据应用程序配置,选择SWD/JTAG均可。本例程选择的SWD,所以这里也选择SWD。JLINK速度:JLINK速度配置不要太高,这里选择4000kHz。
4)模式选择:此处选择HSS。
5)选择可执行文件:此处在MDK例程的路径里找到可执行文件(HSS.axf)。
6)配置完成,点击ok,完成配置。
3.2.4 选择要查看的变量
1)打勾选中;
2)点击 ok。
3.2.5 开始运行
1)单击红点,开始显示数据。
2)此时跳出警告,点击OK即可。
显示的波形(HSS)
4 RTT(Real Time Transfer)模式
4.1 RTT 模式简介
RTT模式类似于串口上传数据。需要移植RTT组件,配置上行缓冲区,发送数据等操作。
硬件连接:使用标准的下载接口(VCC,GND,SWDIO,SWCLK和NRST)或三线JLINK-OB(GND,SWDIO,SWCLK)即可。
优势:
1. 允许比HSS更高的数据采样速度,高达2 MB/S。即使目标上有512字节的小缓冲区,也可以达到1 MB/S。
2. 数据采集与目标板应用程序的执行同步,因为应用程序决定何时采样数据。
3. 时间戳等数据可以添加到数据样本中。
劣势:
1. 需要移植RTT组件等操作,较HSS模式更麻烦一些。
4.2 使用方法
4.2.1 移植 RTT 组件
1)将以下4个文件复制到MDK工程路径下,并添加进工程。
将 RTT 组件添加到MDK 工程(RTT)
使用下述函数,配置上行缓冲区:
SEGGER_RTT_ConfigUpBuffer(1, "JScope_u4u2", buf, 2048, SEGGER_RTT_MODE_NO_BLOCK_SKIP);
1. 第一个参数:buffer索引--此处选择1;
2. 第二个参数:数据格式--固定格式为JScope_xy;
xy支持的格式如下:
例如:
"JScope_u4u2":表示包含32bit无符号数据和16bit无符号数据,且数据顺序按照u4u2的排列顺序。
"JScope_t4i4u2":表示包含32bit 时间戳,32bit有符号数据和16bit无符号数据,且数据顺序按照t4i4u2的排列顺序。
3. 第三个参数:缓冲区buffer选择;
4. 第四个参数:buffer size;
5. 第五个参数:模式--使用RTT模式的话,最后一个参数仅支持SEGGER_RTT_MODE_NO_BLOCK_SKIP和 SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL。此处选择SEGGER_RTT_MODE_NO_BLOCK_SKIP。
3)调用SEGGER_RTT_Write函数发送数据:
SEGGER_RTT_Write(1, &Test_Data1, 4);
SEGGER_RTT_Write(1, &Test_Data2, 2);
4)编译、下载应用程序。
4.2.2 打开 J-Scope,新建工程
4.2.3 配置工程
1)JLINK接口选择:大家通常使用的JLINK都是USB接口,所以此处选择USB。
2)目标器件选择:此处选择AT32F403AVGT7。
3)目标接口/速度选择:
目标接口:根据应用程序配置,选择SWD/JTAG均可。本例程选择的SWD,所以这里也选择SWD。
JLINK速度:这里选择默认的4000kHz。
4)模式选择:此处选择RTT。
5)配置完成,点击ok,完成配置。
4.2.4 开始运行
单击红点,开始显示数据。
显示的波形(RTT)
5 J-Scope 软件介绍
5.1 界面介绍
5.2 数据导出
J-Scope 支持导出 CSV 或原始的 RAW 格式的数据。
1)若采样正在进行,则需要先停止运行:
2)点击File->Export Data:
3)填写文件名->点击保存:
4)打开RTT.CSV可以看到存储的数据,如下图:
5.3 快捷键
6 例程
6.1 HSS 模式
1)解压并打开xx\AN0044_Segger_Jscope_on_AT32_MCU \SourceCode\ J-Scope_HSS_V1.x.x。
2)应用程序定义两个全局变量Test_Data1,Test_Data2。
2)新建J-Scope工程,再选中采样变量(Test_Data1,Test_Data2),再点击开始运行即可。
6.2 RTT 模式
1)解压并打开xx\AN0044_Segger_Jscope_on_AT32_MCU\SourceCode\ J-Scope_RTT_V1.x.x.
2)移植RTT组件;
3)main.c包含SEGGER_RTT.h文件;
4)定义两个全局变量Test_Data1,Test_Data2;
5)上行缓冲区配置:
SEGGER_RTT_ConfigUpBuffer(1, "JScope_u4u2", buf, 2048, SEGGER_RTT_MODE_NO_BLOCK_SKIP);
6)数据输出:
SEGGER_RTT_Write(1, &Test_Data1, 4);
SEGGER_RTT_Write(1, &Test_Data2, 2);
7)然后新建J-Scope RTT工程,再点击运行即可观察波形。
|