tel
검색
확인
취소
good display
현재 위치:
메인 페이지
/
/
(Arduino-IDE) Work Fow 및 제어 명령표를 기반으로 전자잉크 디스플레이 드라이버  - Good Display의 2.13인치 전자종이 GDEY0213B74로 예

관련정보

RELATED INFORMATION

연락처

CONTACT US

(Arduino-IDE) Work Fow 및 제어 명령표를 기반으로 전자잉크 디스플레이 드라이버  - Good Display의 2.13인치 전자종이 GDEY0213B74로 예

  • 분류 :기술적지원
  • 작성자 :
  • 출처 :
  • 등록시간 :2022-11-16
  • 방문수 :0

【개요 설명】

(Arduino-IDE) Work Fow 및 제어 명령표를 기반으로 전자잉크 디스플레이 드라이버  - Good Display의 2.13인치 전자종이 GDEY0213B74로 예

【개요 설명】

  • 분류 :기술적지원
  • 작성자 :
  • 출처 :
  • 등록시간 :2022-11-16
  • 방문수 :0
상세정보

(Arduino-IDE) Work Fow 및 제어 명령표를 기반으로 전자잉크 디스플레이 드라이버 

- Good Display의 2.13인치 전자종이 GDEY0213B74로 예

 

 

전자잉크 스크린의 작동 원리?

전자 잉크 스크린은 E Ink가 보유한 디스플레이 기술을 사용하여 가해진 전압을 변경하여 대전체 마이크로캡슐 입자를 구동하여 작동합니다.각 픽셀 점은

개별 전자 잉크, 즉 마이크로 캡슐 단위로 구성됩니다.모든 캡슐에는 액체 전하가 있는데, 그 중 양전하가 흰색으로, 음전하가 검은색으로 염색된다.

한쪽에 양과 음 전압을 주면 전하가 있는 액체가 각각 끌어당기고 배척되어 검은색이나 흰색의 이미지를 표시할 수 있다.

 

전자잉크 스크린 GDEY0213B74의 하드웨어 매개 변수

# 매개변수 기호 의미
단일 접지 VSS
논리적 전원 전압 Vci
논리적 고전압 Voh
논리적 저전력 Vol
일반 전력 Ptyp
수면 전력 Psleep
수면 전류 Isleep
깊은 수면 전류 Idsleep
VCOM 핀 출력

 

전자종이 디스플레이 구동 흐름도

프로세스 맵 코드 설명

1.화면에 전원을 공급합니다.일반적으로 3.3V의 전원을 권장합니다
2. 구성 초기화
2.1. 이 단계에서 잉크 스크린과 MCU 간의 SPI 통신, 즉 IO setting을 구성해야 합니다.
SPI 및 전자잉크 스크린의 SPI 통신 구성에 관하여, 구체적으로 당신은 규격서의 6.3 Panel AC Characteristics를 참고할 수 있습니다

 

사례 코드:

#include <SPI.h>
#include"Ap_29demo.h"
//IO settings
int BUSY_Pin = 4; 
int RES_Pin = 5; 
int DC_Pin = 6; 
int CS_Pin = 7; 

#define EPD_W21_CS_0 digitalWrite(CS_Pin,LOW)
#define EPD_W21_CS_1 digitalWrite(CS_Pin,HIGH)
#define EPD_W21_DC_0  digitalWrite(DC_Pin,LOW)
#define EPD_W21_DC_1  digitalWrite(DC_Pin,HIGH)
#define EPD_W21_RST_0 digitalWrite(RES_Pin,LOW)
#define EPD_W21_RST_1 digitalWrite(RES_Pin,HIGH)
#define isEPD_W21_BUSY digitalRead(BUSY_Pin)
void setup() {
   pinMode(BUSY_Pin, INPUT); 
   pinMode(RES_Pin, OUTPUT);  
   pinMode(DC_Pin, OUTPUT);    
   pinMode(CS_Pin, OUTPUT);   
   //SPI
   SPI.beginTransaction(SPISettings(10000000, MSBFIRST, SPI_MODE0)); 
   SPI.begin ();  
}

2.2. 흐름도에 따라 SPI 통신 구성을 완료한 후 스크린의 하드웨어 초기화 및 소프트웨어 초기화를 수행해야 함

