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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章