얕고 넓게

[3DP] Marlin + ili9488 본문

IT/3D Printer, CNC

[3DP] Marlin + ili9488

블랙오닉스 2025. 3. 24. 22:45

2025.03.24

ChatGPT를 다시 활용

✅ 수정 포인트 요약

1. 색상 포맷 정의 (색상 변환 부분)

색상은 보통 drawPixel, setColor, drawBitmap 등의 함수에서 처리되며, 다음 위치들을 확인해야 합니다:

📁 Marlin/src/lcd/tft/ 디렉토리 내:

  • tft_io/ → LCD I/O 정의 (SPI 전송 포함)
  • tft_color.h 또는 tft_color.cpp → 색상 변환 함수
  • tft_spi_ili9488.cpp → 드라이버별 구현 (특정 드라이버 대응)

2. 색상 전송 포맷 변환

ILI9488은 18bit(RGB666) 를 요구하므로, Marlin에서 사용하는 16bit RGB565 포맷을 18bit로 변환해주는 코드가 필요합니다.

예를 들어 16bit 색상을 다음처럼 분리하고 전송해야 합니다:

// RGB565 → RGB666 변환 예시
uint16_t color = 0xF800; // 예시 (빨강)
uint8_t r = (color >> 11) & 0x1F; // 5bit
uint8_t g = (color >> 5) & 0x3F;  // 6bit
uint8_t b = color & 0x1F;         // 5bit

// 5/6 bit → 6bit 확장
uint8_t r6 = (r * 255 / 31) >> 2; // 또는 (r << 3) & 0xFC
uint8_t g6 = (g * 255 / 63) >> 2;
uint8_t b6 = (b * 255 / 31) >> 2;

// 전송 (3바이트)
spi_send(r6);
spi_send(g6);
spi_send(b6);
 

👉 이 변환은 보통 writePixel 또는 writeColor류의 함수 안에 들어가게 됩니다.

3. tft_spi_ili9488.cpp 드라이버 파일 커스터마이징

ILI9488 전용 파일에서 직접 SPI 전송을 수정해야 할 수 있습니다.

예시 위치:

Marlin/src/lcd/tft/tft_drivers/st7789/tft_spi_ili9488.cpp

또는

Marlin/src/lcd/tft/tft_io/tft_io_spi.cpp

여기서 다음을 수정합니다:

  • 기존에 2바이트만 전송하는 SPI 루틴을
  • 3바이트 (R, G, B → 각 6bit) 전송으로 변경

'IT > 3D Printer, CNC' 카테고리의 다른 글

[3DP] KP3S 히트파이프 고장 수리  (0) 2025.03.28
[3DP] KP3S Marlin 2.1.2.5  (0) 2025.03.26
[3DP] Ultimaker XY mechanism 비교  (0) 2025.03.24
[3DP] Sunhokey i4 수리  (0) 2025.02.01
[3DP] Prusa i4 자료  (0) 2025.01.17