Merge d183e02907 into 83a6cffae7
This commit is contained in:
commit
a9feca3f28
3 changed files with 111 additions and 70 deletions
|
|
@ -10,9 +10,6 @@ OBJ_O = $(patsubst %.c,${DIR_BIN}/%.o,$(notdir ${OBJ_C}))
|
||||||
RPI_DEV_C = $(wildcard $(DIR_BIN)/dev_hardware_SPI.o $(DIR_BIN)/RPI_sysfs_gpio.o $(DIR_BIN)/DEV_Config.o )
|
RPI_DEV_C = $(wildcard $(DIR_BIN)/dev_hardware_SPI.o $(DIR_BIN)/RPI_sysfs_gpio.o $(DIR_BIN)/DEV_Config.o )
|
||||||
JETSON_DEV_C = $(wildcard $(DIR_BIN)/sysfs_software_spi.o $(DIR_BIN)/sysfs_gpio.o $(DIR_BIN)/DEV_Config.o )
|
JETSON_DEV_C = $(wildcard $(DIR_BIN)/sysfs_software_spi.o $(DIR_BIN)/sysfs_gpio.o $(DIR_BIN)/DEV_Config.o )
|
||||||
|
|
||||||
|
|
||||||
DEBUG = -D DEBUG
|
|
||||||
|
|
||||||
# USELIB_RPI = USE_BCM2835_LIB
|
# USELIB_RPI = USE_BCM2835_LIB
|
||||||
USELIB_RPI = USE_WIRINGPI_LIB
|
USELIB_RPI = USE_WIRINGPI_LIB
|
||||||
# USELIB_RPI = USE_DEV_LIB
|
# USELIB_RPI = USE_DEV_LIB
|
||||||
|
|
@ -43,7 +40,7 @@ JETSON: JETSON_DEV JETSON_epd
|
||||||
|
|
||||||
TARGET = epd
|
TARGET = epd
|
||||||
CC = gcc
|
CC = gcc
|
||||||
MSG = -g -O -ffunction-sections -fdata-sections -Wall
|
MSG = -g -O3 -ffunction-sections -fdata-sections -Wall
|
||||||
CFLAGS += $(MSG)
|
CFLAGS += $(MSG)
|
||||||
|
|
||||||
RPI_epd:${OBJ_O}
|
RPI_epd:${OBJ_O}
|
||||||
|
|
|
||||||
|
|
@ -206,7 +206,7 @@ static int DEV_Equipment_Testing(void)
|
||||||
int fd;
|
int fd;
|
||||||
char value_str[20];
|
char value_str[20];
|
||||||
fd = open("/etc/issue", O_RDONLY);
|
fd = open("/etc/issue", O_RDONLY);
|
||||||
printf("Current environment: ");
|
Debug("Current environment: ");
|
||||||
while(1) {
|
while(1) {
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
Debug( "Read failed Pin\n");
|
Debug( "Read failed Pin\n");
|
||||||
|
|
@ -218,21 +218,21 @@ static int DEV_Equipment_Testing(void)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if(value_str[i] ==32) {
|
if(value_str[i] ==32) {
|
||||||
printf("\r\n");
|
Debug("\r\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
printf("%c",value_str[i]);
|
Debug("%c",value_str[i]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#ifdef RPI
|
#ifdef RPI
|
||||||
if(i<5) {
|
if(i<5) {
|
||||||
printf("Unrecognizable\r\n");
|
Debug("Unrecognizable\r\n");
|
||||||
} else {
|
} else {
|
||||||
char RPI_System[10] = {"Raspbian"};
|
char RPI_System[10] = {"Raspbian"};
|
||||||
for(i=0; i<6; i++) {
|
for(i=0; i<6; i++) {
|
||||||
if(RPI_System[i]!= value_str[i]) {
|
if(RPI_System[i]!= value_str[i]) {
|
||||||
printf("Please make JETSON !!!!!!!!!!\r\n");
|
Debug("Please make JETSON !!!!!!!!!!\r\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -245,7 +245,7 @@ static int DEV_Equipment_Testing(void)
|
||||||
char JETSON_System[10]= {"Ubuntu"};
|
char JETSON_System[10]= {"Ubuntu"};
|
||||||
for(i=0; i<6; i++) {
|
for(i=0; i<6; i++) {
|
||||||
if(JETSON_System[i]!= value_str[i] ) {
|
if(JETSON_System[i]!= value_str[i] ) {
|
||||||
printf("Please make RPI !!!!!!!!!!\r\n");
|
Debug("Please make RPI !!!!!!!!!!\r\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -284,17 +284,17 @@ Info:
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
UBYTE DEV_Module_Init(void)
|
UBYTE DEV_Module_Init(void)
|
||||||
{
|
{
|
||||||
printf("/***********************************/ \r\n");
|
Debug("/***********************************/ \r\n");
|
||||||
if(DEV_Equipment_Testing() < 0) {
|
if(DEV_Equipment_Testing() < 0) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#ifdef RPI
|
#ifdef RPI
|
||||||
#ifdef USE_BCM2835_LIB
|
#ifdef USE_BCM2835_LIB
|
||||||
if(!bcm2835_init()) {
|
if(!bcm2835_init()) {
|
||||||
printf("bcm2835 init failed !!! \r\n");
|
Debug("bcm2835 init failed !!! \r\n");
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
printf("bcm2835 init success !!! \r\n");
|
Debug("bcm2835 init success !!! \r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
// GPIO Config
|
// GPIO Config
|
||||||
|
|
@ -310,10 +310,10 @@ UBYTE DEV_Module_Init(void)
|
||||||
#elif USE_WIRINGPI_LIB
|
#elif USE_WIRINGPI_LIB
|
||||||
//if(wiringPiSetup() < 0)//use wiringpi Pin number table
|
//if(wiringPiSetup() < 0)//use wiringpi Pin number table
|
||||||
if(wiringPiSetupGpio() < 0) { //use BCM2835 Pin number table
|
if(wiringPiSetupGpio() < 0) { //use BCM2835 Pin number table
|
||||||
printf("set wiringPi lib failed !!! \r\n");
|
Debug("set wiringPi lib failed !!! \r\n");
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
printf("set wiringPi lib success !!! \r\n");
|
Debug("set wiringPi lib success !!! \r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
// GPIO Config
|
// GPIO Config
|
||||||
|
|
@ -321,7 +321,7 @@ UBYTE DEV_Module_Init(void)
|
||||||
wiringPiSPISetup(0,10000000);
|
wiringPiSPISetup(0,10000000);
|
||||||
// wiringPiSPISetupMode(0, 32000000, 0);
|
// wiringPiSPISetupMode(0, 32000000, 0);
|
||||||
#elif USE_DEV_LIB
|
#elif USE_DEV_LIB
|
||||||
printf("Write and read /dev/spidev0.0 \r\n");
|
Debug("Write and read /dev/spidev0.0 \r\n");
|
||||||
DEV_GPIO_Init();
|
DEV_GPIO_Init();
|
||||||
DEV_HARDWARE_SPI_begin("/dev/spidev0.0");
|
DEV_HARDWARE_SPI_begin("/dev/spidev0.0");
|
||||||
DEV_HARDWARE_SPI_setSpeed(10000000);
|
DEV_HARDWARE_SPI_setSpeed(10000000);
|
||||||
|
|
@ -330,19 +330,19 @@ UBYTE DEV_Module_Init(void)
|
||||||
#elif JETSON
|
#elif JETSON
|
||||||
#ifdef USE_DEV_LIB
|
#ifdef USE_DEV_LIB
|
||||||
DEV_GPIO_Init();
|
DEV_GPIO_Init();
|
||||||
printf("Software spi\r\n");
|
Debug("Software spi\r\n");
|
||||||
SYSFS_software_spi_begin();
|
SYSFS_software_spi_begin();
|
||||||
SYSFS_software_spi_setBitOrder(SOFTWARE_SPI_MSBFIRST);
|
SYSFS_software_spi_setBitOrder(SOFTWARE_SPI_MSBFIRST);
|
||||||
SYSFS_software_spi_setDataMode(SOFTWARE_SPI_Mode0);
|
SYSFS_software_spi_setDataMode(SOFTWARE_SPI_Mode0);
|
||||||
SYSFS_software_spi_setClockDivider(SOFTWARE_SPI_CLOCK_DIV4);
|
SYSFS_software_spi_setClockDivider(SOFTWARE_SPI_CLOCK_DIV4);
|
||||||
#elif USE_HARDWARE_LIB
|
#elif USE_HARDWARE_LIB
|
||||||
printf("Write and read /dev/spidev0.0 \r\n");
|
Debug("Write and read /dev/spidev0.0 \r\n");
|
||||||
DEV_GPIO_Init();
|
DEV_GPIO_Init();
|
||||||
DEV_HARDWARE_SPI_begin("/dev/spidev0.0");
|
DEV_HARDWARE_SPI_begin("/dev/spidev0.0");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
printf("/***********************************/ \r\n");
|
Debug("/***********************************/ \r\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,26 @@ const unsigned char EPD_2IN13_V2_lut_partial_update[]= { //20 bytes
|
||||||
|
|
||||||
0x15,0x41,0xA8,0x32,0x30,0x0A,
|
0x15,0x41,0xA8,0x32,0x30,0x0A,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// EPD_2IN13_V2_WIDTH = 122
|
||||||
|
// EPD_2IN13_V2_HEIGHT = 250
|
||||||
|
// (122 + 1) * 250 = 30750
|
||||||
|
#define VAL_20(X) X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X
|
||||||
|
#define VAL_50(X) VAL_20(X), VAL_20(X), X, X, X, X, X, X, X, X, X, X
|
||||||
|
#define VAL_100(X) VAL_20(X), VAL_20(X), VAL_20(X), VAL_20(X), VAL_20(X)
|
||||||
|
#define VAL_200(X) VAL_100(X), VAL_100(X)
|
||||||
|
#define VAL_500(X) VAL_100(X), VAL_100(X), VAL_100(X), VAL_100(X), VAL_100(X)
|
||||||
|
#define VAL_2500(X) VAL_500(X), VAL_500(X), VAL_500(X), VAL_500(X), VAL_500(X)
|
||||||
|
#define VAL_5000(X) VAL_2500(X), VAL_2500(X)
|
||||||
|
#define VAL_12500(X) VAL_2500(X), VAL_2500(X), VAL_2500(X), VAL_2500(X), VAL_2500(X)
|
||||||
|
#define VAL_25000(X) VAL_12500(X), VAL_12500(X)
|
||||||
|
#define EPD_2IN13_V2_CLEAR_VAR 0xFF
|
||||||
|
const uint8_t EPD_2IN13_V2_clear_image[] = {
|
||||||
|
VAL_25000(EPD_2IN13_V2_CLEAR_VAR), VAL_5000(EPD_2IN13_V2_CLEAR_VAR),
|
||||||
|
VAL_500(EPD_2IN13_V2_CLEAR_VAR), VAL_200(EPD_2IN13_V2_CLEAR_VAR),
|
||||||
|
VAL_50(EPD_2IN13_V2_CLEAR_VAR)
|
||||||
|
};
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
function : Software reset
|
function : Software reset
|
||||||
parameter:
|
parameter:
|
||||||
|
|
@ -128,6 +148,19 @@ static void EPD_2IN13_V2_SendData(UBYTE Data)
|
||||||
DEV_Digital_Write(EPD_CS_PIN, 1);
|
DEV_Digital_Write(EPD_CS_PIN, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function : send data
|
||||||
|
parameter:
|
||||||
|
Data : Write data
|
||||||
|
******************************************************************************/
|
||||||
|
static void EPD_2IN13_V2_SendData_nByte(uint8_t *pData, uint32_t len)
|
||||||
|
{
|
||||||
|
DEV_Digital_Write(EPD_DC_PIN, 1);
|
||||||
|
DEV_Digital_Write(EPD_CS_PIN, 0);
|
||||||
|
DEV_SPI_Write_nByte(pData, len);
|
||||||
|
DEV_Digital_Write(EPD_CS_PIN, 1);
|
||||||
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
function : Wait until the busy_pin goes LOW
|
function : Wait until the busy_pin goes LOW
|
||||||
parameter:
|
parameter:
|
||||||
|
|
@ -170,9 +203,10 @@ parameter:
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
void EPD_2IN13_V2_Init(UBYTE Mode)
|
void EPD_2IN13_V2_Init(UBYTE Mode)
|
||||||
{
|
{
|
||||||
UBYTE count;
|
|
||||||
EPD_2IN13_V2_Reset();
|
EPD_2IN13_V2_Reset();
|
||||||
|
|
||||||
|
uint8_t data[7];
|
||||||
|
|
||||||
if(Mode == EPD_2IN13_V2_FULL) {
|
if(Mode == EPD_2IN13_V2_FULL) {
|
||||||
EPD_2IN13_V2_ReadBusy();
|
EPD_2IN13_V2_ReadBusy();
|
||||||
EPD_2IN13_V2_SendCommand(0x12); // soft reset
|
EPD_2IN13_V2_SendCommand(0x12); // soft reset
|
||||||
|
|
@ -183,23 +217,26 @@ void EPD_2IN13_V2_Init(UBYTE Mode)
|
||||||
EPD_2IN13_V2_SendCommand(0x7E); //set digital block control
|
EPD_2IN13_V2_SendCommand(0x7E); //set digital block control
|
||||||
EPD_2IN13_V2_SendData(0x3B);
|
EPD_2IN13_V2_SendData(0x3B);
|
||||||
|
|
||||||
|
data[0] = 0xF9;
|
||||||
|
data[1] = 0x00;
|
||||||
|
data[2] = 0x00;
|
||||||
EPD_2IN13_V2_SendCommand(0x01); //Driver output control
|
EPD_2IN13_V2_SendCommand(0x01); //Driver output control
|
||||||
EPD_2IN13_V2_SendData(0xF9);
|
EPD_2IN13_V2_SendData_nByte(&data[0], 3);
|
||||||
EPD_2IN13_V2_SendData(0x00);
|
|
||||||
EPD_2IN13_V2_SendData(0x00);
|
|
||||||
|
|
||||||
EPD_2IN13_V2_SendCommand(0x11); //data entry mode
|
EPD_2IN13_V2_SendCommand(0x11); //data entry mode
|
||||||
EPD_2IN13_V2_SendData(0x01);
|
EPD_2IN13_V2_SendData(0x01);
|
||||||
|
|
||||||
|
data[0] = 0x00;
|
||||||
|
data[1] = 0x0F;
|
||||||
EPD_2IN13_V2_SendCommand(0x44); //set Ram-X address start/end position
|
EPD_2IN13_V2_SendCommand(0x44); //set Ram-X address start/end position
|
||||||
EPD_2IN13_V2_SendData(0x00);
|
EPD_2IN13_V2_SendData_nByte(&data[0], 2);
|
||||||
EPD_2IN13_V2_SendData(0x0F); //0x0C-->(15+1)*8=128
|
|
||||||
|
|
||||||
|
data[0] = 0xF9;
|
||||||
|
data[1] = 0x00;
|
||||||
|
data[2] = 0x00;
|
||||||
|
data[3] = 0x00;
|
||||||
EPD_2IN13_V2_SendCommand(0x45); //set Ram-Y address start/end position
|
EPD_2IN13_V2_SendCommand(0x45); //set Ram-Y address start/end position
|
||||||
EPD_2IN13_V2_SendData(0xF9); //0xF9-->(249+1)=250
|
EPD_2IN13_V2_SendData_nByte(&data[0], 4);
|
||||||
EPD_2IN13_V2_SendData(0x00);
|
|
||||||
EPD_2IN13_V2_SendData(0x00);
|
|
||||||
EPD_2IN13_V2_SendData(0x00);
|
|
||||||
|
|
||||||
EPD_2IN13_V2_SendCommand(0x3C); //BorderWavefrom
|
EPD_2IN13_V2_SendCommand(0x3C); //BorderWavefrom
|
||||||
EPD_2IN13_V2_SendData(0x03);
|
EPD_2IN13_V2_SendData(0x03);
|
||||||
|
|
@ -210,10 +247,11 @@ void EPD_2IN13_V2_Init(UBYTE Mode)
|
||||||
EPD_2IN13_V2_SendCommand(0x03);
|
EPD_2IN13_V2_SendCommand(0x03);
|
||||||
EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_full_update[70]);
|
EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_full_update[70]);
|
||||||
|
|
||||||
|
data[0] = EPD_2IN13_V2_lut_full_update[71];
|
||||||
|
data[1] = EPD_2IN13_V2_lut_full_update[72];
|
||||||
|
data[2] = EPD_2IN13_V2_lut_full_update[73];
|
||||||
EPD_2IN13_V2_SendCommand(0x04); //
|
EPD_2IN13_V2_SendCommand(0x04); //
|
||||||
EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_full_update[71]);
|
EPD_2IN13_V2_SendData_nByte(&data[0], 3);
|
||||||
EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_full_update[72]);
|
|
||||||
EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_full_update[73]);
|
|
||||||
|
|
||||||
EPD_2IN13_V2_SendCommand(0x3A); //Dummy Line
|
EPD_2IN13_V2_SendCommand(0x3A); //Dummy Line
|
||||||
EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_full_update[74]);
|
EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_full_update[74]);
|
||||||
|
|
@ -221,15 +259,14 @@ void EPD_2IN13_V2_Init(UBYTE Mode)
|
||||||
EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_full_update[75]);
|
EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_full_update[75]);
|
||||||
|
|
||||||
EPD_2IN13_V2_SendCommand(0x32);
|
EPD_2IN13_V2_SendCommand(0x32);
|
||||||
for(count = 0; count < 70; count++) {
|
EPD_2IN13_V2_SendData_nByte((uint8_t*)&EPD_2IN13_V2_lut_full_update[0], 70);
|
||||||
EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_full_update[count]);
|
|
||||||
}
|
|
||||||
|
|
||||||
EPD_2IN13_V2_SendCommand(0x4E); // set RAM x address count to 0;
|
EPD_2IN13_V2_SendCommand(0x4E); // set RAM x address count to 0;
|
||||||
EPD_2IN13_V2_SendData(0x00);
|
EPD_2IN13_V2_SendData(0x00);
|
||||||
|
data[0] = 0xF9;
|
||||||
|
data[1] = 0x00;
|
||||||
EPD_2IN13_V2_SendCommand(0x4F); // set RAM y address count to 0X127;
|
EPD_2IN13_V2_SendCommand(0x4F); // set RAM y address count to 0X127;
|
||||||
EPD_2IN13_V2_SendData(0xF9);
|
EPD_2IN13_V2_SendData_nByte(&data[0], 2);
|
||||||
EPD_2IN13_V2_SendData(0x00);
|
|
||||||
EPD_2IN13_V2_ReadBusy();
|
EPD_2IN13_V2_ReadBusy();
|
||||||
} else if(Mode == EPD_2IN13_V2_PART) {
|
} else if(Mode == EPD_2IN13_V2_PART) {
|
||||||
EPD_2IN13_V2_SendCommand(0x2C); //VCOM Voltage
|
EPD_2IN13_V2_SendCommand(0x2C); //VCOM Voltage
|
||||||
|
|
@ -238,18 +275,17 @@ void EPD_2IN13_V2_Init(UBYTE Mode)
|
||||||
EPD_2IN13_V2_ReadBusy();
|
EPD_2IN13_V2_ReadBusy();
|
||||||
|
|
||||||
EPD_2IN13_V2_SendCommand(0x32);
|
EPD_2IN13_V2_SendCommand(0x32);
|
||||||
for(count = 0; count < 70; count++) {
|
EPD_2IN13_V2_SendData_nByte((uint8_t*)&EPD_2IN13_V2_lut_partial_update[0], 70);
|
||||||
EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_partial_update[count]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
data[0] = 0x00;
|
||||||
|
data[1] = 0x00;
|
||||||
|
data[2] = 0x00;
|
||||||
|
data[3] = 0x00;
|
||||||
|
data[4] = 0x40;
|
||||||
|
data[5] = 0x00;
|
||||||
|
data[6] = 0x00;
|
||||||
EPD_2IN13_V2_SendCommand(0x37);
|
EPD_2IN13_V2_SendCommand(0x37);
|
||||||
EPD_2IN13_V2_SendData(0x00);
|
EPD_2IN13_V2_SendData_nByte(&data[0], 7);
|
||||||
EPD_2IN13_V2_SendData(0x00);
|
|
||||||
EPD_2IN13_V2_SendData(0x00);
|
|
||||||
EPD_2IN13_V2_SendData(0x00);
|
|
||||||
EPD_2IN13_V2_SendData(0x40);
|
|
||||||
EPD_2IN13_V2_SendData(0x00);
|
|
||||||
EPD_2IN13_V2_SendData(0x00);
|
|
||||||
|
|
||||||
EPD_2IN13_V2_SendCommand(0x22);
|
EPD_2IN13_V2_SendCommand(0x22);
|
||||||
EPD_2IN13_V2_SendData(0xC0);
|
EPD_2IN13_V2_SendData(0xC0);
|
||||||
|
|
@ -275,11 +311,7 @@ void EPD_2IN13_V2_Clear(void)
|
||||||
Height = EPD_2IN13_V2_HEIGHT;
|
Height = EPD_2IN13_V2_HEIGHT;
|
||||||
|
|
||||||
EPD_2IN13_V2_SendCommand(0x24);
|
EPD_2IN13_V2_SendCommand(0x24);
|
||||||
for (UWORD j = 0; j < Height; j++) {
|
EPD_2IN13_V2_SendData_nByte((uint8_t*)&EPD_2IN13_V2_clear_image[0], Width * Height);
|
||||||
for (UWORD i = 0; i < Width; i++) {
|
|
||||||
EPD_2IN13_V2_SendData(0XFF);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
EPD_2IN13_V2_TurnOnDisplay();
|
EPD_2IN13_V2_TurnOnDisplay();
|
||||||
}
|
}
|
||||||
|
|
@ -293,13 +325,17 @@ void EPD_2IN13_V2_Display(UBYTE *Image)
|
||||||
UWORD Width, Height;
|
UWORD Width, Height;
|
||||||
Width = (EPD_2IN13_V2_WIDTH % 8 == 0)? (EPD_2IN13_V2_WIDTH / 8 ): (EPD_2IN13_V2_WIDTH / 8 + 1);
|
Width = (EPD_2IN13_V2_WIDTH % 8 == 0)? (EPD_2IN13_V2_WIDTH / 8 ): (EPD_2IN13_V2_WIDTH / 8 + 1);
|
||||||
Height = EPD_2IN13_V2_HEIGHT;
|
Height = EPD_2IN13_V2_HEIGHT;
|
||||||
|
uint32_t len = Height * Width;
|
||||||
|
uint8_t data[len];
|
||||||
|
|
||||||
EPD_2IN13_V2_SendCommand(0x24);
|
for (UWORD j = 0, n = 0; j < Height; j++) {
|
||||||
for (UWORD j = 0; j < Height; j++) {
|
|
||||||
for (UWORD i = 0; i < Width; i++) {
|
for (UWORD i = 0; i < Width; i++) {
|
||||||
EPD_2IN13_V2_SendData(Image[i + j * Width]);
|
data[n++] = Image[i + j * Width];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EPD_2IN13_V2_SendCommand(0x24);
|
||||||
|
EPD_2IN13_V2_SendData_nByte(&data[0], len);
|
||||||
EPD_2IN13_V2_TurnOnDisplay();
|
EPD_2IN13_V2_TurnOnDisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -313,22 +349,25 @@ void EPD_2IN13_V2_DisplayPartBaseImage(UBYTE *Image)
|
||||||
UWORD Width, Height;
|
UWORD Width, Height;
|
||||||
Width = (EPD_2IN13_V2_WIDTH % 8 == 0)? (EPD_2IN13_V2_WIDTH / 8 ): (EPD_2IN13_V2_WIDTH / 8 + 1);
|
Width = (EPD_2IN13_V2_WIDTH % 8 == 0)? (EPD_2IN13_V2_WIDTH / 8 ): (EPD_2IN13_V2_WIDTH / 8 + 1);
|
||||||
Height = EPD_2IN13_V2_HEIGHT;
|
Height = EPD_2IN13_V2_HEIGHT;
|
||||||
|
uint32_t len = Height * Width;
|
||||||
|
uint8_t data24[len];
|
||||||
|
uint8_t data26[len];
|
||||||
|
|
||||||
|
for (UWORD j = 0, n = 0; j < Height; j++) {
|
||||||
|
for (UWORD i = 0; i < Width; i++) {
|
||||||
|
int addr = i + j * Width;
|
||||||
|
data24[n] = Image[addr];
|
||||||
|
data26[n] = Image[addr];
|
||||||
|
n = n + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
UDOUBLE Addr = 0;
|
|
||||||
EPD_2IN13_V2_SendCommand(0x24);
|
EPD_2IN13_V2_SendCommand(0x24);
|
||||||
for (UWORD j = 0; j < Height; j++) {
|
EPD_2IN13_V2_SendData_nByte(&data24[0], len);
|
||||||
for (UWORD i = 0; i < Width; i++) {
|
|
||||||
Addr = i + j * Width;
|
|
||||||
EPD_2IN13_V2_SendData(Image[Addr]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
EPD_2IN13_V2_SendCommand(0x26);
|
EPD_2IN13_V2_SendCommand(0x26);
|
||||||
for (UWORD j = 0; j < Height; j++) {
|
EPD_2IN13_V2_SendData_nByte(&data26[0], len);
|
||||||
for (UWORD i = 0; i < Width; i++) {
|
|
||||||
Addr = i + j * Width;
|
|
||||||
EPD_2IN13_V2_SendData(Image[Addr]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
EPD_2IN13_V2_TurnOnDisplay();
|
EPD_2IN13_V2_TurnOnDisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -338,13 +377,18 @@ void EPD_2IN13_V2_DisplayPart(UBYTE *Image)
|
||||||
UWORD Width, Height;
|
UWORD Width, Height;
|
||||||
Width = (EPD_2IN13_V2_WIDTH % 8 == 0)? (EPD_2IN13_V2_WIDTH / 8 ): (EPD_2IN13_V2_WIDTH / 8 + 1);
|
Width = (EPD_2IN13_V2_WIDTH % 8 == 0)? (EPD_2IN13_V2_WIDTH / 8 ): (EPD_2IN13_V2_WIDTH / 8 + 1);
|
||||||
Height = EPD_2IN13_V2_HEIGHT;
|
Height = EPD_2IN13_V2_HEIGHT;
|
||||||
EPD_2IN13_V2_SendCommand(0x24);
|
uint32_t len = Height * Width;
|
||||||
for (UWORD j = 0; j < Height; j++) {
|
uint8_t data[len];
|
||||||
|
|
||||||
|
for (UWORD j = 0, n = 0; j < Height; j++) {
|
||||||
for (UWORD i = 0; i < Width; i++) {
|
for (UWORD i = 0; i < Width; i++) {
|
||||||
EPD_2IN13_V2_SendData(Image[i + j * Width]);
|
data[n++] = Image[i + j * Width];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EPD_2IN13_V2_SendCommand(0x24);
|
||||||
|
EPD_2IN13_V2_SendData_nByte(&data[0], len);
|
||||||
|
|
||||||
EPD_2IN13_V2_TurnOnDisplayPart();
|
EPD_2IN13_V2_TurnOnDisplayPart();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue