• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Модули RTL8195AM + MJIOT-AMB-02-TRANSFER-BOARD + MJIOT-AMB-DEBUG-01

pvvx

Активный участник сообщества
Платки расширения выводов под 2.54 мм MJIOT-AMB-02 для модулей RTL8195AM:
MJIOT-AMB-02.jpg
Имеют не более 2/3 выведенных GPIO с самого модуля(!)
Выводы модуля перепутаны - GPIOA_7 посажен на GND, USB D+ так-же на GND, где должны быть GND - они висят!
Со встроенной антенной при установке модуля на данную плату просто беда...
Не рекомендуется её использование (!).

Для отладки на них "не разработчикам", лучше взять что-то типа Wireless WIFI IOT Development Board RTL8195AM Debug Board Precise for Smart Home WIFI Module с DAP-Link:
1552_.jpg 1551_1.jpg

Сами модули RTL8195AM.
RTL8195AM_.jpg
00005661-xRTL8195AM_DataSheet_v01r09_20160513.pdf
http://www.nb-iot-tech.com/download/00005661-xRTL8195AM_DataSheet_v01r09_20160513.pdf

Включаем отладочную плату в USB и получаем виртуальный диск:
CMSIS-DAP_inst.gif
Далее всё готово (прошивка путем копирования файла в диск, COM порт для связи, ARM CMSIS отладчик, ...) для работы и отладки в Ameba Arduino, MBED, SDK 4.0 c IAR или GCC...
В COM порт при нажатии кнопки CHIP_EN выводится:
Код:
=========================================================
ROM Version: 0.3
Build ToolChain Version: gcc version 4.8.3 (Realtek ASDK-4.8.3p1 Build 2003)
=========================================================
Check boot type form eFuse
SPI Initial
Image1 length: 0x3a80, Image Addr: 0x10000bc8
Image1 Validate OK, Going jump to Image1
BOOT from Flash:YES
===== Enter Image 1 ====
SDR Controller Init
load NEW fw 0
Flash Image2:Addr 0xb000, Len 271560, Load to SRAM 0x10006000
No Image3
Img2 Sign: RTKWin, InfaStart @ 0x10006079
===== Enter Image 2 ====
#
HD [ 2 ] SW[0.01]
SimpleConfigSt [0]
Relay [100]
SET Relay OFF [1]
NET_IF_NUM:2
interface 1 is initialized
interface 0 is initialized
Initializing WIFI ...
Start LOG SERVICE MODE
#
wlan_init_done_callback!
wext_set_pscan_channel():ioctl[SIOCDEVPRIVATE] error[ATWC]: _AT_WLAN_JOIN_NET_
[ATWC]Error: SSID can't be empty
WIFI initialized
init_thread(53), Available heap 0x8660
Enter INTERACTIVE MODE
#
Start network!
# help

COMMAND LIST:
==============================
    wifi_connect
    wifi_connect_bssid
    wifi_disconnect
    wifi_info
    wifi_on
    wifi_off
    wifi_ap
    wifi_scan
    iwpriv
    wifi_promisc
    wifi_simple_config
    wifi_wps
    wifi_sta_ap
    wifi_debug
    ping
    dw
    ew
    exit
    help
[MEM] After do cmd, available heap 35472
C MBED COM портом есть беда - не дружат, если в комп воткнуты две платы. Как это обойти?
 
Последнее редактирование:

NeoroN

Member
А почему цена такая не вкусная MJIOT AMB 02 RTL8195AM IOT беспроводной модуль Wi Fi со щитом точные для умного дома беспроводной купить на AliExpress , рублей за 300 взял бы, а так OrangePI zero Оранжевый Pi zero H2 + Quad Core открытым source 512 МБ Совет по развитию Beyond Raspberry Pi купить на AliExpress c 512Мб оеративки столько же стоит. Давай ждем замеров - если оно от батареи неделю живет - то это конечно приемущество. Может когда в большую серию выйдет - цена еще упадет.
 

