J-Scope的使用


1、硬件准備

  首先准備Jlink硬件,V8版本在J-Scope中采樣頻率高到50Hz,粗略的觀看還可以;V9版本可以到1MHz;對於Scpoe還有一個同時觀察變量的數量,V8最少,V9可觀察的多一些,基本夠用。

2、軟件准備

segger官方網站地址:https://www.segger.com/

Scope軟件下載地址:https://www.segger.com/j-link-j-scope.html

目前為Setup_JScope_V510d.exe

3、J-Scope軟件配套JLink的軟件版本

要想使用J-Scope,需要JLink的軟件版本高一些,軟件版本和Jlink的硬件本無關,只要自己的仿真器支持升級就行,所以最好下載最新的JLink驅動。

下載網站:https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack

目前最新的驅動:JLink_Windows_V620h.exe

4、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中。

5、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;}

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM