vroland / epdiy-hardware

Hardware design files for EPDiy: https://github.com/vroland/epdiy.
Creative Commons Attribution Share Alike 4.0 International
44 stars 10 forks source link

ES120MC1 ADAPTER #9

Closed 3058132083 closed 2 weeks ago

3058132083 commented 6 months ago

image I need some design guidance on converting 40pin to 50pin EPD, and it seems that there are some pins that don't have the right definitions. ES120MC1_VD1400-MOA_Formal spec_ver 1.0.pdf https://www.waveshare.net/w/upload/b/b4/7.8inch_e-Paper_Specification.pdf

martinberlin commented 6 months ago

it seems that there are some pins that don't have the right definitions.

Please clarify what are the pins that you are missing in clear text. I see only that : SPV (start pulse vertical, active low) is missing on the right, maybe they use another name? Any other? But SPV is the right name for this pin you can also check that this website http://essentialscrap.com/eink/waveforms.html

3058132083 commented 6 months ago

image

image I didn't find the definition of SPV in the ES120MC1 datasheet, and I would like to know how to convert 36-50 pins

martinberlin commented 6 months ago

Assigning this to @vroland I’m not sure if this will work with a simple pin adapter. gate driver= horizontal row

SPV = SPH I think but Valentin needs to confirm it. Apart of that I’m curious about the gate 2 STV inputs please post a link to the data sheet or send it to me by email to martin@cale.es

3058132083 commented 6 months ago

ES120MC1_VD1400-MOA_Formal.spec_ver.1.0.pdf

3058132083 commented 6 months ago

By the way, I didn't find a way to buy the corresponding model of connector, so I designed an FPC and removed the original connector to solder directly. IMG_20240319_225224 image image Once I figured out the correct pin definition, I was able to prototype the FPC and verify the feasibility.

3058132083 commented 4 months ago

Good news,the adapter works well,but the display just can't work well.

