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

相關文章
相關標籤/搜索