Обзор модуля RDA5981X1

Привет! Сегодня на обзор доступный по цене ($1.92 на момент написания статьи) модуль RDA5981X1 на достаточно свежем SoC — RDA5981A, который является самым бюджетным в линейке. Обзор будет как о возможностях этого SoC, так и о компилировании прошивки с использованием makefile и GNU Arm Embedded Toolchain.

Основные фишки и возможности этого SoC:

  • WiFi 2.4 ГГц, 802.11 b/g/n, 150 Мбит/сек;
  • Cortex-M4F, до 160 МГц;
  • 2 * UART, 2 * I2S, I2C, 8 * PWM, 4 * SPI, SDMMC, USB 2.0, ADC, 19 * GPIO;
  • Поддержка внешней PSRAM (привет Espressif с ESP32);
  • Встроенная flash 8 Мбит;
  • 160 Кб SRAM, из них 96 Кб доступно пользователю (не шибко густо, особенно после RTL8195AM\RTL8711AM);
  • Корпус QFN-40, 5×5 мм.

Картинка из даташита со всем доступным добром на борту:

B53-1.PNG

Первый взгляд

Внешне модули выглядят вот так в сравнение с другими, оказавшимися под рукой (кликабельно):

Cлева направо, верхний ряд: RTL-00, MJIOT-02, EMW3080; нижний ряд: MJIOT-03, RDA5981X1.

Досадно, но никакой документации (ни даташит, ни тем более сертификаты…) именно на модуль RDA5981X1 я не нашел (может быть позже появится). Поэтому спешить закладывать этот модуль в свои устройства я бы не спешил!

По внешним габаритам модуль RDA5981X1 из всех представленных на фото выше самый маленький. Габариты модуля, снятые с имеющихся у меня в наличии, в виде футпринта (вроде бы без ошибок):

B53-7.1

Сверху площадь с высотой 7 мм над падами до верхнего края модуля — это площадь под антенной, на ней нельзя проводить дорожки или заливки медью. Пад же имеет следующие размеры:

B53-7.2

Высота модуля — не более 2,25 мм.

Также с модулем идёт плата-переходник для breadboard (кликабельно):

Правда, разводка там как попало, левой ногой, и позабавил момент с перемычкой от центрального пада к общему проводу — перемычка в виде падов для соединения каплей припоя, под модулем… круто, «удобно» и реально по-новаторски! Так точно никто не делал до этого. ;)

Еще момент по ней: забавно, что в аналогичной по назначению плате-переходнике под ESP-12 у этой же компании есть минимальный набор для работы с модулем, а здесь — голая плата. По-хорошему нужно прикладывать или опционально давать заказать хотя бы вот такого типа плату-переходник (фото из недр SDK и примеров к нему):

B53-11

Я же напаял модуль на идущую в комплекте плату-переходник, гребёнку расположил снизу, а также напаял на nRESET резистор-подтяжку (в модуле подтяжка nRESET отсутствует!) к VCC3P3 и кнопку сброса, выглядит вот так:

B53-12

Пока паял, заметил такой момент — вход АЦП рядом с USB линиями данных… ну ОК, хотя по логике так делать неправильно — будет USB явно подшумливать на вход АЦП во время работы.

Схемотехника

Несмотря на простоту внутренностей обозреваемого модуля (видно на фото выше, с модулем без экранирующей крышки) схемотехника включения SoC сложнее, чем кажется. Ещё в начале просмотра даташита можно наткнуться на такую таблицу:

B53-13.PNG

Вход питания VBAT — до 4,2 В, прям для LiIon аккумулятора! Это интересно. По потреблению тока же одна из следующих таблиц:

B53-14

Показывает вполне интересные значения потребляемого тока в сравнении с модулем EMW3080, построенном так же на Cortex-M4F и даже более низкой частотой работы (133/125 МГц в EMW3080 vs 160 МГц в RDA5981X1):