pvvx

Активный участник сообщества
А цена али выставлена с учетом минимум в два раза ниже цен на аналоги :)
рублей за 300 взял бы
Это где-же взять хоть MCU со встроенным 2.5МБ RAM, USB, NFC и т.д.? Место не подскажите, пусть пустой чип, без платы, внешней flash и кварцев... :)
Глобальных различий по питанию с модулем RTL00 нет (в sleep не жрет неверно включенный светодиод в RTL00). Порядок к 1..2 мА в режиме активности WiFi в типа в DTIM(4) + переговоры с роутером и внешние факторы, типа устаревших ESP8266 на том-же канале... (итого к 15 при полной готовности к ответу) Тут надо уже точечно измерять, типа сколько жрет включенный USB, а счас - лето...
Deep-Sleep и Sleep режимы в RTL серии “A”
Но у него реакция на внешнее событие выжирает большой АКБ - пока он через пять минут загрузиться... Так-же там нет Real-Time. Зачем нужен *niх, при передаче данных с пару датчиков или простом Web?
Для простой задачи уровня сигнализации, контроля АКБ и прогрева Авто Оренже Пи тоже не годиться... Отказо-устойчивость низкая и жрет много.

RTL8195 беспроводной wifi-модуль 391 руб, 533 руб, 572 руб, ...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Стартовая Flash в пришедшем модуле.
MX25L8006E - Manufacturer ID: 0xC2, memory type: 0x20, memory capacity: 1048576 bytes
 

Вложения

pvvx

Активный участник сообщества
Прошивка Web-свалки из Eclipse удалась, сменив в make [inline]FLASHER_TYPE = cmsis-dap[/inline]
Снимок1561.gif
Что делать с HEAP в 2.2МБ пользователям не очень понятно... :)
16-ти битный ADC через Websocket работает, тестовые 100Гц пилы:
Снимок1559.gif
(помех от работы WiFi не наблюдается)
На плате подписи ADC наверно перепутаны :) (в общем кривая эта плата MJIOT-AMB-02-TRANSFER-BOARD !)
20170729_223005_.jpg
По докУментам имеем:
7.17. AD Converter
7.17.1. Features
@ Up to 2 sets of 12-bit resolution A/D converter channel configurable
· Bandwidth 4KHz
· Input signal range: 0.01V ~ VREF - 0.2V
@ 1 16-bit high resolution A/D converter (ADC_CH2 only)
· Bandwidth 48KHz
· Input signal range: 0.01V ~ VREF - 0.2V
· Support DMA mode
· Support One-Shot sampling mode without CPU active to save power
· Pre-configured period to auto-sampling
· Support two wakeup method: buffer threshold interrupt and event trigger

А в реалии ~25000 Гц по умолчанию, 16 бит... точнее 15.5 бит, т.к. не с нуля... -> ADC RTL8711AM
 
Последнее редактирование:

pvvx

Активный участник сообщества
Ameba Arduino доигралось до штампов вирусов :)
Снимок1562.gifСнимок1563.gif
Ameba не смогла на питоне написать... :)

Пример генерации "синуса" DAC в Ameba Arduino (стандартный пример для RTL8195AM):
Снимок1564.gif
Скетч использует 73370 байт (3%) памяти устройства. Всего доступно 2097152 байт.

Тестовый Скетч: Вывод пилы на DAC:
Код:
/*
 * Demonstrates use of DAC
 **/

#include <GTimer.h>
#define maxSamplesNum 4096

int i = 0;

void myhandler(uint32_t data) {
  i = (i+1) % maxSamplesNum;
  analogWrite(DAC0, i);
}

void setup() {
    analogWriteResolution(12);  // set the analog output resolution to 12 bit (4096 levels)
    GTimer.begin(0, 100000, myhandler);
}

