Ameba ARDUINO: Getting Started with BW16

介绍

Realtek RTL8720DN 是一款 Wi-Fi 和蓝牙 IC,支持 2.4GHz 和 5GHz 双频 Wi-Fi 通信,以及蓝牙低功耗 (BLE) 5.0。 BW16模组由B&T生产,该模组是以RTL8720DN为主要SoC(System on Chip)的高度集成的Wi-Fi和蓝牙模块,可以看作是典型SBC的Wi-Fi和蓝牙应用的SoC。
BW16是与模块集成的开发板。 BW16开发板有2块,BW16和BW6-TypeC。

BW16 开发板

get-start-1

开发板的尺寸为 50.4*25.4(±0.2) mm。它使用Micro USB供电,这在很多智能设备中都很常见。
BW16 的引脚图和功能请参考下图和下表。

BW16 Pinmap

get-start-2

 GPIO pinGPIO INTADCPWMUARTSPII2CIRRGB LEDSWD
0PA7  LOG_TX     
1PA8  LOG_RX     
2PA27       SWD_DATA
3PA30       
4PB1  Serial_TX     
5PB2  Serial_RX     
6PB3A2      SWD_CLK
7PA25   I2C_SCLIR_TX  
8PA26   I2C_SDAIR_RX  
9PA15   SPI_SS    
10PA14   SPI_SCLK  LED_G 
11PA13  SPI_MISO  LED_B 
12PA12  SPI_MOSI  LED_R 

除了 USB 连接器外,还有 2 个按钮。如上图所示,左侧为“RST”按钮,右侧为“Burn”按钮。有关按钮的功能,请参阅下表。

Button FunctionsButton Process
Reset boardPress then release “RST”
Enter upload modePress and hold “Burn”
Press then release “RST”
Release “Burn”

清除flash或上传固件时,开发板需要上传模式。

设置开发环境

步骤一、 环境配置

BW16 (RTL8720DN) 开发板目前支持 Windows OS 32 位元或 64 位元、Linux OS (Ubuntu) 和 macOS。为了获得最佳体验,请使用最新版本的作业系统。

任何 Linux 作业系统 (Ubuntu) 相关问题,请参考 https://forum.amebaiot.com/t/ubuntu-linux-environment/2259

任何 macOS 作业系统相关问题,请参考 https://forum.amebaiot.com/t/macos-environment/2260

步骤二、 设定 Arduino IDE

从 1.6.5 版本开始,Arduino IDE 支持第三方硬件。 Arduino IDE用于在BW16上开发应用程序,以及Arduino基本范例(refer to the basic example link)。
Arduino IDE 可以在 Arduino 网站下载: https://www.arduino.cc/en/Main/Software
安装完成后,打开Arduino IDE。请打开 “File” -> “Preferences”.
并将以下 URL 复制到 “Additional Boards Manager URLs” 栏位: https://github.com/ambiot/ambd_arduino/raw/master/Arduino_package/package_realtek_amebad_index.json

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

get-start-3

“Boards Manager”大约需要几秒钟来刷新所有硬件文件(如果网络状况不好,可能需要更长的时间)。在列表中找到“Realtek Ameba Boards (32-bits ARM Cortex-M33 @200MHz)”,点击“Install”,Arduino IDE会自动开始下载AmebaD包含BW16所需的文件。

get-start-4

如果您遇到 GitHub 下载问题,请参考以下连结 中的“下载/软体开发套件”。有3个部分。
1. “AmebaD_Arduino_patch1_SDK”,请至少选择 1 个 SDK。目前有 5 个最新发布的 SDK 选项。
2. “AmebaD_Arduino_patch2_Tools”,请根据您的作业系统进行选择。有 Windows、Linux 和 MacOS。
3. “AmebaD_Arduino_Source_Code”,此部分为可选下载,用来参考最新原始码。

下载选择的文件,然后解压(patch1 和patch2 是必须的)。有“Install.doc”/“Install.pdf”供您参考安装步骤。根据您的系统,请运行“Offline_SDK_installation_tool”文件夹中的安装工具。

安装运行成功后,您可以打开Arduino IDE并选择 “Tools” -> “Board” -> “Ameba ARM (32-bits) Boards” ->” BW16(RTL8720DN)” 来选择AmebaD作为当前连接的开发板。

get-start-4

步骤三、 安装串行端口

首先,通过 Micro USB 将开发板连接到电脑:

BW16

get-start-4