`ESP-ROM:esp32s3-20210327 Build:Mar 27 2021 rst:0xc (RTC_SW_CPU_RST),boot:0x8 (SPI_FAST_FLASH_BOOT) Saved PC:0x403758cc 0x403758cc: esp_restart_noos at C:/Users/Administrator/esp/v4.4.7/esp-idf/components/esp_system/port/soc/esp32s3/system_internal.c:151 (discriminator 1)

SPIWP:0xee mode:DIO, clock div:1 load:0x3fce3808,len:0x148c load:0x403c9700,len:0xe60 load:0x403cc700,len:0x3060 entry 0x403c9970 I (29) boot: ESP-IDF v4.4.7 2nd stage bootloader I (29) boot: compile time 22:54:23 I (29) boot: Multicore bootloader I (31) boot: chip revision: v0.2 I (35) qio_mode: Enabling default flash chip QIO I (40) boot.esp32s3: Boot SPI Speed : 80MHz I (45) boot.esp32s3: SPI Mode : QIO I (50) boot.esp32s3: SPI Flash Size : 16MB 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 00177000 I (93) boot: End of partition table I (97) esp_image: segment 0: paddr=00010020 vaddr=3c020020 size=d9d90h (892304) map I (241) esp_image: segment 1: paddr=000e9db8 vaddr=3fc95680 size=02424h ( 9252) load I (243) esp_image: segment 2: paddr=000ec1e4 vaddr=40374000 size=03e34h ( 15924) load I (250) esp_image: segment 3: paddr=000f0020 vaddr=42000020 size=1cdc4h (118212) map I (273) esp_image: segment 4: paddr=0010cdec vaddr=40377e34 size=0d848h ( 55368) load I (284) esp_image: segment 5: paddr=0011a63c vaddr=600fe000 size=0002ch ( 44) load I (291) boot: Loaded app from partition at offset 0x10000 I (291) boot: Disabling RNG early entropy source... I (304) cpu_start: Multicore app I (304) opi psram: vendor id : 0x0d (AP) I (305) opi psram: dev id : 0x02 (generation 3) I (307) opi psram: density : 0x03 (64 Mbit) I (312) opi psram: good-die : 0x01 (Pass) I (317) opi psram: Latency : 0x01 (Fixed) I (321) opi psram: VCC : 0x01 (3V) I (326) opi psram: SRF : 0x01 (Fast Refresh) I (332) opi psram: BurstType : 0x01 (Hybrid Wrap) I (337) opi psram: BurstLen : 0x01 (32 Byte) I (342) opi psram: Readlatency : 0x02 (10 cycles@Fixed) I (348) opi psram: DriveStrength: 0x00 (1/1) I (354) MSPI Timing: PSRAM timing tuning index: 5 I (358) spiram: Found 64MBit SPI RAM device I (363) spiram: SPI RAM mode: sram 80m I (368) spiram: PSRAM initialized, cache is in normal (1-core) mode. I (375) cpu_start: Pro cpu up. I (378) cpu_start: Starting app cpu, entry point is 0x40375198 0x40375198: call_start_cpu1 at C:/Users/Administrator/esp/v4.4.7/esp-idf/components/esp_system/port/cpu_start.c:151

I (363) cpu_start: App cpu up. I (680) spiram: SPI SRAM memory test OK I (689) cpu_start: Pro cpu start user code I (689) cpu_start: cpu freq: 240000000 I (689) cpu_start: Application information: I (691) cpu_start: Project name: firmware I (697) cpu_start: App version: 2.0.0-11-g2803a55-dirty I (703) cpu_start: Compile time: Apr 18 2024 22:54:04 I (709) cpu_start: ELF file SHA256: e32b7a19b742f016... I (715) cpu_start: ESP-IDF: v4.4.7 I (720) cpu_start: Min chip rev: v0.0 I (724) cpu_start: Max chip rev: v0.99 I (729) cpu_start: Chip rev: v0.2 I (734) heap_init: Initializing. RAM available for dynamic allocation: I (741) heap_init: At 3FC98688 len 00051088 (324 KiB): D/IRAM I (748) heap_init: At 3FCE9710 len 00005724 (21 KiB): STACK/DIRAM I (754) heap_init: At 3FCF0000 len 00008000 (32 KiB): DRAM I (761) heap_init: At 600FE02C len 00001FD4 (7 KiB): RTCRAM I (767) spiram: Adding pool of 8192K of external SPI memory to heap allocator I (775) spi_flash: detected chip: generic I (779) spi_flash: flash io: qio I (784) sleep: Configure to isolate all GPIO pins in sleep state I (790) sleep: Enable automatic switching of GPIO sleep configuration I (797) cpu_start: Starting scheduler on PRO CPU. I (0) cpu_start: Starting scheduler on APP CPU. I (818) spiram: Reserving pool of 32K of internal memory for DMA/internal allocations I (818) gpio: GPIO[45]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 I (828) epdiy: using resolution 320x1600 I (838) epdiy: num dma nodes: 1 I (838) epdiy: size: 2568 max: 4095 I (848) epdiy: pclk freq: 16000000 Hz I (848) epdiy: line width: 21us, 336 cylces I (848) epdiy: LCD init done. E (858) epd: lut size: 65536 Dimensions after rotation, width: 2560 height: 1600

Heap summary for capabilities 0x00000800: At 0x3fc98e0c len 32767 free 6375 allocated 25640 min_free 6375 largest_free_block 6144 alloc_blocks 4 free_blocks 1 total_blocks 5 At 0x3fc98688 len 331912 free 211196 allocated 118928 min_free 211196 largest_free_block 208896 alloc_blocks 4 free_blocks 1 total_blocks 5 At 0x3fce9710 len 22308 free 7288 allocated 14152 min_free 7288 largest_free_block 7168 alloc_blocks 33 free_blocks 1 total_blocks 34 At 0x3fcf0000 len 32768 free 13060 allocated 18812 min_free 13044 largest_free_block 12800 alloc_blocks 40 free_blocks 2 total_blocks 42 At 0x600fe02c len 8148 free 7768 allocated 0 min_free 7768 largest_free_block 7680 alloc_blocks 0 free_blocks 1 total_blocks 1 Totals: free 245687 allocated 177532 min_free 245671 largest_free_block 208896 Heap summary for capabilities 0x00000400: At 0x3d800000 len 8388607 free 193751 allocated 8192528 min_free 193751 largest_free_block 192512 alloc_blocks 7 free_blocks 1 total_blocks 8 Totals: free 193751 allocated 8192528 min_free 193751 largest_free_block 192512 PG is up current temperature: 20 PG is up I (3478) epdiy: calculating diff.. I (4318) epdiy: highlevel diff area: x: 15, y: 15, w: 1413, h: 736 I (4318) epdiy: starting update, phases: 57 actual draw took 2041ms. PG is up I (6508) epdiy: calculating diff.. I (6508) epdiy: highlevel diff area: x: 1080, y: 800, w: 400, h: 20 I (6508) epdiy: starting update, phases: 15 actual draw took 541ms. PG is up I (7198) epdiy: calculating diff.. I (7198) epdiy: highlevel diff area: x: 1085, y: 805, w: 39, h: 10 I (7198) epdiy: starting update, phases: 15 actual draw took 540ms. PG is up I (7888) epdiy: calculating diff.. I (7888) epdiy: highlevel diff area: x: 1124, y: 805, w: 39, h: 10 I (7888) epdiy: starting update, phases: 15 actual draw took 540ms. PG is up I (8578) epdiy: calculating diff.. I (8588) epdiy: highlevel diff area: x: 1163, y: 805, w: 39, h: 10 I (8588) epdiy: starting update, phases: 15 actual draw took 541ms. PG is up I (9268) epdiy: calculating diff.. I (9278) epdiy: highlevel diff area: x: 1202, y: 805, w: 39, h: 10 I (9278) epdiy: starting update, phases: 15 actual draw took 541ms. PG is up I (9968) epdiy: calculating diff.. I (9968) epdiy: highlevel diff area: x: 1241, y: 805, w: 39, h: 10 I (9968) epdiy: starting update, phases: 15 actual draw took 540ms. PG is up I (10648) epdiy: calculating diff.. I (11488) epdiy: highlevel diff area: x: 1054, y: 867, w: 461, h: 84 I (11488) epdiy: starting update, phases: 57 actual draw took 1990ms. PG is up I (13618) epdiy: calculating diff.. I (13618) epdiy: highlevel diff area: x: 1480, y: 820, w: 0, h: 0 PG is up I (13748) epdiy: calculating diff.. I (13748) epdiy: highlevel diff area: x: 1241, y: 805, w: 39, h: 10 I (13748) epdiy: starting update, phases: 15 actual draw took 528ms. PG is up I (14418) epdiy: calculating diff.. I (14418) epdiy: highlevel diff area: x: 1202, y: 805, w: 39, h: 10 I (14418) epdiy: starting update, phases: 15 actual draw took 528ms. PG is up I (15088) epdiy: calculating diff.. I (15088) epdiy: highlevel diff area: x: 1163, y: 805, w: 39, h: 10 I (15088) epdiy: starting update, phases: 15 actual draw took 528ms. PG is up I (15758) epdiy: calculating diff.. I (15758) epdiy: highlevel diff area: x: 1124, y: 805, w: 39, h: 10 I (15758) epdiy: starting update, phases: 15 actual draw took 527ms. PG is up I (16428) epdiy: calculating diff.. I (16428) epdiy: highlevel diff area: x: 1085, y: 805, w: 39, h: 10 I (16428) epdiy: starting update, phases: 15 actual draw took 527ms. PG is up I (17268) epdiy: calculating diff.. I (18108) epdiy: highlevel diff area: x: 987, y: 900, w: 591, h: 109 I (18108) epdiy: starting update, phases: 57 actual draw took 1990ms. PG is up I (21288) epdiy: calculating diff.. I (22128) epdiy: highlevel diff area: x: 15, y: 15, w: 1563, h: 1085 I (22128) epdiy: starting update, phases: 57 on err 2: 647 644 on err 2: 648 644 W (22168) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22168) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22198) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22198) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22238) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22238) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22268) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22268) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22308) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22308) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22338) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22338) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22378) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22378) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22408) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22408) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22448) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22448) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22478) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22478) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22508) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22508) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22548) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22548) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22578) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22578) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22618) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22618) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22648) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22648) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22688) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22688) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22718) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22718) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22758) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22758) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22788) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22788) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22828) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22828) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22858) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22858) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22898) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22898) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22928) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22928) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22968) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22968) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22998) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (22998) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23038) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23038) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23068) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23068) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23108) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23108) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23138) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23138) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23178) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23178) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23208) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23208) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23248) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23248) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23278) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23278) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23318) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23318) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23348) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23348) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23388) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23388) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23418) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23418) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23458) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23458) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23488) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23488) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23518) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23528) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23558) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23558) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23588) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23588) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23628) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23628) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23658) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23658) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23698) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23698) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23728) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23728) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23768) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23768) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23798) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23798) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23838) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23838) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23868) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23868) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23908) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23908) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23938) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23938) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23978) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (23978) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (24008) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (24008) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (24048) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (24048) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (24078) epd_lcd: draw frame draw initiated, but an error flag is set: 400 W (24078) epd_lcd: draw frame draw initiated, but an error flag is set: 400 actual draw took 1988ms. E (24258) demo: draw error: 400`