B53-15.PNG

Полистав даташит (файл RDA5981A DataSheet v1.2.pdf) дальше, можно увидеть рекомендуемую схему включения, хоть и неполную (кликабельно):

Из файла RDA5981A_HDK_V1.3_20170703_sch.pdf можно взять продолжение:

B53-17.PNG

Тут, судя по всему, несколько напутано, к примеру, при высоком VBAT убирается LDO U3, но зачем-то остаётся резистор R30, висящий в воздухе, и наоборот, при VBAT ~ 3,3 В ставится LDO и убирается резистор R30, необходимый для его работы.

Из описания на SoC и этой схемы становится ясно, что внутри SoC уже есть LDO, с помощью которого можно получать +3,3 В на выводе LDO33, а также для питания ядра внутри есть импульсный DC-DC для получения +1,8 В. Питание IO также можно выбрать подачей нужного уровня питания на вывод VIO. Такие встроенные мелочи дают возможность максимально оптимизировать потребление от аккумулятора и минимизировать применение внешних компонентов (но для получения от аккумулятора стабильных +3,3 В для чувствительной периферии один только встроенный в SoC LDO всё равно не спасёт, и придется, конечно, ставить тот же SEPIC DC-DC).

Порывшись в HDK папке, можно найти простые примеры подключения всяких мелочей для новичков, типа MicroSD карты:

B53-18

АЦП для считывания кнопок:

B53-19

Или USB в виде девайса или хоста:

B53-20

С USB, правда, косяк — в одном документе (картинка с него выше) советуется всё подключать напрямую, без защит, ферритовых бусин и типа всё ОК. А в другом уже более грамотно всё, с супрессорами на линиях данных и бусинами по питанию:

B53-21

Понятное дело, правильно будет именно как во втором варианте сделано. В качестве супрессоров в своих разработках можно использовать дешевые и доступные USBLC6-2.

SDK и пример Makefile проекта

Все примеры и, собственно, руководство по сборке их с помощью MBED можно посмотреть в документах рядом. Мне же не интересно ставить ради этого SoC MBED, питон и т. д., лень, поэтому пойду другим путём. Тем более это будет альтернативный вариант сборки проекта под этот SoC, а разнообразие выбора — это хорошо, имхо!

Проект можно скачать тут — ADElectronics/RDA5981_SDK_TEST_VS. И вкратце основные изменения от официального SDK, а также нововведения:

  • Вырезаны все .py тулсы по сборке с помощью mbed;
  • Все примеры собраны в папке demo;
  • Вырезан весь мусор, не относящийся к сборке с помощью Makefile;
  • В папке tools собраны различные утилиты по работе с SoC;
  • В корне есть проект для Visual Struio 2015, сделанный по аналогии с RTL8195AM;
  • В корне есть пара батников, они тестовые и их можно удалить :) ;
  • В userset.mk указывается расположение SDK, на данный момент протестирован относительный путь;
  • В project.mk указывается папка из примеров или своя, из которой автоматически будут подхвачены все исходники *.c, *.cpp, *.s, если необходимо указать конкретные исходники, то используются переменные ниже;
  • В SDK\sdkset.mk настройки SDK, периферии SoC (там, к примеру, можно поменять скорость работы UART по-умолчанию объявлением DMBED_CONF_CORE_STDIO_BAUD_RATE=921600);
  • В SDK\sdkbuild.mk более глобальные настройки компиляции и сборки;
  • В SDK\paths.mk можно не заглядывать ;)

Вот. Из нереализованного пока что:

  • Исправить компиляцию, она пока возможна только в 1 поток (-j 1);
  • Инструменты для прошивки и отладки с помощью J-Link.

Если есть спецы по makefile, то буду рад указаниям, как более грамотно это все сделать или что поправить… я в этом нуб, честно говоря. :\

