• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

CH582M (СH581, CH582, СH583)

r_o_m_k_a

New member
Скорее всего Д18 не тянет, а принимает только модуляцию несущей создаваемую передатчиком...
Нужен диод покруче. У меня была с 1984 года коробка Д405Б, а у них Fраб до 10ГГц и они не горят даже в диком СВЧ излучении...
Да, вы правы, Д18 не так подробно показывает, но понять моменты передачи можно.

RigolDS6.png
 

dzanis

Member
Сделал небольшой тест производительности чипов CH582 и CH592 . Код просто дёргает ножку,осциллографом замерял частоту пина.

C:
#include "CH58x_common.h"
//#include "CH59x_common.h"   

 __HIGH_CODE
 __attribute__((noinline))
void Main_Circulation()
{
    while(1)
    {
        R32_PB_OUT ^= GPIO_Pin_4;
    }
}

int main()
{
    SetSysClock(CLK_SOURCE_PLL_80MHz);
    GPIOB_ModeCfg(GPIO_Pin_4, GPIO_ModeOut_PP_5mA);
    Main_Circulation();
}
Эти данные наглядно показывают разницу между выполнением кода из быстрой оперативной памяти (SRAM) и медленной Flash-памяти.

Результаты тестирования скорости GPIO (Toggle Speed)

Режим выполнения кодаЧастота ядра (SysClock)CH582 CH592
RAM (__HIGH_CODE)32 MHz2.0 MHz1.78 MHz
60 MHz3.7 MHz3.3 MHz
80 MHz5.0 MHzxxx (Не работает)
Flash (Обычный)Любая680 KHz680 KHz

Ключевые выводы :

  1. "Стена памяти" (Memory Wall):
    Результат 680 KHz при работе из Flash подтверждает, что без предвыборки (prefetch) и кэширования Flash-память является узким местом. Ядро простаивает большую часть времени, ожидая инструкции. Скорость упирается в физический предел чтения Flash, а не в частоту процессора.
  2. Линейное масштабирование в RAM:
    При работе из RAM (__HIGH_CODE) скорость переключения пина растет почти линейно с частотой процессора (от 2 МГц до 5 МГц). Здесь нет задержек на чтение инструкций, работает чистая скорость ядра.
  3. Разница между CH582 и CH592:
    Интересное наблюдение: CH592 работает чуть медленнее (примерно на ~10-12%), чем CH582 на той же частоте при выполнении кода из RAM.
    • 32 MHz: 1.78 vs 2.0 (разница ~11%)
    • 60 MHz: 3.3 vs 3.7 (разница ~11%)
      Возможно, у CH592 немного другая организация шины или задержки доступа к периферии (GPIO), даже если ядро то же самое.
  4. Предел CH592:
    Отметка xxx на 80 МГц для CH592 подтверждает, что этот чип официально (и часто физически) не рассчитан на такие частоты, в отличие от 582.
 

pvvx

Активный участник сообщества
CH592F, RAM(__HIGH_CODE), CLK_SOURCE_PLL_60MHz: 3.750 MHz (R8_FLASH_CFG безразличен)
 

pvvx

Активный участник сообщества
CH592F, Flash, CLK_SOURCE_PLL_60MHz, CLK_SOURCE_PLL_48MHz, CLK_SOURCE_PLL_32MHz: R8_FLASH_CFG = 0x51 -> 1.0 MHz
Зависимости от PLL нет.
 

pvvx

Активный участник сообщества
CH592F UART Log
Код:
Start @ChipID=90
SysClock: 60000 kHz
RAM   SysTick: 655377 720919
FLASH SysTick: 4980788 4980800
RAM   SysTick: 655371 720917
FLASH SysTick: 4980788 4980800
RAM   SysTick: 655371 720917
FLASH SysTick: 4980788 4980800
RAM   SysTick: 655371 720917
FLASH SysTick: 4980788 4980800
RAM   SysTick: 655371 720917
FLASH SysTick: 4980788 4980800
RAM   SysTick: 655371 720917
FLASH SysTick: 4980788 4980800
RAM   SysTick: 655371 720917
FLASH SysTick: 4980788 4980800
RAM   SysTick: 655371 720917
FLASH SysTick: 4980788 4980800
RAM   SysTick: 655371 720917
FLASH SysTick: 4980788 4980800
C:
#include "CH59x_common.h"

#define InitSysTickCnt() { SysTick->CTLR = 5; }   // one tick = SYSCLK
#define GetSysTickCnt()  ((uint32_t)SysTick->CNT) // one tick = SYSCLK