/////////////////EPD settings Functions/////////////////////

void EPD_HW_Init(void)
{
  EPD_W21_RST_0;  // Module reset   
  delay(10);//At least 10ms delay 
  EPD_W21_RST_1;
  delay(10); //At least 10ms delay 
  
  Epaper_READBUSY();   
  Epaper_Write_Command(0x12);  //SWRESET
  Epaper_READBUSY();   

 

3. 초기화 코드 보내기


이 섹션에서는 다음과 같은 코드 세그먼트를 다룹니다.

  Epaper_Write_Command(0x01); //Driver output control      
  Epaper_Write_Data(0xF9);
  Epaper_Write_Data(0x00);
  Epaper_Write_Data(0x00);

  Epaper_Write_Command(0x11); //data entry mode       
  Epaper_Write_Data(0x01);

  Epaper_Write_Command(0x44); //set Ram-X address start/end position   
  Epaper_Write_Data(0x00);
  Epaper_Write_Data(0x0F);    //0x0F-->(15+1)*8=128

  Epaper_Write_Command(0x45); //set Ram-Y address start/end position          
  Epaper_Write_Data(0xF9);   //0xF9-->(249+1)=250
  Epaper_Write_Data(0x00);
  Epaper_Write_Data(0x00);
  Epaper_Write_Data(0x00); 

  Epaper_Write_Command(0x3C); //BorderWaveform
  Epaper_Write_Data(0x05); 

 

3.1 드라이브 출력 제어(Driver Output Control)


이 섹션에는 총 3바이트의 데이터가 필요합니다.
A[8:0]에 0xF9, 즉 (249+1) 를 써서 총 250개의 Gate 열기
B[2:0]에 0x00, 즉 G0부터 G249까지 G0을 첫 번째 출력의 Gate로 씁니다.검색 시퀀스 0, 1, 2, 3... 249;스캔 순서 0부터 249까지

3.2. 스캔 원리 및 픽셀 점 쓰기 모드 설정 (Data Entry Mode Setting)

0x11 명령어를 쓰고 0x01, 즉 ID[1:0] = 01, AM = 0을 A[2:0]에 씁니다.
다음 그림과 설명에 따라 이 모드로 설정했습니다.
주소 카운터가 X 방향으로 업데이트됩니다.또한 데이터가 RAM에 기록될 때마다 Y 주소 카운터가 자동으로 1 감소하고 X 주소 카운터가 자동으로 1 증가합니다.

해당 모드 설정


내부에는 주소 카운터가 있어 자동으로 어느 방향에서 주소를 더하고 줄이며 AM을 통해 방향을 설정한다.ID 제어 더하기 빼기.
ID[0] ='1'일 때 데이터를 RAM에 쓰면 X 주소 카운터가 자동으로 1씩 증가합니다.
ID[0] = "0" 인 경우 데이터를 RAM에 쓰면 X 주소 카운터가 자동으로 1 감소합니다.
ID[1] = "1" 인 경우 데이터를 RAM에 쓰면 Y 주소 카운터가 자동으로 1 증가합니다.
ID[1] = "0" 인 경우 데이터를 RAM에 쓰면 Y 주소 카운터가 자동으로 1 감소합니다.
AM = "0" 이면 X 방향으로 주소 카운터가 업데이트됩니다.
AM = "1" 인 경우 Y 방향으로 주소 카운터가 업데이트됩니다.


창 주소를 선택하면 데이터는 ID[1:0] 및 AM 비트로 지정된 RAM 영역에 기록됩니다.

 

3.3. Set RAM X&Y-Address Start/End Position

  Epaper_Write_Command(0x44); //set Ram-X address start/end position   
  Epaper_Write_Data(0x00);
  Epaper_Write_Data(0x0F);    //0x0F-->(15+1)*8=128

  Epaper_Write_Command(0x45); //set Ram-Y address start/end position          
  Epaper_Write_Data(0xF9);   //0xF9-->(249+1)=250
  Epaper_Write_Data(0x00);
  Epaper_Write_Data(0x00);
  Epaper_Write_Data(0x00); 

 

이제 0x44, 0x45 명령을 사용해야 합니다.
0x44: A[5:0] 창의 X 방향 설정 시작 주소 0x44: B[5:0] 창의 X 방향 종료 주소 설정
0x00 및 0x0F를 각각 작성하여 X 시작 0, 종료 (15+1) *8 = 128
0x45: A[8:0] 윈도우의 Y 방향 설정 시작 주소 0x45: B[8:0] 윈도우의 Y 방향 종료 주소 설정
0x01에 기록된 0x01에 따라 식별된 패턴입니다.

249에서 시작 주소를 설정하고 0에서 종료 주소를 설정합니다.

 

3.3. Border Waveform Control

Epaper_Write_Command(0x3C); //BorderWaveform
  Epaper_Write_Data(0x05);

4. Load Waveform LUT


  Epaper_Write_Command(0x18); //Read built-in temperature sensor
  Epaper_Write_Data(0x80);  

 

 

5. 전자종이 스크린 이미지 출력

0x4E, 0x4F RAM 주소 카운터의 기본값 설정
0x4E:A[5:0] 현재 RAM 주소 X 방향 카운터 값 설정, X는 0 0x4F:A[7:0] 현재 RAM 주소 Y 방향 카운터 값 설정, Y는 249

 

Epaper_Write_Command(0x4E);   // set RAM x address count
  Epaper_Write_Data(0x00);
  Epaper_Write_Command(0x4F);   // set RAM y address count  
  Epaper_Write_Data(0xF9);
  Epaper_Write_Data(0x00);

                              

다음으로 0x24 명령을 실행하여 GDEY0213B74라는 흑백 잉크 스크린에 대해 검은색은 0, 흰색은 1을 각각 0x00과 0xff에 대응한다.

//////////////////////Single display///////////////////////////////////

void EPD_WhiteScreen_Black(void)
{
   unsigned int i;
    Epaper_Write_Command(0x24);   //write RAM for black(0)/white (1)
    for(i=0;i<4000;i++)
    {
        Epaper_Write_Data(0x00);    
    }
    EPD_Update();
}

void EPD_WhiteScreen_White(void)
{
   unsigned int i;
    Epaper_Write_Command(0x24);   //write RAM for black(0)/white (1)
    for(i=0;i<4000;i++)
    {
        Epaper_Write_Data(0xff);    
    }
    EPD_Update();
}

*0x0C 외부 파형을 호출할 때 호출되는 명령, 이 데모에서는 다루지 않음


/////////////////////////All screen update//////////////////////////////
void EPD_WhiteScreen_ALL(const unsigned char * datas)
{
   unsigned int i;
    Epaper_Write_Command(0x24);   //write RAM for black(0)/white (1)
   for(i=0;i<4000;i++)
   {               
     Epaper_Write_Data(pgm_read_byte(&datas[i]));
   }
   EPD_Update();   
}
void EPD_WhiteScreen_ALL_Fast(const unsigned char *datas)
{
   unsigned int i;  
  Epaper_Write_Command(0x24);   //write RAM for black(0)/white (1)
   for(i=0;i<4000;i++)
   {               
      Epaper_Write_Data(pgm_read_byte(&datas[i]));
   } 
   
   EPD_Update_Fast();  
}
/////////////////////////////////////////////////////////////////////////////////////////
void EPD_Update(void)
{   
  Epaper_Write_Command(0x22); //Display Update Control
  Epaper_Write_Data(0xF7);   
  Epaper_Write_Command(0x20); //Activate Display Update Sequence
  Epaper_READBUSY();  

}
void EPD_Update_Fast(void)
{   
  Epaper_Write_Command(0x22); //Display Update Control
  Epaper_Write_Data(0xC7);   
  Epaper_Write_Command(0x20); //Activate Display Update Sequence
  Epaper_READBUSY();   

}
void EPD_Part_Update(void)
{
  Epaper_Write_Command(0x22);//Display Update Control 
  Epaper_Write_Data(0xFF);   
  Epaper_Write_Command(0x20); //Activate Display Update Sequence
  Epaper_READBUSY();      
}
void EPD_DeepSleep(void)
{  
  Epaper_Write_Command(0x10); //enter deep sleep
  Epaper_Write_Data(0x01); 
  delay(100);
}
void Epaper_READBUSY(void)
{ 
  while(1)
  {   //=1 BUSY
     if(isEPD_W21_BUSY==0) break;
  }  
}

                                                    

5.1 Display Update Control


위의 코드 세그먼트는 세 가지 전자종이 업데이트하는 방법을 설계합니다.

EPD_Update        Epaper_Write_Data(0xF7);
EPD_Update_Fast   Epaper_Write_Data(0xC7);
EPD_Part_Update   Epaper_Write_Data(0xFF);

 

Epaper_Write_Command(0x21); //  Display update control
  Epaper_Write_Data(0x00);    
  Epaper_Write_Data(0x80);

 

0x00은 다음과 같습니다.
A[7:4] 0000-Normal
A[3:0] 0000-Normal
B[7] 쓰기 0x80은 1, S8toS167(쓰기 0x00은 S0toS175)
0x80을 0x00으로 변경하면 전체 화면을 8bit 위로 이동하는 것과 같은 실제 효과

                             

 

for(i=0;i<4000;i++)

출처: Ap_29demo.h

const unsigned char gImage_basemap[4000]

따라서 이미지의 해상도는 250x122여야 하며 이미지 처리 지침 문서의 단계를 따릅니다 (Image2LCD 소프트웨어와 함께 사용).

또한 Good Display의 온라인 도구인 -ImageToArray를 직접 사용하여 이미지 해상도가 250x122를 충족하고 이미지 형식이 jpg, png을 지원하는지 확인할 수 있습니다.


수직 스캔을 선택한 경우 4000바이트가 나옵니다.

수평 스캔을 선택한 경우 3904 바이트가 나옵니다. for(i=0;i<3904;i++)

 

6. 스크린 화면 업데이트 완료, 수면

void EPD_DeepSleep(void)
{  
  Epaper_Write_Command(0x10); //enter deep sleep
  Epaper_Write_Data(0x01); 

QR코드를 스캔하여 휴대폰으로 보기

권장제품

 미니 전자종이 0.97 인치 디스플레이 GDEW0097T50 IC JD79651
미니 전자종이 0.97 인치 디스플레이 GDEW0097T50 IC JD79651
 1.02 인치 미니  e잉크 전자종이 디스플레이 GDEW0102T4
1.02 인치 미니 e잉크 전자종이 디스플레이 GDEW0102T4
128x80 해상도와 SPI 인터페이스를 갖춘 1.02인치 미니 부분 리프레시 e잉크 디스플레이로 흑백 콘텐츠로 영상을 표시할 수 있습니다. 전원 없이 이미지가 무기한 유지됩니다.
 프론트라이트 드라이브 보드 DESPI-F01
프론트라이트 드라이브 보드 DESPI-F01
 4.3인치 TFT 모듈, 넓은 작동 온도 800x480 IPS 유리, GDTY0430R100N
4.3인치 TFT 모듈, 넓은 작동 온도 800x480 IPS 유리, GDTY0430R100N
 4.0인치 TFT LCD 디스플레이 모듈, GDN-D43AT-GTM040HS
4.0인치 TFT LCD 디스플레이 모듈, GDN-D43AT-GTM040HS
 1.3인치 320x320 라운드 LCD 원 TFT 모듈 디스플레이, GDTY0130H100N
1.3인치 320x320 라운드 LCD 원 TFT 모듈 디스플레이, GDTY0130H100N
 2.69인치 터치패널 풀 컬러 AM OLED, 800x600:GDOJ026C01
2.69인치 터치패널 풀 컬러 AM OLED, 800x600:GDOJ026C01
 2.4인치 리지드 AM-OLED 450x600 화려한 oled 디스플레이:GDOJ024C45
2.4인치 리지드 AM-OLED 450x600 화려한 oled 디스플레이:GDOJ024C45
 1.39인치 컬러원형AM OLED해상도454x454 넓은 온도야외용GDOD0139CP45
1.39인치 컬러원형AM OLED해상도454x454 넓은 온도야외용GDOD0139CP45

온라인 메시지

작성 어플명 :
고객 메시지
설명 :
验证码