void loop() {
}
Счас наберет график на 24-х битный тормозной ADC прямо со старта скетча - скину...
Снимок1565.gif
64-ре пилки - кто-то c кем-то бьет :) Наверно по питанию, а может кривой DAC... Точность: 3.2В/0.0016В = 2000 или 0.05%. Error в 2^11 -> 11 разрядов...
 

Вложения

Последнее редактирование:

pvvx

Активный участник сообщества
Снимок1566.gif
Кривизна DAC. (Realtek не умеет делать DAC :) )
В документации значится:
7.18. DA Converter
7.18.1. Features

  • Up to 2 sets of 12-bit resolution D/A converter channel configurable
  • Bandwidth 16KHz
  • Output signal range: 0.01V ~ VREF - 0.2V
  • Support DMA mode
А получили от 0.016V до 3.25V.

Для сравнения аппаратный DAC 10-бит + 2 бита ШИМ в ADuC7061BCPZ32:
ChartDAC12bit.gif
и приложен: генерация ШИМ-ом на PIC24FV32KA301 выходного тока в 4..20 мА:
 

Вложения

Последнее редактирование:

2mike

New member
Сами модули RTL8195AM
ценник на модули однако вкусный. задал вопрос по даташиту, посмотрим что ответят.
интересны своим I2S, который якобы умеет Slave, а значит туда можно подать клок с взрослого цапоида и надеяться на нормальный звук.
жаль в даташите на чип РСМ расписали куда как лучше чем I2S, ни формат вывода ни как переключать.
 

pvvx

Активный участник сообщества
ценник на модули однако вкусный. задал вопрос по даташиту, посмотрим что ответят.
интересны своим I2S, который якобы умеет Slave, а значит туда можно подать клок с взрослого цапоида и надеяться на нормальный звук.
жаль в даташите на чип РСМ расписали куда как лучше чем I2S, ни формат вывода ни как переключать.
I2S исследован вдоль и поперек. На нем выводится звук stereo в 96 бит ШИМ -> RTL00 MP3 player (с него всё и началось с RTL) Ещё не успел на нем сделать вывод напрямую DSD файлов c SD... Там выходит, что надо просто переливать буфер с SD по DMA в буфер I2S... можно и в SPI. Т.е. проц вообще не занят и никаких внешних DAC.
 
Последнее редактирование:

2mike

New member
ваш проект видел, здорово, но немного не то. я про отдельно взятый чип ЦАП и его обвязку не по китайски.
у нормальных ЦАП мастерклок заводится в источник и такая вот "петля обратной связи" (точнее синхронизации) способствует безоговорочно точной подаче данных.
народ покупает тексасовский ВВВ (пока единственный ARM куда можно подать мастерклок), потом к нему еще за полстолько плату с обвязкой клока, его переключения (по сеткам 44,1/48) и опторазвязки.
а тут всё в разы (порядок) дешевле. правда нет софтварной оболочки типа volumio но это можно пережить.
и главное не надо напрягать RTL00 выдачей аудио, просто отдать цифровой поток по интерфейсу.
* Нашел среди иероглифов, распиновку.
З.Ы, на DSD не тратьте время. оно того не стоит, от слова совсем...
 

Вложения

pvvx

Активный участник сообщества
* Нашел среди иероглифов, распиновку.
Там есть переключение на "англ"...
З.Ы, на DSD не тратьте время. оно того не стоит, от слова совсем...
Ну почему, если он выполняется на устройстве за 160 руб, а составляет конкуренцию полному "саунд-бластеру" + комп + WiFi :) Stereo DSD 256 11.2896Mbit/s > PCM 48....

Но есть одно "НО" - SDRAM не тянет по DMA два канала I2S на 6 MHz (2 канала по 24 бита на пределе тактовой i2s) и другую работу с ней. Если буфера DMA разнесены на SDRAM и SRAM (или всё вместе с CPU в SRAM), то всё Ok и CPU хватает на развертку MP3...
SDRAM 16 бит и диаграмма работы (тормоза) указана в PDF на проц...
 
