欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: I am master!使用Nucleo334打造新一代的調試利器 [打印本頁]

作者: 51hei大小    時間: 2016-6-17 15:16
標題: I am master!使用Nucleo334打造新一代的調試利器
     通常,我們調試一個芯片的時候,往往是編寫程序---下載---更改---下載。。。這種方法固然好,但是像我這樣的懶人不大喜歡,我喜歡找一種一勞永逸的方法來解決。于是,開始動手寫了這個I am Master!顧名思義,就是將Nucleo作為一個主機,與我們需要使用的軟件進行通信?赡苓@樣說你不是很理解,沒關系,下面還會一 一介紹的。
   電腦作為控制端,通過串口與我們的Nucleo進行通信,而Nucleo根據電腦發送的字符,解析,并且產生一定的時序,與我們需要使用的芯片進行通信。



    比如,電腦端通過串口向Nucleo發送 input 0 1 2,代表Nucleo需要將 0 1 2這三個引腳設置成為輸入狀態. 在我的程序中,將Nucleo左邊的A0~A5作為IO部分,分別對應編號0-5?梢杂糜趫绦斜容^簡單的任務。

注意:為了保證電腦端有一個良好的人機界面,大家務必使用能夠滿足linux終端要求的串口軟件。比如puTTy,smartty;蛘呤浅壗K端。像一般的串口軟件無法完成這個項目的要求。因為他們不能夠改變字體的顏色。這里推薦大家使用smarTTY,如果使用puTTY的話需要更改我上傳的程序。因為當我們按下Enter的時候,puTTY發送的是'',而smarTTY發送的是''。在附件中有最新的smarTTY的安裝版軟件。

    如果在使用smarTTY的時候,發現換行符不能正確顯示,請進行這樣的設置:





版本更新介紹:

V1.0.0支持函數:


V1.0.1新增函數:
V1.0.2更新說明:
V1.0.3更新說明:
  
V1.0.4更新說明:

v2.0.0(重要更新)。

吐槽,意見,或者建議請聯系(PS有沒有E語好的大神,幫忙翻譯一下man的說明部分):
qianfanguijin@163.com
qianfanguijin@gmail.com


版權聲明:
本軟件僅供與學習交流之用,未經允許,不得用于商業用途。

I am master v2.0.rar (2.3 MB, 下載次數: 8)
I am masterv1.0.0.rar (1.6 MB, 下載次數: 7)
I am masterv1.0.1.rar (2.22 MB, 下載次數: 7)
I am masterV1.0.2.rar (2.22 MB, 下載次數: 7)
I am masterV1.0.3.rar (2.22 MB, 下載次數: 7)
I am masterV1.0.4.rar (2.24 MB, 下載次數: 7)
master.hexV1.0.4hex文件.rar (21.51 KB, 下載次數: 7)
SmarTTY-2.0.rar (4.14 MB, 下載次數: 7)

--------------------------------------

使用入門:

Nucleo通電之后,通過串口發送這樣的信息:

先來認識一個命令 man ,類似于linux中的man 。當你遇到某一個命令而不知道如何使用的時候,可以使用這個命令。比如獲取input這個命令的解釋:

這個命令的功能是將引腳設置成為輸入模式,引腳的范圍是0-5,對用Arduino接口的A0-A5.現在,我們在0號引腳上面掛接一個LED,在1號引腳上面掛在一個開關(平時為1,按下為0)?梢酝ㄟ^input,output兩條命令來切換他們的模式:



在將引腳設置成為輸出模式之后,就可以使用set,reset,toggle三條命令來設置引腳了。set是置1,reset是清零,toggle是反轉。如果引腳的模式是輸入模式,可以使用read來讀取。如果read的參數不是0-5范圍之內,那么顯示的數值就會用N來代替。例如read 0 1 255
==> 1 1 N
顯示0,1引腳的電平值為1,255是一個非法引腳。


其余命令的解釋大家可以使用man來查看。我的英語很不好,man的解釋大部分都是通過谷歌翻譯的。大家可以幫助修改一下源文件的翻譯,還請告知。謝謝!


在我們平時的調試中,光使用IO接口恐怕難以滿足我們的要求。還需要一些更復雜的通信協議,比如說SPI。下面我們就來說說SPI的使用。

不管什么時候,man總是我們靠譜的好朋友。

在SPI通信上,使用板子上面表示的SPI引腳。這里就不詳細解釋了?梢钥匆幌掳遄由厦娴慕z印。

spi的參數有著固定的要求:

好了,就這么多,下面就來通過spi這條命令,讀寫SPI存儲芯片W25X16.他的數據手冊在附件中,大家可以下載學習一下。
先看W25的一個指令表:


在原PDF的第17頁。可以看到上面有一條指令是讀ID,解釋如下:


在面包板上面插好線之后,使用spi命令與之進行通信:

回應了兩個數字,0xEF,0x14,正好與上表的數據吻合。說明通信正確。

通過查看數據手冊可以看出,要想往一個地址內寫數據,首先要寫一個WriteEnable命令,在寫完WriteEnable命令之后,StatusRegister寄存器中相應的WEL為會被置1,說明允許寫。


在寫完WriteEnable命令之后,可以看到WEL位已經被置1了,說明操作正確。

下面將第一扇區格式化,之后往里寫如一些數據:

0x20是格式化命令,格式化命令之后WEL位被清零,說明不能在繼續寫數據。為了能夠繼續寫數據,只好在重新發送一遍WriteEnable命令了。

讀取一下格式化之后0x00處連續10個地址的數據:讀取的命令是0x03

數據全是0xFF,說明格式化成功了。下面再將0x00連續地址處寫如0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A十個數字,寫入之后再讀取:

這里寫入了10個數據,讀取了11個數據,可以看到第11個數據是0xff,也就是沒有被更改,寫入和讀取都正確。


好了,spi的操作就說到這里。
當然,你可能疑問,這使用了默認的模式3,如果我想使用模式0怎么辦呢?大家可以使用man spi-config尋找答案。


102801-0001R-SPIFlash.pdf (1.26 MB, 下載次數: 7)





一起來開發,定制你自己的命令

  可能你覺得這些命令遠遠不夠用,或者你希望定制一個你自己的命令,比如man 你的名字。其實,定制一個這樣的命令是一個很簡單的事情。
  在串口中接受到的字符,最終是要交給shell [void shell ( char * cmd_str) ; ]這個程序來處理的,這個程序將串口接收到的一行字符,在空格處分割,并且轉換成為int argc,char *argv[]的形式。這個形式是man函數的標準形式。argv[0]表示的需要調用的應用程序的名字。例如串口輸入input 0 1 2,經過shell的處理之后:
處理之后,shell去一個cmdList列表中尋找名字叫做input的函數。如果找到了,將控制權和argc,argv一起交給input函數。而input就是我們需要編寫的,只需要遍歷argv,讀取每一個引腳的編號,并且設置成為輸出即可。具體shell函數在cmdList中尋找input函數的方法在后文中會詳細講到。
下面是一個簡單的input函數的實現:
int input(int argc,char *argv[])
{
  int i=0;
  for(i=0;i<argc;i++)
  {
    //設置argv表示的引腳為輸入方式
  }
}

好了,下面就來說說定制命令的詳細步驟:

更多更有趣的功能歡迎你來實現!



-----------------------------------------------------------------


在v1.0.1版本中,新增了四個命令,servo,用于控制舵機的。函數的參數在500~2500之間,代表在舵機的50000us中,高電平占用的時間。比如servo 1000代表高電平是1000us,占空比是1000/50000=2%。但是寫完之后發現控制舵機并沒有什么卵用。因此這里就不再多廢話了,主要是講如何使用I2C接口。

I2C
    STM32F1和STM32F4使用的I2C接口是一類,用起來各種復雜,不好用。但是STM32F3的I2C卻非常好用。之前看見有人說STM32的I2C是雞肋,只能說明他沒有用過STM32F3的。下面就說說I2C如何使用。主要操作的芯片是LM75,一個溫度傳感器。
首先介紹三個命令:

為了編寫程序的簡便,I2C的操作使用流的方式,即只能采用內置的通信方式(START,STOP)。不能指定RESTART。一般的I2C的讀取操作是 START+devAddr[Write]+regAddr+ReStart+devAddr[Read]+{some bytes}+STOP。由于不能采用ReStart,所以像這樣的讀取應該分成先寫在讀兩部分,即:

我的I2C總線上掛接了一個LM75,但是我懶得查數據手冊去找他的設備地址,所以可以使用i2c-online查看所有在線的i2c設備的設備地址:

注:在V1.0.2種將i2c-online更改為i2c-scan,并根據設備地址添加了提示。如下圖。


通過這條命令查出了唯一的地址,0x90 。那么這個地址就是LM75的設備地址了。之后我們要進行的讀和寫的操作都要靠這個地址。其實這條命令的實現很簡單,只不過從0-127挨個詢問,看設備是否應達就行,通過邏輯分析儀抓包如下:(只截取了部分)



好了,有了地址就可以進行操作了,先來看看LM75的寄存器:

從上圖中可以看出,0x00是溫度寄存器的地址。要想讀這個地址處的數值,必須首先發送寄存器地址:



i2c-write必須要有-d參數,用于指示設備地址。其余的數據是要發送的數值。如果想通過i2c發送0x00 0x01 0x02 0x03 這四個數字可以使用這樣的命令:
設備地址0x90必須緊跟在-d的后面。除了i2c-write的位置之外,出現在什么地方都是可以的。


