Привет! Сегодня на обзор новейший модуль AFW121TI по вполне доступной цене ($3.7 за 1шт и ниже с увеличением покупаемого количества на момент написания статьи) на довольно свежем SoC — RTL8710BX-A0 от Realtek, который является самым бюджетным в линейке.
Характеристики этого Wi-Fi SoC:
- ARM Cortex-M4, 62.5 МГц
- Wi-Fi: IEEE 802.11 b/g/n
- 11 Мбит/с (802.11 b), 54 Мбит/с (802.11 g), 150 Мбит/с (802.11 n)
- SSL/TLS
- GPIO — 11
- UART — 2 (HS, LOG)
- SPI — 1
- I2C — 2
- PWM — 6
- JTAG/SWD
- WDG — 1
- RTC — 1
- ADC — 1
- Рабочая температура: -20…+85℃
Если стало интересно — прошу под кат. ;)
Первый взгляд
Внешне модуль выглядят вот так в сравнении с другими:
Cлева направо: MJIOT-AMB-03, AFW121TI , MJIOT-AMB-02.
По внешним габаритам модуль AFW121TI из всех представленных на фото выше не самый маленький, он практически аналогичен по габаритам модулю MJIOT-AMB-02 (на RTL8195AM):
Высота модуля — не более 3 мм, это один из высоких модулей, ранее обозреваемых, с SoC от Realtek, но модули от MXCHIP таки самые высокие. :)
Со снятой экранирующей крышкой:
Flash память — GD25Q80CSIG (8 Мбит, 120 МГц, Standard-, Dual-, Quad-SPI, 2,7…3,6 В).
Эксклюзивная на данный момент документация на модуль и даташит на сам RTL8710BX-A0:
- Specification of AFW121Tx Wi-Fi Module (есть небольшие ошибки в описании)
- Design Manual of AF-W12xTx Module
- UM0114 Realtek Ameba-Z Data Sheet V3.4 (2018/05/10)
Да, чтобы не искать по документам, сразу приведу габариты модуля:
Пинаут модуля:
Крайне похож на MJIOT-AMB-03 с тем отличием, что всё по размерам больше — будет удобнее паять. ;)
Схемотехника
В этом разделе толком и обсуждать нечего, т. к. всё аналогично MJIOT-AMB-03. В спецификации на модуль можно найти его потребление в рабочем режиме и какие токи можно выжимать с IO:
А также токи потребления в спящих режимах:
Единственный момент, который имеет различие в сравнении с MJIOT-AMB-03, — это один пин. Вот RTL8710BN:
А вот RTL8710BX:
Нашли? :) VBAT_MEAS. Помимо заниженной тактовой частоты в RTL8710BX отсутствует этот канал для измерения VBAT (0…5 В). На модуле же этот пин SoC разведён-таки на пин 13 модуля.
Примечание: Есть подозрение, что эти ограничения программные… но пока подтверждения нет.
SDK и прошивка
Подключаем питание и GPIOA_30 — LOG TX, GPIOA_29 — LOG RX. Первое включение модуля (часть переносов строки удалена ради компактности):
<rtl8195a> ROM:[V0.1]</rtl8195a> FLASHRATE:4 BOOT TYPE:0 XTAL:40000000 IMG1 DATA[1764:10002000] IMG1 ENTRY[8000353:100021c5] IMG1 ENTER read_mode idx:0, flash_speed idx:0 calibration_result:[1:7:11][7:d] calibration_result:[2:13:7][1:d] calibration_result:[3:3:3][1:3] calibration_ok:[2:13:7] FLASH CALIB[NEW OK] OTA2 ADDR[ffffffff] OTAx SELE[ffffffff] OTA1 USE IMG2 DATA[0x80505c4:3848:0x10005000] IMG2 SIGN[RTKWin(10005008)] IMG2 ENTRY[0x10005000:0x804c89f] ===== Enter Image 2 ==== OSC8M: 800574 boot reason: 0 DONT PG EFUSE Under MP #interface 0 is initialized interface 1 is initialized Initializing WIFI ... Chip Version Info: CHIP_8711B_Normal_Chip_UMC_A_CUT_1T1R_RomVer(0) LDO Mode, BD_Info: 0 RTL8195A[Driver]: The driver is for MP LDO Mode, BD_Info: 0 Start LOG SERVICE MODE # Shift 32 bytes for FW header!! [FWDL]: new flow. _8051Reset8711b: Finish [FWDL]: Polling FW ready success!! REG_MCUFWDL:0x0107c5c6, counter = 0x0089 [FWDL]: exit 138 WIFI initialized wext_set_autoreconnect():ioctl[SIOCDEVPRIVATE] error init_thread(53), Available heap 0xbc50 RTC_ISR time: 0:0:0:30 (0) <pre>
Если же отправить символ ‘?‘:
? ----------------- COMMAND MODE HELP ------------------ HELP (?) : Print help messag DW <Address, Hex> Dump memory dword or Read Hw dword register; Can Dump only one dword at the same time Unit: 4Bytes EW <Address, Hex> Write memory dword or Write Hw dword register Can write only one dword at the same time Ex: EW Address Value DW <Address, Hex> Dump memory byte or Read Hw byte register; Can Dump only one byte at the same time Unit: 1Bytes EW <Address, Hex> Write memory byte or Write Hw byte register Can write only one byte at the same time Ex: EW Address Value FLASH init BaudRate(1/2...) erase chip erase sector addr erase block addr read addr len write addr data EFUSE wmap addr len data rmap rraw wraw addr len data autoload REBOOT <item, string> : item: uartburn or N/A TICKPS r: release os wakelock a: acquire os wakelock RTC get WLAN WLAN Driver Cmd DEBUG Config Debugging Message <DbgLevel: error,warn,trace,info> <ConfigValue, Hex> ----------------- COMMAND MODE END ------------------
Есть команды для работы с памятью, флешкой, EFUSE. С этим разберёмся несколько позже, возможно, получится достать официальные утилиты по работе с флешкой, конфигурированием и прошивкой модуля (утилиты добавлю сюда, если пришлют).
Пару команд для теста. RTC работает:
RTC get time: 0:0:3:6 (0) alarm: 1:1:1:30 (0) ISR: 20 ALMR1: 818130 ALMR2: 201 OSC8M: 8385441
А вот для WLAN или забыли описание добавить, или обрезанный и настроить не получится:
WLAN Driver Cmd Wlan Normal Mode argc=2 command element [0] = Driver command element [1] = Cmd command Driver Cmd
SDK же общий на всю серию Ameba-Z, и можно писать прошивки на том же официальном SDK или на патченом от ув. pvvx.
Вывод
Модуль в целом похож на MJIOT-AMB-03, только купить проще, но SoC стоит самого начального уровня в этой линейке с ограничениями.
По поводу ограничений (заниженная тактовая частота и отсутствие одного канала АЦП) есть подозрение, что они исключительно программные, как это было с RTL8710AF \ RTL8711AF (отличались только ID чипа, а программно в первом занижалась тактовая частота и был недоступен NFC).
Ссылки
- ADElectronics/RTL0B_SDK — официальный SDK для Ameba-Z серии, правленый ув. pvvx;
- Realtek IoT — официальный сайт Ameba IoT от Realtek;
- AFW121T — страничка с описанием модуля на китайском, официальный сайт 99IoT;
- LCSC 99IOT AFW121TI — купить модуль на LCSC (самый простой способ на момент написания статьи).