Skip to content
Martin F edited this page Oct 15, 2023 · 19 revisions

Epdiy wiki

At the moment the only existing documentation is on epdiy.readthedocs.io Please have a nice read over there. I will research on how to make a sync, if possible, between readthedocs and this github Wiki.

  • If possible the sync should only overwrite pages with the same name
  • Letting us generate special pages with more in deep technical info or test for Boards, Displays, etc.

epdiy V7 settings

Branch: s3_lcd Color experimentation: s3_color_implementation

How to build the Firmware

Make sure to let idf know you will use the S3 target MCU. IDF required version: 5. Other lower versions will simply not work. In Linux I add this after setting the IDF_PATH in .profile

alias prep_idf="source $IDF_PATH/export.sh"

Then you can simply type prep_idf in the console so it calls automatically export.sh and then you can simply type idf.py to access the IDF toolchain.

idf.py set-target esp32s3

Configure the menuconfig selecting the right epdiy driver Board (V7) and the epaper you are testing

idf.py menuconfig

While there, make sure you enable PSRAM (Octal for this board)

Component config --> ESP PSRAM  --> Enable SPI-connected RAM --> Config --> QUAD/OCT

Set RAM clock speed (80MHz clock speed)

SPI RAM access method (Make RAM allocatable using heap_caps_malloc(..., MALLOC_CAP_SPIRAM))  

Additionally:

System Settings --> CPU frequency (240 MHz)

System Settings --> Cache Config --> Data cache line size (64 Bytes)

This Data cache line size is essential to cope with the parallel speeds proposed for different displays in s3_lcd branch. Leaving that in 32 bytes will force you to downgrade bus_speed in displays.c

Dynamic display setting

EpdiyHighlevelState hl;
void app_main() {
  // Optionally check external RAM info:
  heap_caps_print_heap_info(MALLOC_CAP_SPIRAM);
  // Initialize the board. Settings: epdiy/boards  Display settings: displays.c  
  epd_init(&epd_board_v7, &ED060XC3, EPD_LUT_64K);
  // Set VCOM for boards that allow to set this in software (in mV).
  // This will print an error if unsupported. In this case,
  // set VCOM using the hardware potentiometer and delete this line.
  epd_set_vcom(1560);
  hl = epd_hl_init(WAVEFORM);
}

Documentation references

Improving Overall Speed in Espressif MCUs

WiKi written by Martin Fasani & collaborators. Please send your suggestions / technical corrections to martin[AT]cale.es