Последнее редактирование:

2mike

New member
SDRAM не тянет по DMA два канала I2S
у 8195Ам они обещают (7.15.1) Integrated DMA engine to minimize SW efforts. может полегчает работе I2S , по МР3 видел ваши цифры - загрузка системы не катастрофична, жаль про FLAC конечно мечтать не приходится.
* пристегиваю табличку портов, просто чтоб было всё в одной теме
 

Вложения

pvvx

Активный участник сообщества
у 8195Ам они обещают (7.15.1) Integrated DMA engine to minimize SW efforts. может полегчает работе I2S ,
Внутренности у RTL8710AF и RTL8195AM одинаковы. Отличие чипов серии "A" в добавке/убавке доп.кристалла USB, SDRAM, FLASH и кол-ве ножек корпуса (выведенных проводков с кристалла на них).
по МР3 видел ваши цифры - загрузка системы не катастрофична, жаль про FLAC конечно мечтать не приходится.
Там ещё оптимизнулось, но основная загрузка на кодировке PCM->PWM (бинарных полей ШИМ) для двух каналов DMA.
* пристегиваю табличку портов, просто чтоб было всё в одной теме
Всё относящееcя к RTL871xAx относится и к RTL8195A. RTL8195A это максимальная сборка на том-же основном кристалле, что и RTL871xAx.
Про "порты" тут https://esp8266.ru/forum/threads/ioports-i-pinmap-rtl8710af.1676/

Запустил Dhrystone Benchmark, Version 2.1 (Language: C)
Код:
>atdry

Dhrystone Benchmark, Version 2.1 (Language: C)
Program compiled without 'register' attribute
Execution starts, 1000000 runs through Dhrystone
Execution ends

Final values of the variables used in the benchmark:

Int_Glob:            5
        should be:   5
Bool_Glob:           1
        should be:   1
Ch_1_Glob:           A
        should be:   A
Ch_2_Glob:           B
        should be:   B
Arr_1_Glob[8]:       7
        should be:   7
Arr_2_Glob[8][7]:    1000010
        should be:   Number_Of_Runs + 10
Ptr_Glob->
  Ptr_Comp:          268444680
        should be:   (implementation-dependent)
  Discr:             0
        should be:   0
  Enum_Comp:         2
        should be:   2
  Int_Comp:          17
        should be:   17
  Str_Comp:          DHRYSTONE PROGRAM, SOME STRING
        should be:   DHRYSTONE PROGRAM, SOME STRING
Next_Ptr_Glob->
  Ptr_Comp:          268444680
        should be:   (implementation-dependent), same as above
  Discr:             0
        should be:   0
  Enum_Comp:         1
        should be:   1
  Int_Comp:          18
        should be:   18
  Str_Comp:          DHRYSTONE PROGRAM, SOME STRING
        should be:   DHRYSTONE PROGRAM, SOME STRING
Int_1_Loc:           5
        should be:   5
Int_2_Loc:           13
        should be:   13
Int_3_Loc:           7
        should be:   7
Enum_Loc:            1
        should be:   1
Str_1_Loc:           DHRYSTONE PROGRAM, 1'ST STRING
        should be:   DHRYSTONE PROGRAM, 1'ST STRING
Str_2_Loc:           DHRYSTONE PROGRAM, 2'ND STRING
        should be:   DHRYSTONE PROGRAM, 2'ND STRING

RunTime 7107 ms, CPU CLK 166.666672 MHz, Run Cycles 1000000
Microseconds for one run through Dhrystone: 7.107000
Dhrystones per Second:                      140706.343750
Dhrystones per MHz:                         844.238037
80.083292 DMIPS, 0.480500 DMIPS/MHz ?
Какие-то сравнения Dhrystone 2.1 on mcus - Page 1
 
