前言
大家好,我是小麦
在往期的文章中,曾经介绍过PWM
,SPWM
,还有SVPWM
的实现,另外还有PID
输入输出的时间响应;
对不同滤波算法的测试,这些如果只通过单纯的数据就变得十分的不直观;
这时候有一个图形化显示软件就变得尤为重要。
当然,我前面通常使用的是串口虚拟示波器软件,即把单片机上的数据通过串口通讯发送到PC上,然后PC上的软件将串口数据绘制成相应的波形,虽然也很方便,但是有几个缺点:
- 传输速度慢,通常来说是
115200
波特率,当然也有更高的,不过传输速度确实是个瓶颈; - 占CPU,因为如果要以高速度发送串口数据的话,就会占用大量的CPU资源,从而可能会影响到其他任务,这也不是我们期望看到的,当然也可以通过
DMA
和串口中断去做,但是中断频率太高,频繁地出栈和入栈,开销也很大的; - 另外还需要占用一个串口资源;
因此我们这时候没有串口,并且需要抓取的波形需要很高的采样频率,另外CPU没有额外的资源让我们去跑串口发送的任务的时候,这时候,JSCOPE
可以满足需求;
需要配合jlink
一起使用,对于V8固件的jlink
仿真器,采样速度比较慢,这里推荐使用V9固件的jlink仿真器;
经过我之前这么长时间的使用来看,虽然JSCOPE
还有很多地方需要完善,还有很多功能需要优化,但是目前的来说,它的采样频率还是很高的,大家可能听说过香农采样定理;
香农采样定理说采样频率大于两倍信号频率分量中的最大频率就可以从采样信号中不失真的恢复原连续信号。
好下面开始言归正传;
例如要采样周期100us
正弦波形的电流,通过图形化显示出来,这里有两个方案;
- 采集的电流波形数据通过
DA
模块(数字量转模拟量)输出,然后通过示波器实时采集; - 通过仿真器读取单片机内存中保存电流数据的变量,实时显示到PC上,这个通过
JSCOPE
就可以实现了;
下面简单介绍一下,如何使用 J-scope。
J-Scope介绍
J-Scope可以像示波器一样显示多个变量的值。它读取一个elf文件,并允许选择多个变量以使其可视化。我们可以简单地将目标微控制器连接到J-Link,刷新应用程序并启动J-Scope。
通过几个步骤,您可以配置J-Scope,并选择要显示的变量。可以将配置存储在项目文件中,以方便重用和可移植性。
在J-Scope中选择的每个符号都可以单独配置。上下移动图形以更改零基线或更改其分辨率。选择是使图形中的符号可视化还是仅在监视面板中显示其值。
分析收集的数据,在可视化的图形中滚动,放大和缩小或将数据保存到文件中以进行进一步分析。
J-Scope可以与调试环境并行使用,并扩展了IDE的调试经验。
快速使用
本文基于STM32F103C8T6
的硬件平台,使用的软件是J-Scope V5.10d
,
我们还需要一个J-Link仿真器,V8版本采样频率高到50Hz,比较慢;
这时候就需要V9版本,采样频率可以到1MHz;另外V9可观察变量也多一些,基本够用。
J-Link驱动下载链接:https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack
J-Scope下载链接:https://www.segger.com/j-link-j-scope.html
测试部分的代码使用的是上次实现SVPWM的工程代码,在本次我做了些许的改动,在后面会简单演示 一下整体效果。
双击打开软件并新建工程,具体如下图所示;
选择相应的目标设备Specify Target Device
,我们这里使用的是STM32F103C8T6
,找到相应选项即可;
下一步就是选择elf
文件,如果使用ARMCC
进行编译,最终生成的文件是.axf
文件,所以根据自己的实际情况选择即可;
最终整体如下图所示;
在正确设置相应的硬件,加载固件之后,就能添加我们需要观察的变量,最终会通过图形化的形式显示到可视区域;
这里我设置了SVPWM
调制中的Ta
,Tb
,Tc
变量,点击工具栏的红色按钮,开始仿真,下面就能显示出变量的波形;
下面是视频操作流程;
作者:菜刀和小麦
来源:小麦大叔
推荐阅读
欢迎大家点赞留言,更多Arm技术文章动态请关注极术社区嵌入式客栈专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。