관련정보
RELATED INFORMATION
연락처
CONTACT US
-
0086-411-84619565
E-mail:info@good-display.com
Add:랴오닝성 대련시 간정자구 중화서로 18호
(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로 예
-
IC SSD1680:https://www.good-display.com/companyfile/101.html
-
개발 키트 아두이노:https://kr.good-display.com/product/440.html
-
시연 용 demo 코드: https://kr.good-display.com/companyfile/679.html
-
GDEY0213B74 이미지 To C Array: https://kr.good-display.com/companyfile/681.html
-
Image2LCD: https://github.com/GoodDisplay/E-paper-Display-Library-of-GoodDisplay/tree/main/Image2LCD
전자잉크 스크린의 작동 원리?
전자 잉크 스크린은 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코드를 스캔하여 휴대폰으로 보기
권장제품
온라인 메시지
佳显电子
연락처
제품 문의 info@good-display.com
기술 지원 service@good-display.com
불만 제안 complaint@good-display.com
©2021-2024 DALIAN GOOD DISPLAY CO., LTD. All Rights Reserved. 辽ICP备08000578号-1 power by:300.cn Dalian