- PVSM.RU - https://www.pvsm.ru -
Небольшая плата ESP32 с дисплеем. Идея была сделать аналог референсного esp32-lyrat но в меньших размерах. На плате разведен дисплей ES8388 ADC-DAC, вывод на стерео наушники и внешний усилитель моно, а также микрофон, кнопки и джойстик
8 MB Flash / 8 MB PSRAM
ST7789 Display
ES8388 ADC-DAC / PAM8302
SDCARD
CP2102
Пришла в голову идея сделать плату с 2.4-GHz Inverted F антеной. По сравнению с PCB антенной которую используют для USB dongle reference design, F антенна обладает лучшими характеристиками, но имеет немного большие размеры, и широкую полоса пропускания
Импеданс сопротивления антенны 50 Ом требует согласования с ESP32
«The output impedance of the RF pins of ESP32 (QFN 6*6) and ESP32 (QFN 5*5) are (30+j10) Ω and (35+j10) Ω, respectively»
Воспользуемся калькулятором [1] для расчета.
ST7789 это дешевый компактный 128x128 цветной дисплей. Подключается через SPI интерфейс как и в предыдуший статье [2]
Ресет дисплея работает только по включению. Схема сброса дисплея это резистор 10 КОм к VDD. Если во время вывода изображения вызвать ресет ESP32 то картинка уже не будет отображаться. Надо делать отдельным выводом на ногу ESP32 или пробовать подводить к AEN сброса самого микроконтроллера. Так же забыл вывести CS. Пришлось вешать волосок на землю. Вопрос нужно ли отключать подсветку или можно CS управлять энергопотреблением дисплея
ЦАП выполнен на ES8388. В нем так же имеется АЦП. Ранее я уже запускал аналогичный АЦП от
Everest ES8374. ES8374 в отличии от ES8388 имеет моно выход с усилителем около 1 ватта.
При запуске ES8388 однако возникли проблемы. Неясная ситуация с выходом на наушники. В референсной esp32-lyrat-v4.2 выходы на наушники LOUT1 и ROUT1 но микросхема DAC8388 имеет дифференциальные выходы левого и правого канала. То что я слышал в наушниках это шум и слабый уровень сигнала. Надо разобраться как включать выходы в правильном режиме. В примерах для этих референсных плат нет особого кода переключения.
Внешний усилитель планировал поставить из линейки PAM. Они хорошо известны по усилителю
Class-D and Class-AB PAM8406. Но мне потребовался моно вариант. Его пока не распаивал
ICS-43432 микрофон подключается по шине SPI. Вывод LR отвечает за конфигурирование левого или правого канала. Левый на землю, правый на VDD
Забыл вывести 7 вывод PSRAM. PSRAM вешается параллельно W25Q64 за исключением вывода тактирования и CS. CS надо подтянуть резистором к VDD
Внешнее управление организовано на резистивном делителе. Уровни напряжения определяются внутренним АЦП. В зависимости от того какая кнопка нажата формируется определенное для делителя напряжение. Померяв на входе АЦП уровень можно определить нажатую кнопку
UART интерфейс традиционно на CP2102. Тут лотерея если покупать у Китайцев. В одной партии могут быть разные ID. Например у меня определялась #lsusb как Verifon и устройства /dev/ttyUSB не обнаруживалось. Добавил примерно так где 10c4 804c это vid pid. Кстати слетает после перезагрузки.
sudo modprobe cp210x
sudo -s
echo 10c4 804c > /sys/bus/usb-serial/drivers/cp210x/new_id
WiFi заработал не сразу. BT так и не получилось связаться. В режиме BT колонки устройство видно, но соединение установить не получается. Очень важно, как оказалось правильно подвести питание на чип ESP32. Дорожки должны быть как можно толще. На каждый внутренний блок, к которому подводится питание должен стоять шунтирующий конденсатор. Только когда я пропаял сверху дорожку и повесил дополнительно в одном месте конденсатор по питанию прямо на дорожку, чип завел Wi-Fi. До этого в логах начинался мусор и все висло когда доходило до старта WiFi
entry 0x40080684
I (29) boot: ESP-IDF v4.2-dev-2243-gcf056a7d0-dirty 2nd stage bootloader
I (29) boot: compile time 17:00:41
I (30) boot: chip revision: 1
I (34) boot_comm: chip revision: 1, min. bootloader chip revision: 0
I (51) boot.esp32: SPI Speed: 40MHz
I (52) boot.esp32: SPI Mode: DIO
I (52) boot.esp32: SPI Flash Size: 4MB
I (54) boot: Enabling RNG early entropy source…
I (60) boot: Partition Table:
I (63) boot: ## Label Usage Type ST Offset Length
I (71) boot: 0 nvs WiFi data 01 02 00009000 00006000
I (78) boot: 1 phy_init RF data 01 01 0000f000 00001000
I (86) boot: 2 factory factory app 00 00 00010000 00100000
I (93) boot: End of partition table
I (97) boot_comm: chip revision: 1, min. application chip revision: 0
I (104) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x1b81c (112668) map
I (162) esp_image: segment 1: paddr=0x0002b844 vaddr=0x3ffb0000 size=0x03b04 ( 15108) load
I (169) esp_image: segment 2: paddr=0x0002f350 vaddr=0x40080000 size=0x00404 ( 1028) load
0x40080000: _WindowOverflow4 at /home/dm/esp/esp-idf/components/freertos/xtensa/xtensa_vectors.S:1730
I (170) esp_image: segment 3: paddr=0x0002f75c vaddr=0x40080404 size=0x008bc ( 2236) load
I (179) esp_image: segment 4: paddr=0x00030020 vaddr=0x400d0020 size=0x78d34 (494900) map
0x400d0020: _stext at ??:?
I (401) esp_image: segment 5: paddr=0x000a8d5c vaddr=0x40080cc0 size=0x194d0 (103632) load
I (466) boot: Loaded app from partition at offset 0x10000
I (466) boot: Disabling RNG early entropy source…
I (478) psram: This chip is ESP32-D0WD
E (479) psram: PSRAM ID read error: 0xffffffff
E (479) spiram: SPI RAM enabled but initialization failed. Bailing out.
I (486) cpu_start: Failed to init external RAM; continuing without it.
I (493) cpu_start: Pro cpu up.
I (497) cpu_start: Starting app cpu, entry point is 0x400816d8
0x400816d8: call_start_cpu1 at /home/dm/esp/esp-idf/components/esp_system/port/cpu_start.c:109
I (0) cpu_start: App cpu up.
I (518) cpu_start: Pro cpu start user code
I (518) cpu_start: Application information:
I (518) cpu_start: Project name: scan
I (523) cpu_start: App version: v4.2-dev-2243-gcf056a7d0-dirty
I (530) cpu_start: Compile time: Nov 6 2020 17:00:39
I (536) cpu_start: ELF file SHA256: 7ea95a8a24884f2f…
I (542) cpu_start: ESP-IDF: v4.2-dev-2243-gcf056a7d0-dirty
I (550) heap_init: Initializing. RAM available for dynamic allocation:
I (556) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (562) heap_init: At 3FFB9510 len 00026AF0 (154 KiB): DRAM
I (569) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (575) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (581) heap_init: At 4009A190 len 00005E70 (23 KiB): IRAM
I (589) spi_flash: detected chip: generic
I (592) spi_flash: flash io: dio
W (596) spi_flash: Detected size(8192k) larger than the size in the binary image header(4096k). Using the size in the binary image header.
I (611) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (735) wifi:wifi driver task: 3ffc1ed4, prio:23, stack:6656, core=0
I (735) system_api: Base MAC address is not set
I (735) system_api: read default base MAC address from EFUSE
I (765) wifi:wifi firmware version: bbe4b67
I (765) wifi:wifi certification version: v7.0
I (765) wifi:config NVS flash: enabled
I (765) wifi:config nano formating: disabled
I (765) wifi:Init data frame dynamic rx buffer num: 32
I (775) wifi:Init management frame dynamic rx buffer num: 32
I (775) wifi:Init management short buffer num: 32
I (785) wifi:Init static tx buffer num: 16
I (785) wifi:Init static rx buffer size: 1600
I (795) wifi:Init static rx buffer num: 10
I (795) wifi:Init dynamic rx buffer num: 32
I (895) phy: phy_version: 4182, f1ba940, Jun 4 2020, 19:40:07, 0, 0
I (905) wifi:mode: sta (98:f4:ab:6c:ed:c4)
I (3005) scan: Total APs scanned = 5
I (3005) scan: SSID ___1_____
I (3005) scan: RSSI -48
I (3005) scan: Authmode WIFI_AUTH_WPA_WPA2_PSK
I (3005) scan: Pairwise Cipher WIFI_CIPHER_TYPE_CCMP
I (3015) scan: Group Cipher WIFI_CIPHER_TYPE_CCMP
I (3015) scan: Channel 12
I (3025) scan: SSID _____2______
I (3025) scan: RSSI -64
I (3025) scan: Authmode WIFI_AUTH_WPA2_PSK
I (3035) scan: Pairwise Cipher WIFI_CIPHER_TYPE_CCMP
I (3035) scan: Group Cipher WIFI_CIPHER_TYPE_CCMP
I (3045) scan: Channel 7
I (3045) scan: SSID ______2_______
I (3055) scan: RSSI -83
I (3055) scan: Authmode WIFI_AUTH_WPA_WPA2_PSK
I (3065) scan: Pairwise Cipher WIFI_CIPHER_TYPE_TKIP_CCMP
I (3065) scan: Group Cipher WIFI_CIPHER_TYPE_TKIP
I (3075) scan: Channel 3
I (3075) scan: SSID ____3____
I (3075) scan: RSSI -92
I (3085) scan: Authmode WIFI_AUTH_WPA2_PSK
I (3085) scan: Pairwise Cipher WIFI_CIPHER_TYPE_CCMP
I (3095) scan: Group Cipher WIFI_CIPHER_TYPE_CCMP
I (3095) scan: Channel 3
I (3105) scan: SSID ___4______
I (3105) scan: RSSI -94
I (3105) scan: Authmode WIFI_AUTH_WPA2_PSK
I (3115) scan: Pairwise Cipher WIFI_CIPHER_TYPE_CCMP
I (3125) scan: Group Cipher WIFI_CIPHER_TYPE_CCMP
I (3125) scan: Channel 8
Запуск теста esp-idf-st7789 [3]
www.ti.com/lit/an/swra351a/swra351a.pdf [5]
www.espressif.com/sites/default/files/documentation/esp32_hardware_design_guidelines_en.pdf [6]
www.everest-semi.com/pdf/ES8388%20DS.pdf [7]
dl.radxa.com/rock2/docs/hw/ds/ES8388%20user%20Guide.pdf [8]
dl.espressif.com/dl/schematics/esp32-lyrat-v4.3-schematic.pdf [9]
dl.espressif.com/dl/schematics/esp32-lyrat-v4.2-schematic.pdf [10]
www.ti.com/lit/an/swra351a/swra351a.pdf [5]
invensense.tdk.com/wp-content/uploads/2015/02/ICS-43432-data-sheet-v1.3.pdf [11]
Автор: Andreev Dmitry
Источник [12]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/c-3/359454
Ссылки в тексте:
[1] калькулятором: https://www.will-kelsey.com/smith_chart/
[2] как и в предыдуший статье: https://habr.com/ru/post/512130/
[3] esp-idf-st7789: https://github.com/nopnop2002/esp-idf-st7789
[4] www.youtube.com/channel/UC1xP8NZjKSmTkO37EPBi6FA: https://www.youtube.com/channel/UC1xP8NZjKSmTkO37EPBi6FA
[5] www.ti.com/lit/an/swra351a/swra351a.pdf: https://www.ti.com/lit/an/swra351a/swra351a.pdf
[6] www.espressif.com/sites/default/files/documentation/esp32_hardware_design_guidelines_en.pdf: https://www.espressif.com/sites/default/files/documentation/esp32_hardware_design_guidelines_en.pdf
[7] www.everest-semi.com/pdf/ES8388%20DS.pdf: http://www.everest-semi.com/pdf/ES8388%20DS.pdf
[8] dl.radxa.com/rock2/docs/hw/ds/ES8388%20user%20Guide.pdf: https://dl.radxa.com/rock2/docs/hw/ds/ES8388%20user%20Guide.pdf
[9] dl.espressif.com/dl/schematics/esp32-lyrat-v4.3-schematic.pdf: https://dl.espressif.com/dl/schematics/esp32-lyrat-v4.3-schematic.pdf
[10] dl.espressif.com/dl/schematics/esp32-lyrat-v4.2-schematic.pdf: https://dl.espressif.com/dl/schematics/esp32-lyrat-v4.2-schematic.pdf
[11] invensense.tdk.com/wp-content/uploads/2015/02/ICS-43432-data-sheet-v1.3.pdf: https://invensense.tdk.com/wp-content/uploads/2015/02/ICS-43432-data-sheet-v1.3.pdf
[12] Источник: https://habr.com/ru/post/526804/?utm_source=habrahabr&utm_medium=rss&utm_campaign=526804
Нажмите здесь для печати.