参考上面的引脚图和表格,D0 和 D1 引脚用于程序上传。但是,板载USB转UART模块连接到D4和D5,不能直接用于程序上传。为了上传固件,建议添加一个外部 USB 转 UART 模块连接到 D0 和 D1,如下图引脚连接:

get-start-5-1

或者,短接下面指示的引脚以使用板载 USB:
D1 ––– D5
D0 ––– D4

get-start-5-1

对应连接后,会自动安装USB驱动。如果连接板有驱动问题,请到http://www.wch- ic.com/downloads/CH341SER_ZIP.html 参考 USB 驱动程序。在 Windows 作业系统的装置管理员中检查 COM 端口号:

get-start-5-1

到“Tools”->“Port”并选择正确的 COM 端口。

get-start-5-1

进入“Tools”->“Serial Monitor”,将baud rate设置为“115200”,然后按RST按钮检查串口连接。

get-start-5-1

get-start-5-1

步骤四、 清除 flash

根据生产批次的不同,部分开发板可能内置了预设的B&T固件,固件信息如下图所示:

get-start-5-1

固件位于 OTA 部分。所有新编译的固件将被 OTA 固件自动替换。因此,需要先清除 OTA 固件才能使用已编译的固件。
方法一:Arduino SDK V3.1.3 之后的“Erase Flash Enable”。
选择“Tools”->“Erase Flash”->“Enable”

get-start-6

然后进入上传模式。
• 手动。按住“Burn”按钮,按下然后放开“RST”按钮并放开“Burn”按钮。
• 自动。选择“Tools”->“Auto Upload Mode”->“Enable”。注意只有内置自动上传电路的板子(BW16-TypeC)才能使用自动上传模式,否则会回到正常上传模式并等待5秒。
接下来,选择“Sketch”->“Upload”。 “Erase flash done” 会出现。

get-start-7

get-start-7

按RST按钮来检查串行监视器和重制开发板。如果只有“#”表示清除flash成功。记得选择“Tools”->“Erase Flash”->“Disable”。

get-start-7

尝试操作范例

Step 1. 编译与上传

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

get-start-14

get-start-15

板载 RGB LED,预设“LED_BUILTIN”为绿色。将“LED_BUILTIN”更改为“LED_R”、“LED_G”或“LED_B”以获得红色、绿色或蓝色。
接下来,直接编译范例代码。 “Sketch”->“Verify/Compile”。然后如果没有编译错误,接着“Sketch”->“Upload”。
• 检查并选择 “Tools” -> “Erase Flash” -> “Disable”。
• 进入上传模式。手动或自动。选择 “Tools” -> “Auto Upload Mode” -> “Enable”/ ”Disable”。
• “Verify/Compile” 和 “Upload”. “Upload” 包括 “Verify/Compile”, “Verify/Compile” 可以跳过。
上传成功会显示“All images are sent successfully!”

get-start-16

Step 2. 执行 Blink 范例

板子将自动重置,如果板子不支持自动上传模式,请按 RST 按钮。板载 RGB LED 将闪烁。

在每个范例中,Arduino 不仅提供了范例代码,还提供了详细的文档,包括接线图、范例代码说明、技术细节等。这些范例可以直接在 BW16 上使用。请参阅以下连结中的 Blink 详细信息:

https://www.arduino.cc/en/Tutorial/BuiltInExamples/Blink

特色介绍

Erase Flash

get-start-17

• Enable: 清除快闪记忆体中的image而不上传当前image。
• Disable: 编译完成后上传使用者代码。

“Erase Flash”预设选择为“Disable”来上传使用者代码。

Standard Lib Enable

get-start-17

• Arduino_STD_PRTINF: 使用 printf 时启用 Arduino avr“stdio.h”和“#include ”
• NA: 使用 printf() 基于标准 sdk _rtl_printf()

“Standard Lib Enable”预设选择为“NA”。

Upload Speed

get-start-17

选择上传 baudrate 为 1,500,000 或 921,600

参考

1. 介绍 RTL8720DN:
https://www.instructables.com/RTL8720DN/
2. 将 Arduino image加载到 BW16 中:
How to load BW16 program with Arduino – #13
3. RTL8720DN (BW16) IMG2 SIGN 无效解决方案:
RTL8720DN(BW16) IMG2 SIGN Invalid Solution
4. FTDI 驱动程序下载:
https://ftdichip.com/wp-content/uploads/2021/02/CDM21228_Setup.zip

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