Ameba ARDUINO: Getting Started with BW16

使用环境配置

RTL8720DN双频Wi-Fi开发板目前支援Windows XP/7/8/10 32位元和64位元作业系统。在本文档中,请使用 1.8.15 或更高版本的 Arduino IDE。

Introduction to BW16

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

如上图所示,RTL8720DN (BW16) 的尺寸小于我们以往介绍的AmebaD和AmebaD MINI开发板。它使用Micro USB 接口供电,这种供电方式在许多智能设备中很常见。
RTL8720DN (BW16)的引脚图和功能请参考下图和表格。

get-start-2

 PIN nameGPIO INTADCPWMUARTSPII2C
D0 (PA7)GPIOA_7  UART_LOG_TX  
D1 (PA8)GPIOA_8  UART_LOG_RX  
D2 (PA27)GPIOA_27     
D3 (PA30)GPIOA_30     
D4 (PB1)GPIOB_1  Serial_TX  
D5 (PB2)GPIOB_2  Serial_RX  
D6 (PB3)GPIOB_3A2    
D7 (PA25)GPIOA_25   I2C0_CLK
D8 (PA26)GPIOA_26   I2C0_SDA
D9 (PA15)GPIOA_15   SPI_CS 
D10 (PA14)GPIOA_14   SPI_CLK 
D11 (PA13)GPIOA_13  SPI_MISO 
D12 (PA12)GPIOA_12  SPI_MOSI 

设置开发环境

步骤一、安装驱动程序

首先,通过Micro USB 将 RTL8720DN (BW16)连接到电脑:

get-start-3

如果这是您第一次将RTL8720DN (BW16)连接到电脑,请注意以下事项。

从上面的引脚图中,我们知道引脚 D0 和 D1可以被用于程序上传。但是,根据安信可的原理图设计,板载USB转UART模组连接到引脚 D4 和 D5,因此该USB转UART模组并不能直接用于程式上传。
所以,为了将固件上传到此主板,我们建议您选择添加连接到 D0 和 D1 的外部 USB 转 UART 模组,如下面的引脚连接所示:

get-start-4

或者,您也可以按照下表中所示,将引脚短接后使用板载的USB转UART模块进行程式码上传
D1 ––– D5
D0 ––– D4
get-start-4

用USB将开发板连接至电脑后,电脑将自动安装用于BW16/RTL8720DN的USB驱动程序。如果您在安装驱动时遇到任何与开发板的连接问题,请前往http://www.wch-ic.com/downloads/CH341SER_ZIP.html 网址下载USB驱动程式。安装完成后,您可以在电脑装置管理员中检查 COM 端口以确认驱动安装正确,电脑可以识别BW16开发板:

get-start-5-1

步骤二、设定 Arduino IDE

从 1.6.5 版本开始,Arduino IDE 支持第三方硬件。因此,我们可以使用Arduino IDE在RTL8720DN(BW16)开发应用程序,Arduino的基本范例也可以在RTL8720DN(BW16)上运行。请参阅 basic example link.

Arduino IDE可以在Arduino网站下载: https://www.arduino.cc/en/Main/Software

安装完成后,打开Arduino IDE。为了在Arduino IDE中正常使用RTL8720DN (BW16),请打开“File” -> “Preferences”。

并将以下 URL 复制到 “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将正式支持RTL8720DN (BW16)开发板。

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

get-start-6

“Boards Manager”大约需要10~20秒来刷新所有硬件文件(如果网络状况不好,可能需要更长的时间)。每次连接新硬件时,我们都需要重新打开Boards Manager。因此,我们先关闭然后再次打开它。在列表中找到“Realtek AmebaD Boards (32-bits ARM Cortex-M33 @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-M33 @200MHz)”,点击“Install”,Arduino IDE开始下载AmebaD所需的文件。

最后,我们在“tools”->“Board”->“Ameba ARM (32-bits) Boards”->” RTL8720DN(BW16)”中选择了AmebaD作为当前连接的开发板:

get-start-8

如何更新BW16轫体

根据生产批次的不同,开发板上的部分 BW16 模块可能内置了默认的 B&T 轫体,轫体信息如下图所示:

get-start-9

这将导致 Arduino Image 无法写入模块。虽然有“All images are sent successfully! Image tool closed! Upload Image did.”的信息。但无法清除出厂Image,按下板载 RST 按钮后,您会发现出厂Image仍然保留着。

