發表文章

目前顯示的是 1月, 2021的文章

MicroPython on Nucleo-F401RE, 8. UART

圖片
使用MicroPython這個環境, 開發時都是在個人電腦上使用serial port (COM port)連接到開發板上的REPL。所以我們最最簡單的操作方式是在電腦上打開Putty, TeraTerm, 等終端機軟體, 選取某個serial port連到開發板, 然後就可以和開發板上的直譯器交談了。 其實這樣, 我們就占住了開發板上晶片的一個UART通道, 有些晶片特別小, 只有一個UART通道, 例如ESP8266。當我們在使用REPL開發時, 就不可能把這個UART拿來使用, 通常的做法會是將REPL改到別的通道去, 例如Wifi, 再把這個唯一的UART釋放出來使用。但其實之前嘗試的時候總會有一些奇怪的問題發生, 不知道現在的MicroPython版本是否改的較好了。 針對F401這個開發板, 因為本身有兩個UART通道, 所以問題就容易一些。REPL使用一個, 所以我們還有一個可以使用, 不會打架, 可以一邊開發寫程式(使用REPL, 占了一個UART), 一邊操作另一個UART, 並不會有問題。 那麼這兩個UART的腳位是什麼? 那一個UART被REPL使用了, 那一個又是我們可以使用的呢? 由以下連結文件中可以看到說明: class UART UART(4)  is on  XA :  (TX,   RX)   =   (X1,   X2)   =   (PA0,   PA1) UART(1)  is on  XB :  (TX,   RX)   =   (X9,   X10)   =   (PB6,   PB7) UART(6)  is on  YA :  (TX,   RX)   =   (Y1,   Y2)   =   (PC6,   PC7) UART(3)  is on  YB :  (TX,   RX)   =   (Y9,   Y10)   =   (PB10,   PB11) UART(2)  is on:  (TX,   RX)   =   (X3,   X4)   =   (PA2,   PA3) 有以上這5種可能, 經我測試, 發現F401的UART, 分別是REPL使用的UART(2), 和我們可以使用的UART(6)。由上列表, 可以看出來, UART(2)用到的是腳位PA2, PA3 (D1, D0), 而UART(6)則

MicroPython on Nucleo-F401RE, 7. Thonny

圖片
看過前面貼文, 就知道我們曾經嘗試過許多操作MicroPython的工具, 包括ampy, mpfshell, rshell, 針對F401這個板子, 只有rshell是功能正常的。但指令式的操作方式, 恐怕很多人不能習慣! 後來發現Thonny IDE是更好的工具, 可以很直覺的使用, 編輯python程式碼, 和開發板上的直譯器交談, 查看個人電腦上的檔案和開發板上的檔案都很容易。推薦大家使用。 Thonny官網:  https://thonny.org/ 目前版本來到了3.3.2; 我個人還在使用3.2.7 給大家看一下我個人的操作畫面設定: 左上角的選單(File, Edit, View, ...)裡, 點選View, 可以看到有許多檢視可以選取, 我先推薦大家把Files勾選起來, 這樣就可以和我的畫面的設定是一樣的。可以看到Files檢視裡有兩個區域, 一個是開發板裡的檔案系統, 另一個是個人電腦的檔案系統。 右上角則是python程式編輯區, 右下角則是Shell檢視, 其實就是REPL, 在這裡可以直接和開發板上的MicroPython直譯器交談, 我的習慣是在這裡先嘗試程式可不可以正常運作, 測試一小段程式碼, 沒問題後, 再用右上角編輯程式的功能把程式整合好。直接按F5, 就可以執行這個程式。當然也可以將程式存檔, File -> Save, Thonny會問你要存到開發板或個人電腦。 操作上非常方便, 看到開發板上的程式檔, 直接按兩下, 就會打開在右上角區域, 注意檔名若被中括號括起來, 那就表示這個檔案是存在於開發板上的。直接編輯完後, 同樣儲存, 就會存回到開發板去了。 這樣, 檔案的操作變得非常直覺簡單, 我們可以把注意力放在程式的撰寫上, 集中精神在主要的問題上。 目前MicroPython移植在許多開發板上面, 因為每個板子的硬體多少有些不同, 所以移植後的環境在不同硬體上, 多少有些差異。為了讓Shell檢視和相關操作可以正常一點, 要讓Thonny知道連接的是什麼硬體, 方法是在Tools -> Options... 打開後看到以下視窗。以F401這張開發板來說, 只能選擇MicroPython (generic)這個選項。我們也可以看到目前這個版本, 已經對microbit, ESP32, ESP8266, Cir