在發送完寄存器地址之后,就可以讀取寄存器中的數值了。查看數據手冊,可以看到LM75的溫度寄存器由兩個字節組成。在發送的時候先發送高字節,在發送低字節。

之后將兩個字節合并成一個16位的有符號數字,數字使用2的補碼表示。正溫度有正的有符號數表示(最高為是0),負溫度的最高位是1 。之后將數據去掉符號右移5位,加上符號,乘以0.125就是所需的溫度值。這里有幾個事例值,感興趣的話可以算一下:

先使用i2c-read來讀取一下這兩個字節:高字節在前:




最后來計算一下結果:0x16C0 >> 5 =0xB6 =186
所以溫度值為186*0.125=23.25

可以看出,煙臺的晚上還是非常涼爽的!

注:在V1.0.2版本中,i2c-read函數新增參數-a,用于指定寄存器地址(寄存器地址只能為1個字節。如果寄存器地址多于1個字節,只能使用先寫在讀的方式進行操作)。



另外,需要補充一點的是,i2c-write和i2c-read在正確寫入和讀取的時候不會輸出任何信息的。只有在發生錯誤的時候才會進行提示:





LM75A.pdf (137.07 KB, 下載次數: 7)





--------------------------------------------------------------------


V1.0.4命令文件說明
    在1.0.4版本中,新增了直接發送命令文件這一特色。下面就針對命令文件結合TCP/IP芯片W5100,進行一下說明。
   
    5100使用SPI方式進行通信,并且僅僅支持模式0. 還需要注意的是,對5100芯片進行讀寫的時候,SPI的速率不能太低。在之前的操作中,發現使用256KHz的SPI進行通信,不能正常的進行讀寫。因此在1.0.4版本中,將SPI的時鐘頻率提升到了4MHz。
    上圖是SPI通信的協議圖。分為3部分。第一部分是操作碼。讀的時候,操作碼是0x0F
,寫的時候操作碼是0xF0 。 第二部分是5100寄存器地址,2個字節,分為兩次發送。第三部分是需要寫的數據。1個字節。


    看一下相關的寄存器:
   
比如說設置本機IP,就要分四次來寫(本機IP由4個字節組成,每次只能對1個字節進行讀寫),如果設置成為192.168.1.3,那么應該使用這樣的命令:
除了本機IP,還需要設置網關IP,子網掩碼,MAC地址,共需要20次操作:
  1.     spi [ 0xf0 0x00 0x01 0xc0 ]
  2.     spi [ 0xf0 0x00 0x02 0xa8 ]
  3.     spi [ 0xf0 0x00 0x03 0x01 ]
  4.     spi [ 0xf0 0x00 0x04 0x01 ]

  5.     spi [ 0xf0 0x00 0x05 0xff ]
  6.     spi [ 0xf0 0x00 0x06 0xff ]
  7.     spi [ 0xf0 0x00 0x07 0xff ]
  8.     spi [ 0xf0 0x00 0x08 0x00 ]

  9.     spi [ 0xf0 0x00 0x09 0xde ]
  10.     spi [ 0xf0 0x00 0x0a 0xad ]
  11.     spi [ 0xf0 0x00 0x0b 0xbe ]
  12.     spi [ 0xf0 0x00 0x0c 0xef ]
  13.     spi [ 0xf0 0x00 0x0d 0xfe ]
  14.     spi [ 0xf0 0x00 0x0e 0xed ]

  15.     spi [ 0xf0 0x00 0x0f 0xc0 ]
  16.     spi [ 0xf0 0x00 0x10 0xa8 ]
  17.     spi [ 0xf0 0x00 0x11 0x01 ]
  18.     spi [ 0xf0 0x00 0x12 0x03 ]

  19.     spi [ 0x0f 0x00 0x01 r:1 ]
  20.     spi [ 0x0f 0x00 0x02 r:1 ]
  21.     spi [ 0x0f 0x00 0x03 r:1 ]
  22.     spi [ 0x0f 0x00 0x04 r:1 ]
復制代碼

在每次給5100通電的時候,都需要重新發送一下這樣的字符,太麻煩了,所以索性將這些命令保存在一個txt文件中,直接通過smarTTY發送文件:

點擊smarTTY中的send a binary file(在上圖中用圓圈圈出),選擇w5100.txt :

最后四個命令是讀取網關的ip地址。在設置完這些寄存器之后,就可以使用windows上的ping命令來測試一下了:


斷開5100的網線再ping一下:



w5100.txt.rar (214 Bytes, 下載次數: 7)


w5100_Datasheet_cn.pdf (1.8 MB, 下載次數: 7)

W5100_Datasheet_v1.2.5.pdf (1.61 MB, 下載次數: 7)



-------------------------------------------------------------
</argc;i++)





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1