https://github.com/vroland/epdiy-hardware/assets/52588960/bdb39da2-a6cb-45d9-845d-6329c0cf0de8

3058132083 commented 4 months ago

Besides,there are strange lines on the screen. IMG_20240422_213547

3058132083 commented 4 months ago

The white parts looks good WIN_20240422_21_47_40_Pro WIN_20240422_21_45_41_Pro

3058132083 commented 4 months ago

image I set the bus_speed to 12 and it now shows the zebra and v2 board fine, but the picture behind still doesn't show up properly

martinberlin commented 4 months ago

This line looks to me if there is one of the data GPiOs that is either Grounded or not connected to the MCU. Please check connectivity from display to each of the MCU IOs. It might be in rare occasions that also one GPIO is dead. Happened to me once and got me crazy until I found it

also @3058132083 can you please make a PR with the Kicad design of your adapter to epdiy-hardware so others can also try it?

vroland commented 4 months ago

Hey, nice work on the adapter overall, looks like an iteresting display! You can try the vector-extensions branch of epdiy and set the PSRAM speed to 120MHz, then try to increase the speed. Maybe you get some faster refresh out of it.

Regarding the stripes: As @martinberlin said it's likely a bad connection on one of the GPIOs (worst case it is dead). There are two bits per pixel, basically one line to make it lighter and one to make it darker. So it could be that the pattern for "whiter" works, but the one for "darker" doesn't or is unreliable.

And to attach the adapter you just soldered the FPC onto the display?

3058132083 commented 4 months ago

>

vroland commented 2 weeks ago

Closing since #13 is merged.