Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
GDEW075T8.cpp
- Committer:
- HarryChen
- Date:
- 2018-10-14
- Revision:
- 0:518ad5d26088
- Child:
- 1:6ae4383194a1
File content as of revision 0:518ad5d26088:
#include "mbed.h" #include "GDEW075T8.h" #define nCS_L HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET) #define nCS_H HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET) #define nDC_L HAL_GPIO_WritePin(DC_GPIO_Port, DC_Pin, GPIO_PIN_RESET) #define nDC_H HAL_GPIO_WritePin(DC_GPIO_Port, DC_Pin, GPIO_PIN_SET) #define nRST_L HAL_GPIO_WritePin(RST_GPIO_Port, RST_Pin, GPIO_PIN_RESET) #define nRST_H HAL_GPIO_WritePin(RST_GPIO_Port, RST_Pin, GPIO_PIN_SET) // TODO: use real value DigitalOut nCS(D1); DigitalOut nDC(D2); DigitalOut nRST(D3); DigitalIn busyPin(D8); SPI spi(D4, D5, D6, D7); static inline int SPI_Write(unsigned char value) { return spi.write(value); } void SPI4W_WRITECOM(unsigned char command) { nCS = 0; nDC = 0; // command write SPI_Write(command); nCS = 1; } void SPI4W_WRITEDATA(unsigned char data) { nCS = 0; nDC = 1; // data write SPI_Write(data); nCS = 1; } static void lcd_chkstatus(void) { unsigned char busy; do { SPI4W_WRITECOM(0x71); busy = busyPin; busy = !(busy & 0x01); } while (busy); wait(0.2); } static void EPD_W21_Init(void) { // BS tied to GND // nBS_L; //4 wire spi mode selected nRST = 0; //module reset wait(0.1); nRST = 1;; wait(0.1); } void color_bar_display (unsigned char k) { unsigned long int i; unsigned char j, temp1, temp2; if (k == 0) { SPI4W_WRITECOM(0x10); //开始传输图像 for (i = 0; i < 30720; i++) { // temp1 = G_Ultrachip1[i]; temp1 = 0xff; // all black for (j = 0; j < 8; j++) { if (temp1 & 0x80) temp2 = 0x00; else temp2 = 0x03; temp2 <<= 4; temp1 <<= 1; j++; if (temp1 & 0x80) temp2 |= 0x00; else temp2 |= 0x03; temp1 <<= 1; SPI4W_WRITEDATA(temp2); } } } if (k == 1) { SPI4W_WRITECOM(0x10); //开始传输图像 for (i = 0; i < 30720; i++) { // temp1 = G_Ultrachip2[i]; temp1 = (i & 1) ? 0xff : 0; for (j = 0; j < 8; j++) { if (temp1 & 0x80) temp2 = 0x00; else temp2 = 0x03; temp2 <<= 4; temp1 <<= 1; j++; if (temp1 & 0x80) temp2 |= 0x00; else temp2 |= 0x03; temp1 <<= 1; SPI4W_WRITEDATA(temp2); } } } } void GDE_Start(void) { EPD_W21_Init(); SPI4W_WRITECOM(0x01); SPI4W_WRITEDATA (0x37); //POWER SETTING SPI4W_WRITEDATA (0x00); SPI4W_WRITECOM(0X00); //PANNEL SETTING SPI4W_WRITEDATA(0xCF); SPI4W_WRITEDATA(0x08); SPI4W_WRITECOM(0x06); //boost设定 SPI4W_WRITEDATA (0xc7); SPI4W_WRITEDATA (0xcc); SPI4W_WRITEDATA (0x28); SPI4W_WRITECOM(0x30); //PLL setting SPI4W_WRITEDATA (0x3c); SPI4W_WRITECOM(0X41); //TEMPERATURE SETTING SPI4W_WRITEDATA(0x00); SPI4W_WRITECOM(0X50); //VCOM AND DATA INTERVAL SETTING SPI4W_WRITEDATA(0x77); SPI4W_WRITECOM(0X60); //TCON SETTING SPI4W_WRITEDATA(0x22); SPI4W_WRITECOM(0x61); //tres 单色640*384 SPI4W_WRITEDATA (0x02); //source 640 SPI4W_WRITEDATA (0x80); SPI4W_WRITEDATA (0x01); //gate 384 SPI4W_WRITEDATA (0x80); SPI4W_WRITECOM(0X82); //VDCS SETTING SPI4W_WRITEDATA(0x1E); //decide by LUT file SPI4W_WRITECOM(0xe5); //FLASH MODE SPI4W_WRITEDATA(0x03); } void GDE_ShowDemo() { for (int k = 0; k < 2; ++k) { color_bar_display(k); SPI4W_WRITECOM(0x04); //POWER ON lcd_chkstatus(); SPI4W_WRITECOM(0x12); //display refresh wait(0.1); lcd_chkstatus(); wait(1); } } void GDE_Stop() { SPI4W_WRITECOM(0x02); lcd_chkstatus(); SPI4W_WRITECOM(0x07); SPI4W_WRITEDATA(0xa5); }