__HIGH_CODE
__attribute__((noinline))
void Main_CirculationRAM(void)
{
   uint32_t cnt, tt, tt1, tt2;
   cnt = 0x10000;
   tt = GetSysTickCnt();
   while(cnt--)
   {
       __nop();
       __nop();
       __nop();
       __nop();
       __nop();
   }
   tt1 = GetSysTickCnt() - tt;
   cnt = 0x10000;
   tt = GetSysTickCnt();
   while(cnt--)
   {
       R32_PB_OUT ^= GPIO_Pin_4;
   }
   tt2 = GetSysTickCnt() - tt;
   PRINT("RAM   SysTick: %u %u\n", tt1, tt2);
}


__attribute__((noinline))
void Main_CirculationFlash(void)
{
   uint32_t cnt, tt, tt1, tt2;
   InitSysTickCnt();
   GPIOB_ModeCfg(GPIO_Pin_4, GPIO_ModeOut_PP_5mA);
   cnt = 0x10000;
   tt = GetSysTickCnt();
   while(cnt--)
   {
       __nop();
       __nop();
       __nop();
       __nop();
       __nop();
   }
   tt1 = GetSysTickCnt() - tt;
   cnt = 0x10000;
   tt = GetSysTickCnt();
   while(cnt--)
   {
       R32_PB_OUT ^= GPIO_Pin_4;
   }
   tt2 = GetSysTickCnt() - tt;
   PRINT("FLASH SysTick: %u %u\n", tt1, tt2);
}

int main()
{
    SetSysClock(CLK_SOURCE_PLL_60MHz);
    PWR_DCDCCfg(ENABLE);
    GPIOA_SetBits(GPIO_Pin_9);
    GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA);
    UART1_DefInit();
    PRINT("Start @ChipID=%02x\n", R8_CHIP_ID);
    PRINT("SysClock: %u kHz\n", GetSysClock()/1000);
    DelayMs(200);
    InitSysTickCnt();
    GPIOB_ModeCfg(GPIO_Pin_4, GPIO_ModeOut_PP_5mA);
    while(1) {
        Main_CirculationRAM();
        Main_CirculationFlash();
    }
}
 

dzanis

Member
Спасибо за отзывчивость и подтверждение данных.
Flash-память в CH5xx — это безнадежное бутылочное горлышко. 690 KHz или 1 МГц — это слишком низкий потолок, который ставит крест на попытках использовать эти чипы для чего-либо, требующего линейной скорости исполнения.
И, к сожалению, это лишь вершина айсберга:
Стек BLE обложен закрытыми бинарными либами и использует крайне тяжёлый, запутанный C-код, что превращает отладку и модификацию в мучение.
У них по сути мёртвые репозитории на GitHub, а кодировка файлов в SDK кривая, что не добавляет желания с этим работать.
До последнего времени у CH5xx был только один неоспоримый плюс цена, которая исторически держалась у доллара.
Но, похоже, и эта фора закончилась. Если на AliExpress CH582 теперь стоит дороже, чем поддерживаемый ESP32-C3 ( Luatos ), то вся логика выбора этой платформы рушится. Исчезновение ценового преимущества полностью меняет расстановку сил.
 

pvvx

Активный участник сообщества
Спасибо за отзывчивость и подтверждение данных.
Flash-память в CH5xx — это безнадежное бутылочное горлышко. 690 KHz или 1 МГц — это слишком низкий потолок, который ставит крест на попытках использовать эти чипы для чего-либо, требующего линейной скорости исполнения.
И, к сожалению, это лишь вершина айсберга:
Стек BLE обложен закрытыми бинарными либами и использует крайне тяжёлый, запутанный C-код, что превращает отладку и модификацию в мучение.
У них по сути мёртвые репозитории на GitHub, а кодировка файлов в SDK кривая, что не добавляет желания с этим работать.
До последнего времени у CH5xx был только один неоспоримый плюс цена, которая исторически держалась у доллара.
Но, похоже, и эта фора закончилась. Если на AliExpress CH582 теперь стоит дороже, чем поддерживаемый ESP32-C3 ( Luatos ), то вся логика выбора этой платформы рушится. Исчезновение ценового преимущества полностью меняет расстановку сил.
У ESP32-C3 совсем другое потребление. Никакие ESP не годятся для батарейных устройств. И у ESP нет даже нормального USB и типового I2C хотя-бы с CLK до 2MHz...
Так что своя ниша у CH58x и CH592 есть. В BLE и Zigbee производительность CPU не нужна. Там за глаза типа 16 МГц CortexM0.
И при этом ни один ESP не успевает за этими козявками в BLE.
Другая специфика - другой метод написания программ. Видимо вам он не подходит.
 

pvvx

Активный участник сообщества
Примерно так кушают эти чипы: https://esp8266.ru/forum/threads/ch582m-sh581-ch582-sh583.6371/post-89887
Т.е. пиковый ток в пределе до 10 мА, а sleep 1..5 в зависимости от задач во сне.
И где такой ESP взять (?), если у ESP32-C3 только приемник RF кушает за 80 мА, а о TX лучше молчать...
 