Процесс прошивки модуля крайне прост и не требует программатора-отладчика, если хочется по-быстрому всё сделать. Используя утилиту от производителя FlashTest v01.00.08 (в папке tools), можно прошивать модуль по UART. Последовательность действий такова: подключаем модуль к UART переходнику (Rx, Tx выводы на плате переходнике), главное, чтобы поддерживал скорость 921600. Далее запускаем утилиту FlashTest:

B53-22

В Setup (с ошибкой написано во многих утилитах, забавно) можно изменить только скорость и объём памяти, для RDA5981A всё по умолчанию:

B53-23

Выбираем порт, файл прошивки *.bin, лежащий в Debug\bin и жмём Start:

B53-24

Программа ждёт ответа от SoC. Теперь просто жмём на кнопку сброса и начнётся процесс прошивки:

B53-25

После завершения прошивки будет произведена верификация и отключение от выбранного COM порта (к нему можно подключиться терминалом):

B53-26

Свежезалитая прошивка в модуле еще не стартовала. Жмём опять на кнопку сброса, и в терминал модуль выплюнет следующее (я залил модифицированный PWM пример):


RDA Wlan Boot ROM for RDA5991H v1.0
Build Time: 07:20:54 - Jan 24 2017
RDA Microelectronics Copyright(C) 2004-2017

Enter Mcu Mode
count_left=5
count_left=4
count_left=3
count_left=2
count_left=1
Ready to boot...
Partition addr:4010901c
Find newest partition index:0, total:1, buf_addr:0x00100000, size:0x00000138
Partition[0] info
flag:00000001, version:rda5991h
p_address:00001000, r_address:00001000, psize_in_bytes:0x0000b000, dsize_in_"ËS—­Q‹)H>' Ú¼HN +i)þ
PWM duty=0.010000
PWM duty=0.020000
PWM duty=0.030000
PWM duty=0.040000
PWM duty=0.049600

Это простой путь. Долгий, правда, прошивка заливается в среднем секунд 5-8 + требуется нажимать на кнопку сброса (да ещё и припаять её сначала). :)

Отладка и прошивка с помощью J-Link

Этот раздел будет дополнен позже.

Вывод

По цене и предлагаемой периферии на борту SoC очень интересное и перспективное решение. В тоже время в документах довольно много мелких ошибок, неточностей, что может говорить о том, что всё это сделано наспех и быстро для продажи (привет Espressif х2). По SDK можно сказать аналогично — не всё ещё работает или есть примеры, на тот же USB пока ещё мало чего есть, на официальном форуме говорят, что в следующих релизах добавят поддержку USB Device и пример работы, хотя всё основное уже присутствует и можно поиграться. Также довольно много утилит есть в открытом доступе для прошивки\тестирования модуля, что вроде бы плюс, но их исходников нет, как нет и поддержки со стороны пользователей — чип\модуль совсем новые для публичного рынка.

В итоге вывод трудно сделать, думаю, каждый должен сам для себя решить — дать ли шанс новому SoC и стоит ли работать с ним или овчинка выделки не стоит.

Ссылки

  • RDA5981A — голый чип для пайки на собственной разработки платы;
  • RDA5981x1 — модуль на RDA5981A;
  • RDA5981x1 Mini Dev. Board R1 — НЕ РЕКОМЕНДУЕТСЯ. Судя по фотографиям — разводка там кривая… к примеру, линии данных от USB тянутся как попало, как будто это обычные IO для мигания светодиодом;
  • RC01 — новый модуль на RDA5981C + RDA5856QE32;
  • ADElectronics/RDA5981_SDK_TEST_VS — мой пример проекта и SDK;
  • Edragon/RDA — SDK, примеры, документация;
  • Edragon/RDA-temp — минималистичный вариант SDK с примерами;
  • RDAmicro — официальный форум RDA.
Реклама

Добавить комментарий

Please log in using one of these methods to post your comment:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

w

Connecting to %s