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通讯软体