r_o_m_k_a

New member
Три варианта антенн и адаптеров на щуп осла с диодом Д405Б (прием маяка):
Посмотреть вложение 14821
Желтый: адаптер USB-BT у штыревой антенны
Голубой: адаптер PCI WiFi/BT у внешней антенны
Красный: модуль CH582F рядом с печатной антенной

Только USB-BT адаптер выполняет интервалы между передачами по минимуму (150 мкс)
Самый тормоз - CH582F

И детектирование сигнала BT: в первые 10 мкс преамбула, далее кодики…
Посмотреть вложение 14822

не получается получить такие же красивые картинки с Д405Б
фронты достаточно крутые, но верхняя полка "гладкая", только шумы, не видно модуляции как у вас
Screenshot_3.jpg

к диоду подключаюсь так
Screenshot_1.jpg

можете посоветовать как мне увидеть модуляцию BLE на осциллографе?
 

pvvx

Активный участник сообщества
можете посоветовать как мне увидеть модуляцию BLE на осциллографе?
Каких-то дополнительных проводков не использую. И диод включаю другой полярностью, но у данной серии Д405 полярность указана в маркировке.
1. Найти более правильное положение диода относительно антенны.
2. Уменьшить посторонние шумы и наводки. Частично это достигается правильной разводкой провода заземления в 3-х проводной сети и подключения её к массе осла.
3. Найти местоположение устройства и щупа подальше от всяких проводов. Если устройство питается от USB компа - проверить проводник и контакты в розетке провода заземления.
4. Смысла в наблюдении модуляции нет никакого. Частично она образуется из-за неравномерного уровня сигнала от антенны по диапазону.
 

pvvx

Активный участник сообщества
Используемый экземпляр Д405Б подвергался разным экспериментам за долгие годы его жизни на столе, рядом с ослами.

Например: прямому подключению к импульсному источнику на 2кВт – длительность импульса 3..4 нс, амплитудой без нагрузки 2кВ и частотой следования 10 кГц.
Любой не ламповый осциллограф находящийся на одном столе при этом показывает снег на экране и переключает всеми кнопками. Комп перезагружается…
Возможно это как-то сказалось на данном экземпляре :)
 

pvvx

Активный участник сообщества
Да, пугаться импульсной мощности в 2кВт не стоит. Т.к. при 3 нс и 10000 импульсов в сек это всего 60 мВт рассеиваемой мощности. Это даже не ползет по простому проводу и затухает через десяток см. Но это не нравится некоторому электронному оборудованию находящемуся в десятках см от излучателя. А смартфону например пофиг даже вплотную у излучателя.
 

r_o_m_k_a

New member
Каких-то дополнительных проводков не использую. И диод включаю другой полярностью, но у данной серии Д405 полярность указана в маркировке.
1. Найти более правильное положение диода относительно антенны.
2. Уменьшить посторонние шумы и наводки. Частично это достигается правильной разводкой провода заземления в 3-х проводной сети и подключения её к массе осла.
3. Найти местоположение устройства и щупа подальше от всяких проводов. Если устройство питается от USB компа - проверить проводник и контакты в розетке провода заземления.
4. Смысла в наблюдении модуляции нет никакого. Частично она образуется из-за неравномерного уровня сигнала от антенны по диапазону.
удалось добиться ожидаемого результата
не так важно было разглядеть модуляцию BLE,
хотелось научиться использовать имеющееся оборудование по максимуму

диод подключил вот так
сигнал получается инвертированный, специально не стал инвертировать в осциллографе, чтобы сразу бросалось в глаза
Screenshot_1.jpg

и только при близком поднесении диода к bluetooth антенне на компьютере удалось увидеть вот такой сигнал
Screenshot_3.jpg
почему-то в одних пакетах видна модуляция в других нет
экспериментировал когда компьютер воспроизводил музыку через bluetooth наушники

ещё пример
RigolDS14.png



ещё, для сравнения, попробовал вот такую конструкцию с зондом ближнего поля
Screenshot_2.jpg
фронты немного более затянутые, но не критично (жёлтый сигнал - диод на щупе, синий - с зонда с переходниками)
RigolDS17.png
RigolDS18.png
 

pvvx

Активный участник сообщества
диод подключил вот так
сигнал получается инвертированный, специально не стал инвертировать в осциллографе, чтобы сразу бросалось в глаза
У вас Д405БП.
Диоды прямой полярности: Д405, Д405А, Д405Б.
Диоды обратной полярности: Д405АП, Д405БП.
Диоды, подобранные в пары: Д405АР, Д405БР, Д405АПР, Д405БПР.
Источник:
https://eandc.ru/catalog/d405b/

А от площади электрода зависит емкость...
 
Сверху Снизу