컬러 LCD ST7789V2가 탑재된 STM32 1부: 소개 및 설정
Husamuldeen 이 임베디드 시스템 , LCD , 주변 장치 드라이버 , STM32 에 게시했습니다 .
이 첫 번째 부분에서는 ST7789V2 디스플레이 컨트롤러와 주요 기능, 그리고 STM32 마이크로컨트롤러와의 인터페이스 방식을 소개합니다. 또한, CubeMX에서 STM32 프로젝트를 설정하여 디스플레이 구동을 위한 기반을 마련하는 방법도 살펴보겠습니다.

이 가이드에서는 다음 내용을 다룹니다.
소개.
하드웨어 연결.
STM32CubeMX 설정.
STM32CubeIDE로 프로젝트를 가져옵니다.
1. 서론:
가이드의 첫 번째 부분에서는 다양한 최신 TFT-LCD 모듈에 전원을 공급하는 고도로 통합되고 널리 사용되는 드라이버 IC인 ST7789V2 디스플레이 컨트롤러를 심층적이고 기본적으로 살펴보겠습니다.ST7789V2는 ST77xx 제품군에 속하며 240x240, 240x320 및 이와 유사한 중소 해상도 에 맞게 특별히 설계되어 스마트 워치, 핸드헬드 계측기, 산업용 HMI, 테스트 장비, 가전 제품, IoT 대시보드 및 작은 폼 팩터에서 선명한 컬러 그래픽이 필요한 모든 시스템과 같은 소형 임베디드 장치에 이상적입니다.이 컨트롤러는 정교한 디스플레이 타이밍 엔진, 내부 GRAM 메모리, 유연한 명령 세트, 백라이트 제어 지원 및 다양한 인터페이스 옵션을 포함하여 TFT 패널을 작동하는 데 필요한 거의 모든 것을 통합하여 디스플레이가 최소한의 외부 구성 요소와 매우 낮은 MCU 오버헤드로 작동할 수 있도록 합니다.
ST7789V2의 기능 세트는 임베디드 공간에서 이 제품이 지배적인 위치를 차지하게 된 주된 이유 중 하나입니다. 65K/262K 컬러 심도 , 고속 SPI 인터페이스(1, 2 또는 3라인 변형) , 일부 모듈의 병렬 인터페이스를 지원하여 개발자가 설계 제약 조건에 가장 적합한 통신 방법을 선택할 수 있는 유연성을 제공합니다. 컨트롤러에는 칩 자체에 풀 프레임 버퍼(GRAM)가 포함되어 있어 STM32가 원시 디스플레이 데이터를 저장하기 위해 내부 RAM의 큰 섹션을 할당할 필요가 없습니다. 이로 인해 ST7789V2는 메모리가 제한된 MCU에 특히 매력적입니다. 또한 내장된 디스플레이 구동 로직은 디스플레이 새로 고침, 티어링 효과 동기화, 데이터 형식 변환, 수직 스크롤, 부분 모드 작동, 반전 제어, 감마 보정, 절전 모드 및 픽셀 주소 지정 과 같은 복잡한 작업을 처리하여 마이크로컨트롤러가 고수준 그래픽 작업에 집중할 수 있도록 합니다.
LCD 측면에서 일반적인 ST7789V2 기반 TFT 모듈은 선명한 색상, 넓은 시야각, 우수한 밝기 특성을 갖춘 IPS 또는 TFT 패널을 사용합니다. 이 모듈은 1.3인치에서 2.0인치 또는 2.4인치까지 다양한 크기로 제공되어 휴대용 기기에서 매우 흔하게 사용됩니다. 웨어러블, UI 패널, 오실로스코프 인터페이스, 멀티미터, 배터리 충전기, 제어 장치, 차량 대시보드, 스마트 홈 컨트롤러, HVAC 온도 조절기, 3D 프린터 화면, 심지어 음악 플레이어나 게임용 핸드헬드와 같은 소비자 기기까지 다양한 분야에 적용 됩니다. ST7789V2는 인터페이스의 편의성과 성숙하고 잘 문서화된 명령 세트 덕분에 성능이 중요한 그래픽 시스템을 구축하는 취미 개발자와 전문가 모두에게 실용적인 선택입니다.
ST7789V2는 매우 유연하기 때문에 드라이버 코드를 작성하기 전에 통신 방법과 구성 방법을 이해하는 것이 필수적입니다.다른 모듈은 다른 인터페이스를 노출할 수 있습니다.가장 일반적인 것은 SPI 이지만 일부 버전은 더 많은 핀을 희생하여 더 높은 처리량을 제공하는 8080 스타일 병렬 버스를 지원합니다 .SPI 기반 모듈은 종종 보드 레이아웃에 따라 최대 40~80MHz 의 속도로 작동하여 하드웨어 가속기 없이도 빠른 픽셀 푸싱이 가능합니다.ST7789V2 명령은 픽셀 형식(RGB565/666), 열/페이지 주소 범위, MADCTL 방향 설정, 포치 타이밍, 프레임 속도, 게이트 드라이버 설정 및 전압 구성을 포함하여 디스플레이 파이프라인의 여러 계층을 제어하므로 디스플레이의 초기화 시퀀스는 신중하게 구현해야 합니다 .이 가이드는 프로젝트 구성에서 전체 디스플레이 활성화까지 명확하고 단계별 설정 프로세스를 제공하여 혼란을 없애는 것을 목표로 합니다.
디스플레이 코드 한 줄이라도 건드리기 전에 STM32 환경을 제대로 구성해야 합니다. 따라서 이 첫 번째 장의 두 번째 부분에서는 STM32CubeMX 에서 깔끔하고 체계적인 프로젝트를 설정하는 방법에 중점을 두고 , 모든 관련 주변 장치와 시스템 클럭이 최적의 성능을 위해 올바르게 초기화되도록 합니다. 디스플레이 모듈에 적합한 통신 인터페이스를 선택하고, DC(데이터/명령), RST(리셋), CS(칩 선택), BLK(백라이트), SPI 핀과 같은 제어 신호를 위한 GPIO를 구성하고 , 애플리케이션 후반부에서 병목 현상을 방지하기 위해 적절한 클럭 속도를 활성화하는 방법을 살펴봅니다. 또한 권장 SPI 설정, DMA 고려 사항, HAL 대 LL 옵션, 그리고 향후 디스플레이 기능을 깔끔하고 효율적으로 추가할 수 있도록 프로젝트를 구성하는 방법에 대해서도 설명합니다.
이 부분을 마치면 ST7789V2의 기능과 아키텍처를 완전히 이해하고, 실제 응용 프로그램에서 어디에 적합한지 파악하며, 올바르게 구성된 STM32CubeMX 프로젝트를 완벽하게 준비하여 2부로 넘어갈 수 있습니다. 2부에서는 초기화 시퀀스, 저수준 드라이버 코드, 명령과 픽셀 데이터를 디스플레이로 전송하는 첫 번째 루틴을 작성합니다.
2. 하드웨어 연결:
연결은 다음과 같습니다.

