Ameba ARDUINO: Getting Started with BW16/RTL8720DN

工作環境

BW16/RTL8720DN雙頻Wi-Fi開發板目前支持Windows OS 32位元和64位元(WIN7/8/10)、Linux OS(Ubuntu 18 LTS/20 LTS/最新)和macOS作業系統。 請使用最新的作業系統版本以獲得最佳體驗。 在本文檔中,請使用最新版本的 Arduino IDE(至少 1.8.12 版)。

BW16/RTL8720DN 介紹

Realtek RTL8720DN是一款Wi-Fi和藍牙IC,支持2.4GHz和5GHz雙頻Wi-Fi通信,以及藍牙低能耗(BLE)5.0。 BW16是深圳市博安通科技股份有限公司(B&T)生產的模塊,該模塊是以RTL8720DN片上系統(SoC)為主的高度集成的Wi-Fi和藍牙模塊,它可以被看作是與典型SBC一起用於Wi-Fi和藍牙應用的SoC。

get-start-1

如上圖所示,BW16/RTL8720DN 的尺寸小於我們以往介紹的RTL8722DM和RTL8722DM_MINI開發板。它使用微型 USB 接口供電,這種供電方式在許多智能設備中很常見。
BW16/RTL8720DN的引腳圖和功能請參考下圖和表格。

get-start-2

PIN nameGPIO INTADCPWMUARTSPII2C
GPIOA_7    
GPIOB_1    
GPIOA_12   
GPIOA_13   
GPIOA_14    
GPIOA_15    
GPIOA_25   
GPIOA_26   
GPIOA_27     
GPIOA_30     
GPIOB_1    
GPIOB_2    
GPIOB_3    

設置開發環境

步驟一、安裝驅動程序

首先,通過Micro USB 將 BW16/RTL8720DN連接到計算機:

get-start-3

如果這是您第一次將BW16/RTL8720DN連接到計算機,請注意以下事項:

get-start-4

因為LOG_UART_TX(PA7)引腳 和LOG_UART_RX(PA8)引腳用於程序燒錄和上傳。然而板載USB-to-UART 模塊的PCB被連接到了LP_UART_TX(PB1)和LP_UART_RX(PB2),因此不能直接用於程序上傳。用戶可以選擇外接一個USB-to-UART模塊的到PA7和PA8,或者你可以將這些引腳短路,使用板載USB進行程序上傳。如果您想使用板載USB燒錄程式碼,需要短接如下的引腳:
PA8–––PB2
PA7–––PB1
連接完成後後,計算機將自動安裝用於BW16/RTL8720DN的USB驅動程序。安裝完成後,您可以在計算機設備管理器中檢查 COM 端口以確認驅動安裝正確,計算機可以識別BW16開發板:

get-start-5

步驟二、設置Arduino IDE 環境

從1.6.5版本開始,Arduino IDE支持第三方硬件。因此,我們可以使用Arduino IDE在BW16/RTL8720DN上開發應用程序,Arduino的示例也可以在BW16/RTL8720DN上運行。請參考 basic example link:
Arduino IDE可以在Arduino網站下載: https://www.arduino.cc/en/Main/Software

安裝完成後,打開Arduino IDE。為了在Arduino IDE中正常使用BW16/RTL8720DN,請打開“File”—>“Preferences”。並將以下網址粘貼到 “Additional Boards Manager URLs” 欄位: https://github.com/ambiot/ambd_arduino/raw/master/Arduino_package/package_realtek.com_amebad_index.json
從 v3.0.8版本開始,Ameba Arduino將正式支持BW16/RTL8720DN開發板。

接下來,打開Arduino IDE 中 “Tools”->”Board”->”Boards Manager”:

get-start-6

“Boards Manager”大約需要10~20秒來刷新所有硬件文件(如果網絡狀況不好,可能需要更長的時間)。每次連接新硬件時,我們都需要重新打開Boards Manager。因此,我們先關閉然後再次打開它。在列表中找到“Realtek AmebaD Boards (32-bits ARM Cortex-M4 @200MHz)”,點擊“Install”,Arduino IDE會自動開始下載AmebaD所需的文件。
get-start-7

如果您遇到 GitHub 下載問題,請參考以下“下載/軟體開發套件”中的鏈接。有3個部分。
1. “AmebaD_Arduino_patch1_SDK”,請至少選擇 1 個 SDK。目前有 5 個最新發布的 SDK 選項。
2. “AmebaD_Arduino_patch2_Tools”,請根據您的作業系統進行選擇。有 Windows、Linux 和 MacOS。
3. “AmebaD_Arduino_Source_Code”,此部分為可選下載,用來參考最新原始碼。

https://www.amebaiot.com/ameba-arduino-summary/

下載選擇的文件,然後解壓(patch1 和patch2 是必須的)。有“Install_中文.doc”/“Install_中文.pdf”供您參考安裝步驟。根據您的系統,請運行“Offline_SDK_installation_tool”文件夾中的安裝工具。