Последнее редактирование:

gessler

New member
Уровень Cortex-M3 ;)

Разница в использовании компиляторов может быть существенной:
STM32F3: 1,964, MDK-ARM, optimized (-O3 + time)
STM32F3: 766, gcc-arm,

Доехал 1-ый модуль, что-то качество металлизации боковых контактов платы смущает.
Надеюсь, что верх контактов не используется для соединений к дорожкам.
 

pvvx

Активный участник сообщества
Он и есть M3. Судя по проекту, где я делал FFT (на asm вставках), скорость в тактах ниже STM32F103, на какие-то пару процентов. Это указано где-то в PDF, что его SRAM идет с тактом задержки при каких-то нечетностях, а TCM без ожиданий...
А тут замер прямо в RTOS, на уровне приоритета задачи на единицу выше IDLE (UART консоль), с оптимизацией Os GCC :)

Ну пока RTL-ов нет в сравнениях... Analysis of the performance of the new generation of 32-bit Microcontrollers for IoT and Big Data Application (PDF Download Available)
 
Последнее редактирование:

pvvx

Активный участник сообщества
Кто запускал RTL8195 с USB-видеокамерой? Пример из Ameba Arduino uvc_basic...
Попробовал несколько камерок, выходит:
Код:
UVC_probe -> Available heap 0x117fd0

v4l2_probe -> Available heap 0x117e08

uvUVC c_vis r4l2_eadytry_
Opforen ymat:our
rtspsel plaect yer MJPGwith fr thiame s adNo.1dres0 (s: 320*240)
    rtsp://192.168.1.20/test.sdp

setting frame interval to 1/30
set frame interval 1/30
vb2_streamon:
Streamon successful
connect successful sta mode

rtsp stream enabled
usb_start_wait_urb: usb_start_wait_urb timed out on ep0out len=0/0
usb_start_wait_urb: usb_start_wait_urb timed out on ep0out len=0/0

vb2_streamoff:
Streamoff successful

start_capturing:
VIDIOC_STREAMON failed
uvc_v4l2_release:
uvc_v4l2_release

v4l2_probe <- Available heap 0x1177b0

UVC_probe <- Available heap 0x1196f0

read_frame mmap method dequeue buffer failed -16
read_frame mmap method dequeue buffer failed -16
.... ==> тут далее сотни "read_frame mmap method dequeue buffer failed -16"
read_frame mmap method dequeue buffer failed -16
buffer error!
stop_capturing:
VIDIOC_STREAMOFF failed
VLС player ничего не показывает...
RTSP договаривается в логе сети, а потока нет...:(
 

sharikov

Active member
Кто запускал RTL8195 с USB-видеокамерой? Пример из Ameba Arduino uvc_basic...
Попробовал несколько камерок,...
Вам нужна UVC камера с поддержкой формата MJPEG. Дешевые камеры поддерживают только YUV2.
Проверьте список форматов утилитой v4l2-ctl
 

pvvx

Активный участник сообщества
Вам нужна UVC камера с поддержкой формата MJPEG. Дешевые камеры поддерживают только YUV2.
Проверьте список форматов утилитой v4l2-ctl
Ну там перекодировки никакой нет. По идее льет (перекидывает блоки) из USB в RTSP и всё...
Как я понял, надо ковыряться в закрытой либе, благо все заголовки есть, да описание USB (хидеры к USB утекли в инет в первых версиях MBED :) )
Но пока не успел, попробовал "методом тыка" и не вышло.. Одна из "тыканных" USB-камер поддерживает почти все форматы, в самом UVC и либах вроде тоже несколько форматов...
Хочу запустить это дело с USB-камерой с али, за 120..140 рубь, типа этой.
Цвета и всё остальное в данной камере ужасное, но для снятия показания счетчиков - пойдет.
 
Последнее редактирование:
Сверху Снизу