1.69인치 LCD 모듈 STM32F411 뉴클레오-64
| 1.69인치 LCD 모듈 | STM32F411 뉴클레오-64 |
| 비씨씨 | 5V |
| 접지 | 접지 |
| 소음 | PA7(아두이노의 D11) |
| 클락 | PA5(아두이노의 D13) |
| 씨에스 | PA0(아두이노의 A0) |
| DC | PA1(아두이노의 A1) |
| RST | PA4(아두이노의 A2) |
참고: BL은 선택 사항이며, 플로팅 상태로 두거나 PWM 신호를 연결하여 밝기를 제어할 수 있습니다.
3. STM32CubeMX 설정:
다음과 같이 STM32CubeMX를 열고 새 프로젝트를 시작합니다.

STM32 MCU를 검색하고 MCU를 선택한 후 다음과 같이 '새 프로젝트 시작'을 클릭합니다.

다음으로, 시스템 코어에서 RCC를 선택하고, 보드에 외부 발진기가 있는 경우 크리스털/세라믹 발진기를 선택하고, Nucleo 보드의 경우 발진기를 바이패스합니다. 이 가이드에서는 STM32F411 Nucleo-64를 사용하므로, 다음과 같이 바이패스 발진기를 사용합니다.

다음으로, Clock 설정에서 입력 주파수를 8MHz, PLL 소스를 HSE, HCLK 주파수를 72MHz로 설정합니다. Enter 키를 눌러 올바른 매개변수를 설정합니다.

다음으로, 연결성에서 SPI를 선택하고 마스터 하프 듀플렉스로 설정하고, 프리스케일러를 4로 설정합니다. 이를 선택하면 SPI 클록은 18MHz가 되는데, 설정을 고려하면 충분히 좋은 수준입니다.
또한 PA0, PA1, PA4를 출력으로 설정하고 각각 CS, DC, RST의 이름을 지정합니다.

다음으로, 프로젝트 관리자에서 코드 생성을 선택하고 주변 장치 초기화를 다음과 같이 .c/.h 파일 쌍으로 설정합니다.

다음으로, 프로젝트에서 프로젝트 이름을 지정하고, 프로젝트 위치를 선택하고, 툴체인/IDE에서 STM32CubeIDE를 선택하고 다음과 같이 코드 생성을 클릭합니다.

이렇게 하면 프로젝트가 생성됩니다.
4. STM32CubeIDE로 프로젝트 가져오기:
STM32CubeIDE를 열고 작업 공간을 선택한 다음 실행을 클릭합니다.
IDE에서 파일을 클릭하고 다음과 같이 STM32 프로젝트 만들기/가져오기를 선택합니다.

다음으로, STM32 프로젝트 가져오기에서 STM32CubeMX/STM32CubeIDE 프로젝트를 선택하고 다음과 같이 다음을 클릭합니다.

다음으로, .ioc 파일이 있는 폴더를 선택하고 다음과 같이 마침을 클릭합니다.

1부는 여기까지입니다.
2부에서는 LCD를 초기화하고 디스플레이의 각 픽셀에 무작위 색상을 그리는 과정을 살펴보겠습니다.
즐거운 코딩 되세요 😉
위 튜토리얼의 원본 문서는 이 링크를 따라가시면 만날 수 습니다. STM32 프로젝트에 관한 좋은 튜토리얼이 많은 블로그입니다.
STM32 Timers Applications: Timer Synchronization External Clock Mode
STM32 ADC Application Part 9: External Voltage Reference
취업, 창업의 막막함, 외주 관리, 제품 부재!
당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약,
아이디어는 있지만 구현할 기술이 없는 막막함.
우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.
이제 고민을 멈추고, 캐어랩을 만나세요!
코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.
제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!
귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.
캐어랩