安裝工具運行成功後,您可以打開Arduino IDE並選擇 “tools” -> “Board“ -> “Boards Manager…”。嘗試在列表中找到“Realtek AmebaD Boards (32-bits ARM Cortex-M4 @200MHz)”,點擊“Install”,Arduino IDE開始下載AmebaD所需的文件。

最後,我們在“tools”->“Board”->“Ameba ARM (32-bits) Boards”->” RTL8720DN(BW16)”中選擇了AmebaD作為當前連接的開發板:

get-start-8

如何更新軔體

事前準備

• USB 轉串列
• BW16/RTL8720DN模組

連接方式

get-start-9

BW16USB 轉串列模組
LOG_RX (PA8)TX
LOG_TX (PA7)RX
3V33V3
GNDGND

如何讓BW16/RTL8720DN模組Reset

將EN接腳連接到地(GND)這樣就可以讓BW16 Reset

如何進入BW16/RTL8720DN軔體下載模式

1. 將LOG_TX (PA7) 接至 GND.
2. 將 EN 腳接至 GND, 等待一下之後然後將EN腳再接到VCC
3. 將LOG_TX (PA7) 連接到USB轉串列模組的RX腳上
4. 現在BW16/RTL8720DN已經在下載模式

更新軔體方法

BW16/RTL8720DN是由安泰信(B&T)公司所推出模組,其中已經預先燒錄好AI-Thinker 的AT 指令集,其畫面如下所示:

get-start-10

此時將會造成,雖然透過Ardunio下載顯示成功,但是只要Reset 還是恢復到預設程式如上圖所示的image界面。

解決方法

方法1 – 使用OTA清除Flash

B&T預設軔體可以通過Realtek的Image Tool提供的OTA方式進行更新,使用者可以通過AT 命令更新軔體。 OTA方法的詳細描述和常用AT命令的定義在B&T《RTL8720D AT命令用戶手冊》附錄6.1中進行了描述,可以在下面的參考部分找到。

步驟1 – 事先準備

https://github.com/ambiot/ambd_sdk
的鏈接下載 ambd_sdk。 Realtek 的 Image Tool 可以在以下文件路徑下找到:“ambd_sdk\tools\AmbaD\Image_tool\image_tool.exe”

步驟2 – 使用AT 命令連接到WiFi熱點

打開任意串列工具如,Tera Term,cutecom等。

get-start-11

使用AT命列連接到無線分享器
“#ATPN=your-SSID,your-password”
等待回應
“#ATPN OK”
(詳情請參考B&T《RTL8720D AT指令用戶手冊》3.2節).
請注意,PC 和 BW16必須再同一個網段內。

步驟3 – 產生OTA 燒錄檔案

使用步驟 1 中下載的 ambd_sdk 中的鏈接中的 Ameba Image Tools 生成可上傳到BW16的 OTA.bin “ambd_sdk\tools\AmbaD\Image_tool\image_tool.exe”

get-start-12

