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) 전송으로 변경