J-Scope的使用

一、硬件准备html

  首先准备Jlink硬件,V8版本在J-Scope中采样频率高到50Hz,粗略的观看还能够;V9版本能够到1MHz;对于Scpoe还有一个同时观察变量的数量,V8最少,V9可观察的多一些,基本够用。算法

二、软件准备缓存

segger官方网站地址:https://www.segger.com/
并发

Scope软件下载地址:https://www.segger.com/j-link-j-scope.html
函数

目前为Setup_JScope_V510d.exe网站

三、J-Scope软件配套JLink的软件版本spa

要想使用J-Scope,须要JLink的软件版本高一些,软件版本和Jlink的硬件本无关,只要本身的仿真器支持升级就行,因此最好下载最新的JLink驱动。3d

下载网站:https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPackhtm

目前最新的驱动:JLink_Windows_V620h.exeblog

四、J-Scope软件的HSS使用方法

安装完成以后,找到本身的安装目录,如图所示,会看到J-Scope的启动文件和他的帮助文件。

UM08028_JScope.pdf是官方的帮助文档,很是详细专业。

(1)启动软件

能够新建工程,或打开之前已有的工程,以下图所示。

选择新建新建,电机【OK】后的界面如图所示:

(2)J-Scope软件配置 

  a、J-Link的连接选择

    USB:你们用的基本是USB接口的

    Serial No

    TCP/IP

    Exitsting Session

  b、Specify Target Device:指明目标器件,配置过程如图

  

  c、Target Interface &Speed:目标的接口和速度

    JTAG、SWD或FINE,仿真的速度,如图

  至于选择JTAG仍是SWD,须要根据本身开发板的接口来选择,与之相一致就好。

  d、Sampling Source

  

  e、Sampling Rate 单位us,最小修改成1.

    

  f、Elf File添加

  

  Elf文件是keil 生成的文件。扩展名为axf,在本身keil工程的文件夹中寻找。

  

  (3)J-Scope软件的观察变量

      

  FOC核心算法中的各个变量,勾选上便可,而后【OK】便可。

  

  链接好目标板,点击红色的圆点,便可开始采样,在采样过程当中,用鼠标子在变量区点取一个变量,而后按【+】【-】键,则能够实现图形的上移、下移,若是按一下【Ctrl】键,而后在按【+】【-】,则可实现图形的放大和缩小,实际上是修改了Y轴分辨率。

  采样中止后,在图形界面,鼠标左键点住拖动,可实现图形的左右移动,方便观察图像的历史记录。

  采样时或中止后都可点击放大和缩小图标,来实现采样率的改变。

  (4)J-Scope软件的保存数据文件

  【File】菜单中有数据的导出和导入功能,导出后可存为Excel文件,而后在Excel中进行处理,也可导入到Matlab中。

五、J-Scope软件RTT模式单片机工程中须要配置

  注:RTT模式选芯片型号的时候,必选对应的型号不能选内核型号。

    

  (1)下载这几个文件,也能够在Jscope的安装路径下找到。

  安装路径以下图:

  (2)将SEGGER_RTT.c,SEGGER_RTT.h,SEGGER_RTT.h添加进工程,并把SEGGER_RTT.c添加到工程。

  (3)添加缓存定义

    char JS_RTT_UpBuffer[4096];    // J-Scope RTT Buffer
    int  JS_RTT_Channel = 1;       // J-Scope RTT Channel

    上面的缓存大小能够给小点512也行。

  (4)随便找个地方初始化

     SEGGER_RTT_ConfigUpBuffer(JS_RTT_Channel, "JScope_I4I4I4", &JS_RTT_UpBuffer[0], sizeof(JS_RTT_UpBuffer), SEGGER_RTT_MODE_NO_BLOCK_SKIP);

    

  (5)

    #pragma pack(push, 1)
    struct {
        signed int Sine1;
        signed int Sine2;
        signed int Sine3;
      } acValBuffer;
    #pragma pack(pop)

    上面是你要发送的结构体,本身定义。

  (6)在你要发送的地方赋值并发送,例如中断:

      acValBuffer.Sine1 = Test_Counter1;
              acValBuffer.Sine2 = Test_Counter2;
              acValBuffer.Sine2 = Test_Counter3;

    SEGGER_RTT_Write(JS_RTT_Channel, &acValBuffer, sizeof(acValBuffer));

  (7)下面是重点!!!官方没有提到的。例如我想发四个数,两个int型,两个short型。

      #pragma pack(push, 1)

        struct {

            signed int Sine1;

            signed int Sine2;

            short Sine3;

            short Sine4;

        } acValBuffer;

        #pragma pack(pop)

  那么对应的初始化要改成"JScope_I4I4I4"这个参数就要改为"JScope_I4I4I2I2“

  (8)还有一个更重要的!那就是若是发送频率过块,快卡死,卡在一个循环里。

    SEGGER_RTT.c这个文件的WriteBlocking函数要作修改。

    

    加一句。

      if(NumBytesToWrite == 0){NumBytesToWrite = 1;}

相关文章
相关标签/搜索