點轚“Generate”籤頁,在“Generate Target”部分中選擇“OTA_All”。然後,勾選Bin 3`右側的複選框,可以在下面的路徑中找到Arduino產生的燒錄檔案:
“C:%USER%\AppData\Local\Arduino15\packages\realtek\tools\ameba_d_tools\1.0.5\km0_km4_image2.bin”

get-start-13

點擊 Generate, 然後儲存 OTA.bin 在以下路徑
“ambd_sdk\tools\DownloadServer”

get-start-14

步驟4 – 進行OTA流程

• 打開Windows命令提示字元,並且切換到以下路徑 “ambd_sdk\tools\DownloadServer”.
• 點選start.bat並等待顯示的TCP Port,預設的Port為 “ 8082 ”.

get-start-15

• 然後在命令提示字元中輸入ipconfig來獲取本機的IP位址
get-start-16

• 獲得IP位址與 Port之後執行DownloadServer…exe .\DownlaoadServer.exe YOUR-PORT-NUMBER ota.bin
正確設置DownloadServer…exe後,命令提示字元將顯示以下訊息

get-start-17

因為之前我們已經在步驟 2 中將 BW16 模塊(OTA 客戶端)連接到與 PC(OTA 服務器相同的網路. 現在我們使用OTA 更新命令 “#ATSO=IP-address,port-number” 連接到OTA伺服器 (更多資訊請參考 B&T《RTL8720D AT 命令用戶手冊》第 2.9 節).
輸入命令之後,請等待命令提示字元出現 ”Erase is ongoing……”

get-start-18

可以看到目前OTA狀態,等待整個上傳過程完成。 OTA 完成後,再次按下Reset按鈕。

步驟5 -通過UART下載Arduino程序

Ardunio 透過UART下載程式
現在我們可以在Ardunio中通過UART下載程序,但是由於RTLDuino USB芯片連接到LP_UART而不是LOG_UART。 LOG_UART_TX (GPIOA_7) 和LOG_UART_RX (GPIOA_8) 引腳用於程序上傳。但是,板載USB轉UART模塊連接LP_UART_TX(GPIOB_1)和LP_UART_RX(GPIOB_2),不能直接用於程序上傳。
您可以選擇使用連接到 GPIOA_7 和 GPIOA_8 的外部 USB 轉 UART 模組,或者您可以將這兩個腳按照下圖接法以使用板載 USB 進行程序上傳:
• PA8 ––– PB1
• PA7 ––– PB2
如果要進入UART下載程序,先按住BURN和RESRT鈕,然後先放開RESET最後再放開BURN鈕。

方法2 – 使用AmbeaD_SDK_Image_tool清除Flash

如果因爲網絡限制,無法使用透過連接Wi-Fi後上傳程序到BW16這種方式(OTA)。另一種方法是使用 Image Tool 從寄存器地址0x8000_0000開始清除flash內部的所有資料,直到2MB的image結束位置。這個步驟完成後,可以使用Arduino IDE 重新將Realtek Arduino SDK燒錄回開發板中。

get-start-20

按照 方法 1 步驟 1 下載 ambd_sdk 並在繼續使用此方法之前進行必要的設置準備。

步驟1 – 打開 Image Tool

將波特率設置為“115200”,然後從 Memory Address 0x0800 6000 中選擇 Flash Erase 範圍,具體地址為 2024 KB。將BW16進入下載模式,然後單擊“Erase”按鈕。

get-start-21

當完成清除步驟之後按下RESET按鈕, 如下圖所示 “#calibration” 信息將不會出現在serial monitor 中:

get-start-22

步驟2 – 使用Arduino IDE 重新燒錄 Image

按照 方法1 步驟 5 的引導燒錄任意一個Arduino示例到開發板後, 按下RESET按鈕,此時將重新在 Serial Monitor 中看到 Ameba Arduino SDK Image 的信息.
特別感謝@minexo79 用繁體中文列出了此方法的文檔,可在此鏈接中找到:

https://forum.amebaiot.com/t/rtl8720dn-bw16-img2-sign-invalid-solution/669

嘗試第一個示例

步驟一、編譯和上傳

Arduino IDE提供了很多內置的範例,可以在開發板上直接編譯、上傳和運行。這裡,我們以“Blink”為例進行第一次嘗試。這裏,我們以” Blink “示例作為第一次嘗試。打開“File”->“Examples”->“ 01.Basics”-> “Blink”:

get-start-23

Arduino IDE打開一個帶有完整示例代碼的新視窗。

get-start-24

RTL8720DN (BW16)的開發板上帶有板載 LED, 默認的”LED_BUILTIN”代表綠色板載 LED。將”LED_BUILTIN”更改為”LED_BUILTIN_B”或”LED_BUILTIN_R”則可以將顔色轉換爲藍色或者紅色。這裡,我們使用LED_BUILTIN_B為例。

接下來,我們直接編譯示例代碼,點擊“Sketch”->“Verify/Compile”

get-start-25

Arduino IDE在IDE窗口的底部區域打印編譯消息。編譯完成後,會得到如下圖所示的消息:

get-start-26

之後,我們將把編譯後的代碼上傳到BW16/RTL8720DN。
請確保BW16/RTL8720DN已連接到您的電腦,然後單擊“Sketch” -> “Upload”。

Arduino IDE將先編譯,然後上傳。在上傳過程中,用戶需要將開發板調至上傳模式。 Arduino IDE會等待5秒鐘,等待開發板進入上傳模式。

get-start-27

想要進入上傳模式,首先按住BW16/RTL8720DN “Burn”按鈕,按下”RST”按鈕,然後放開” Burn”按鍵。單擊Arduino IDE 中的”Upload”按鈕進行編譯和上傳程序。

用戶可選擇檢查開發板是否進入上傳模式。 打開串行監視器並查找“#Flash Download Start”。 請注意,某些串口終端可能會顯示如下圖所示的未知字符是正常的。

get-start-28

同樣,在上傳過程中IDE會自動顯示消息。上傳過程需要相當長的時間(大約30秒到1分鐘)。上傳完成後,您會看到“Done uploading”消息。

get-start-28

步驟二、運行Blink示例

在每個示例中,Arduino不僅提供了示例代碼,還提供了詳細的文檔,包括接線圖、示例代碼說明、技術細節等。這些示例可以直接用於BW16/RTL8720DN。
在這裡我們可以找到Blink這個示例的詳細信息: https://www.arduino.cc/en/Tutorial/BuiltInExamples/Blink

get-start-29

簡而言之,對於BW16/RTL8720DN,該示例可以在板上RGB LED或外部LED(使用任何GPIO引腳進行信號輸出)上運行。最後,按RESET按鈕,你就會看到LED開始閃爍。
如果您遇到任何問題,請參考故障排除。

參考
1. B&T “RTL8720D AT 命令用戶手冊”:
https://docs.ai-thinker.com/_media/rtl8710/docs/rtl8720d-at-v2.4.1-20190814.pdf

請先確認已安裝QQ通訊軟體