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.
Diff: GDEW075T8.cpp
- Revision:
- 0:518ad5d26088
- Child:
- 1:6ae4383194a1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GDEW075T8.cpp Sun Oct 14 17:03:59 2018 +0000 @@ -0,0 +1,192 @@ +#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); + +} \ No newline at end of file