解决上传方法

方法1 – 使用AmebaD Image Tool清除Flash

B&T预设轫体可以通过Realtek提供的Image Tool使用“Erase”功能来进行更新。

使用 Image Tool 从记忆体位址 0x8000_0000 开始清除Flash image,直到 2MB 内存位置结束,稍后,我们需要使用 Arduino IDE 再次将 Realtek image上传回模块。

get-start-10

步骤1 -下载并准备 Image Tool.
从 ambiot GitHub 的链接下载 ambd_sdk: https://github.com/ambiot/ambd_sdk.
Realtek 的 Image Tool 可以在以下文件路径下找到:“ambd_sdk\tools\AmbaD\Image_tool\image_tool.exe”。

步骤2 – 设定 Image Tool
1. “Chip Select” 选项中, 选择 “AmebaD(8721D)”
2. 选择您正在使用的正确 COM 端口
3. 设定Baudrate至“115200”
4. 然后从Memory Address 0x0800 0000 开始键入Flash Erase 起始位置
5. 具体内存大小为2048 KB
6. 首先将模块设置为“Download mode”,然后单击“Erase”按钮

get-start-11

完成上面的清除并按重置按钮后,我们可以发现“#calibration”不再弹出,只有“#”出现在serial monitor中。

get-start-12

步骤3 – 使用Arduino IDE 下载 Image
现在您可以在 Arduio IDE 中通过 UART 下载程序。为了上传程序,您可以选择使用连接到 D0 和 D1 的外部 USB-to-UART 模块,或短接如下所示的引脚以使用板载 USB:

get-start-13

D1 ––– D5
D0 ––– D4

解决上传方法

OTA (Over The Air)
Ai-Thinker 在 B&T 《RTL8720D AT Command User Manual》的 6.1 节中提供了 OTA 轫体上传指南,可从以下链接获取:
https://docs.ai-thinker.com/_media/rtl8710/docs/rtl8720d-at%E6%8C%87%E4%BB%A4%E6%89%8B%E5%86%8Cv2.4.1-20190814.pdf.

尝试第一个范例

步骤一、编译和上传

Arduino IDE提供了很多内置的范例,可以在开发板上直接编译、上传和运行。这里,我们以“Blink”为例进行第一次尝试。
打开 “File” -> “Examples” -> “01.Basics” -> “Blink”:

get-start-14

Arduino IDE打开一个带有完整范例代码的新视窗。

get-start-15

RTL8720DN (BW16)的开发板上带有板载 LED, 默认的”LED_BUILTIN”代表绿色板载 LED。将”LED_BUILTIN”更改为”LED_B”或”LED_R”则可以将颜色转换为蓝色或者红色。这里,我们使用LED_B为例。
接下来,我们直接编译范例代码,点击“Sketch”->“Verify/Compile”

get-start-16

Arduino IDE在IDE窗口的底部区域打印编译消息。编译完成后,会得到如下图所示的消息:

get-start-17

之后,我们将把编译后的代码上传到RTL8720DN(BW16)。

请确保RTL8720DN(BW16)已连接到您的电脑,然后单击“Sketch” -> “Upload”。

Arduino IDE将先编译,然后上传。在上传过程中,用户需要将开发板调至上传模式。
要进入上传模式,首先按住RTL8720DN(BW16)“Burn”键,按下“RST”键,然后松开“Burn”键。

get-start-18
Arduino IDE会等待5秒钟,等待开发板进入上传模式。

get-start-19

同样,在上传过程中IDE会自动显示消息。上传过程需要相当长的时间(大约30秒到1分钟)。上传完成后,您会看到“Done uploading”消息。

步骤二、运行Blink范例

在每个范例中,Arduino不仅提供了范例代码,还提供了详细的文档,包括接线图、范例代码说明、技术细节等。这些范例可以直接用于RTL8720DN (BW16)。
在这里我们可以找到Blink这个范例的详细信息: https://www.arduino.cc/en/Tutorial/BuiltInExamples/Blink

简而言之,对于RTL8720DN,该范例可以在板载RGB LED或外接LED(使用任何GPIO引脚进行信号输出)上运行。最后,按RST按钮,你就会看到LED开始闪烁。

参考

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

请先确认已安装QQ通讯软体