embeded/esp32

esp32 와 spi lcd 성능 비..교?

구차니 2026. 1. 12. 16:44

문득 남에건 빠른데 내껀 왜 느리지 싶어서 찾아보는 중

내가 가진건 st7735 칩셋이고 얘가 좀 많이 느린듯

[링크 : https://minimonk.tistory.com/524246]

 

라즈베리 파이용으로 구했던건 dtb 상으로 ili9486 같다. (3.5inch rpi lcd (a) v3)

돌이켜 보면 mame 하기 버거울 정도로 느렸던것 같은데. 아무튼 16MHz 였군

waveshare35a: waveshare35a@0{
                                compatible = "ilitek,ili9486";
                                reg = <0>;
                                pinctrl-names = "default"; 
                                pinctrl-0 = <&waveshare35a_pins>;
                                spi-max-frequency = <16000000>;
                                rotate = <90>;
                                bgr;
                                fps = <30>;
                                buswidth = <8>;
                                regwidth = <16>;

[링크 : https://minimonk.tistory.com/5694]

 

그래서 나중에 구매한 3.5inch rpi lcd (c) 고속 lcd 인데 칩셋 이름이 없다.

Supports 125MHz high-speed SPI signal transmission

 

dtb 받아서 확인해보니 클럭이 어마어하게 올랐다. 어우 115Mhz 라니 기존대비 7배 올랐네

$ dtc -I dtb -O dts waveshare35c.dtbo 
<stdout>: Warning (unit_address_vs_reg): /fragment@0/__overlay__/spidev@0: node has a unit name, but no reg or ranges property
<stdout>: Warning (unit_address_vs_reg): /fragment@0/__overlay__/spidev@1: node has a unit name, but no reg or ranges property
<stdout>: Warning (gpios_property): /fragment@2/__overlay__/tft35a@0:reset-gpios: Could not get phandle node for (cell 0)
<stdout>: Warning (gpios_property): /fragment@2/__overlay__/tft35a@0:dc-gpios: Could not get phandle node for (cell 0)
<stdout>: Warning (gpios_property): /fragment@2/__overlay__/tft35a-ts@1:pendown-gpio: Could not get phandle node for (cell 0)
<stdout>: Warning (gpios_property): /__fixups__:gpio: property size (218) is invalid, expected multiple of 4
<stdout>: Warning (interrupts_property): /fragment@2/__overlay__/tft35a-ts@1:interrupt-parent: Bad phandle
/dts-v1/;

/ {
compatible = "brcm,bcm2835\0brcm,bcm2708\0brcm,bcm2709";

fragment@0 {
target = <0xdeadbeef>;

__overlay__ {
status = "okay";

spidev@0 {
status = "disabled";
};

spidev@1 {
status = "disabled";
};
};
};

fragment@1 {
target = <0xdeadbeef>;

__overlay__ {

tft35a_pins {
brcm,pins = <0x11 0x19 0x18>;
brcm,function = <0x00 0x00 0x00>;
linux,phandle = <0x01>;
phandle = <0x01>;
};
};
};

fragment@2 {
target = <0xdeadbeef>;

__overlay__ {
#address-cells = <0x01>;
#size-cells = <0x00>;

tft35a@0 {
compatible = "ilitek,ili9486";
reg = <0x00>;
pinctrl-names = "default";
pinctrl-0 = <0x01>;
spi-max-frequency = <0x6dac2c0>;
txbuflen = <0x8000>;
rotate = <0x5a>;
bgr = <0x00>;
fps = <0x1e>;
buswidth = <0x08>;
regwidth = <0x10>;
reset-gpios = <0xdeadbeef 0x19 0x01>;
dc-gpios = <0xdeadbeef 0x18 0x00>;
debug = <0x00>;
init = <0x10000f1 0x36 0x04 0x00 0x3c 0x0f 0x8f 0x10000f2 0x18 0xa3 0x12 0x02 0xb2 0x12 0xff 0x10 0x00 0x10000f8 0x21 0x04 0x10000f9 0x00 0x08 0x1000036 0x08 0x10000b4 0x00 0x10000c1 0x41 0x10000c5 0x00 0x91 0x80 0x00 0x10000e0 0x0f 0x1f 0x1c 0x0c 0x0f 0x08 0x48 0x98 0x37 0x0a 0x13 0x04 0x11 0x0d 0x00 0x10000e1 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00 0x100003a 0x55 0x1000011 0x1000036 0x28 0x20000ff 0x1000029>;
linux,phandle = <0x02>;
phandle = <0x02>;
};

tft35a-ts@1 {
compatible = "ti,ads7846";
reg = <0x01>;
spi-max-frequency = <0x1e8480>;
interrupts = <0x11 0x02>;
interrupt-parent = <0xdeadbeef>;
pendown-gpio = <0xdeadbeef 0x11 0x01>;
ti,x-plate-ohms = [00 3c];
ti,pressure-max = [00 ff];
linux,phandle = <0x03>;
phandle = <0x03>;
};
};
};

__overrides__ {
speed = <0x02 0x7370692d 0x6d61782d 0x66726571 0x75656e63 0x793a3000>;
txbuflen = [00 00 00 02 74 78 62 75 66 6c 65 6e 3a 30 00];
rotate = [00 00 00 02 72 6f 74 61 74 65 3a 30 00];
fps = [00 00 00 02 66 70 73 3a 30 00];
bgr = [00 00 00 02 62 67 72 3a 30 00];
debug = <0x02 0x64656275 0x673a3000>;
swapxy = <0x03 0x74692c73 0x7761702d 0x78793f00>;
};

__symbols__ {
tft35a_pins = "/fragment@1/__overlay__/tft35a_pins";
tft35a = "/fragment@2/__overlay__/tft35a@0";
tft35a_ts = "/fragment@2/__overlay__/tft35a-ts@1";
};

__fixups__ {
spi0 = "/fragment@0:target:0\0/fragment@2:target:0";
gpio = "/fragment@1:target:0\0/fragment@2/__overlay__/tft35a@0:reset-gpios:0\0/fragment@2/__overlay__/tft35a@0:dc-gpios:0\0/fragment@2/__overlay__/tft35a-ts@1:interrupt-parent:0\0/fragment@2/__overlay__/tft35a-ts@1:pendown-gpio:0";
};

__local_fixups__ {
fixup = "/fragment@2/__overlay__/tft35a@0:pinctrl-0:0\0/__overrides__:speed:0\0/__overrides__:txbuflen:0\0/__overrides__:rotate:0\0/__overrides__:fps:0\0/__overrides__:bgr:0\0/__overrides__:debug:0\0/__overrides__:swapxy:0";
};
};

[링크 : https://www.waveshare.com/wiki/3.5inch_RPi_LCD_(C)?srsltid=AfmBOoqSBx9MWwgfxNGqcf86r2X4O_xpUVpX6gSELU31q2-5_RCjE0z1

[링크 : https://minimonk.tistory.com/9776]

 

예전에 2.4만원 넘어서 안샀던 것들이 ili9341 계열인데, 아래 보면 65fps까지 되는 쩌는 애들이네

[링크 : https://minimonk.tistory.com/12398]

 

아무튼 저런 애들을 써야 성능이 잘 나온다~ 라는거군

ESP32 LCDs performance report
1. ST7796 4-wire SPI   16fps
2. ST7796 8-bit   34fps
3. ILI9488 4-wire SPI  11fps
4. ILI9488 8-bit  34fps
5. ST7789 4-wire SPI  65fps
6. ST7789 8-bit  5xfps(weird)
7. ILI9341 4-wire SPI  65fps
8. GC9A01  8xfps
9. ST7789 240x240  8xfps

[링크 : https://www.facebook.com/groups/797613180807626/posts/1048617505707191/]