mirror of
https://github.com/jam422470459/EPD-nRF52-hema213.git
synced 2025-12-06 16:42:49 +08:00
optimize SPI data transfer
This commit is contained in:
@@ -72,6 +72,11 @@ void DEV_SPI_WriteByte(UBYTE value)
|
||||
nrf_drv_spi_transfer(&spi, &value, 1, NULL, 0);
|
||||
}
|
||||
|
||||
void DEV_SPI_WriteBytes(UBYTE *value, UBYTE len)
|
||||
{
|
||||
nrf_drv_spi_transfer(&spi, value, len, NULL, 0);
|
||||
}
|
||||
|
||||
UBYTE DEV_SPI_ReadByte(void)
|
||||
{
|
||||
UBYTE value;
|
||||
|
||||
@@ -51,6 +51,7 @@ UBYTE DEV_Module_Init(void);
|
||||
void DEV_Module_Exit(void);
|
||||
|
||||
void DEV_SPI_WriteByte(UBYTE value);
|
||||
void DEV_SPI_WriteBytes(UBYTE *value, UBYTE len);
|
||||
UBYTE DEV_SPI_ReadByte(void);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -73,6 +73,14 @@ void EPD_4IN2_SendData(UBYTE Data)
|
||||
DEV_Digital_Write(EPD_CS_PIN, 1);
|
||||
}
|
||||
|
||||
void EPD_4IN2_SendData2(UBYTE *Data, UBYTE Len)
|
||||
{
|
||||
DEV_Digital_Write(EPD_DC_PIN, 1);
|
||||
DEV_Digital_Write(EPD_CS_PIN, 0);
|
||||
DEV_SPI_WriteBytes(Data, Len);
|
||||
DEV_Digital_Write(EPD_CS_PIN, 1);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
function : Wait until the busy_pin goes LOW
|
||||
parameter:
|
||||
|
||||
@@ -44,6 +44,7 @@ void EPD_4IN2_Sleep(void);
|
||||
|
||||
void EPD_4IN2_SendCommand(UBYTE Reg);
|
||||
void EPD_4IN2_SendData(UBYTE Data);
|
||||
void EPD_4IN2_SendData2(UBYTE *Data, UBYTE Len);
|
||||
void EPD_4IN2_TurnOnDisplay(void);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -70,6 +70,13 @@ void EPD_4IN2_V2_SendData(UBYTE Data)
|
||||
DEV_Digital_Write(EPD_CS_PIN, 1);
|
||||
}
|
||||
|
||||
void EPD_4IN2_V2_SendData2(UBYTE *Data, UBYTE Len)
|
||||
{
|
||||
DEV_Digital_Write(EPD_DC_PIN, 1);
|
||||
DEV_Digital_Write(EPD_CS_PIN, 0);
|
||||
DEV_SPI_WriteBytes(Data, Len);
|
||||
DEV_Digital_Write(EPD_CS_PIN, 1);
|
||||
}
|
||||
/******************************************************************************
|
||||
function : Wait until the busy_pin goes LOW
|
||||
parameter:
|
||||
|
||||
@@ -47,6 +47,7 @@ void EPD_4IN2_V2_Sleep(void);
|
||||
|
||||
void EPD_4IN2_V2_SendCommand(UBYTE Reg);
|
||||
void EPD_4IN2_V2_SendData(UBYTE Data);
|
||||
void EPD_4IN2_V2_SendData2(UBYTE *Data, UBYTE Len);
|
||||
void EPD_4IN2_V2_TurnOnDisplay(void);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -69,6 +69,14 @@ void EPD_4IN2B_V2_SendData(UBYTE Data)
|
||||
DEV_Digital_Write(EPD_CS_PIN, 1);
|
||||
}
|
||||
|
||||
void EPD_4IN2B_V2_SendData2(UBYTE *Data, UBYTE Len)
|
||||
{
|
||||
DEV_Digital_Write(EPD_DC_PIN, 1);
|
||||
DEV_Digital_Write(EPD_CS_PIN, 0);
|
||||
DEV_SPI_WriteBytes(Data, Len);
|
||||
DEV_Digital_Write(EPD_CS_PIN, 1);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
function : Wait until the busy_pin goes LOW
|
||||
parameter:
|
||||
|
||||
@@ -43,6 +43,7 @@ void EPD_4IN2B_V2_Sleep(void);
|
||||
|
||||
void EPD_4IN2B_V2_SendCommand(UBYTE Reg);
|
||||
void EPD_4IN2B_V2_SendData(UBYTE Data);
|
||||
void EPD_4IN2B_V2_SendData2(UBYTE *Data, UBYTE Len);
|
||||
void EPD_4IN2B_V2_TurnOnDisplay(void);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -41,13 +41,13 @@
|
||||
/** EPD drivers */
|
||||
static epd_driver_t epd_drivers[] = {
|
||||
{EPD_DRIVER_4IN2, EPD_4IN2_Init, EPD_4IN2_Clear,
|
||||
EPD_4IN2_SendCommand, EPD_4IN2_SendData,
|
||||
EPD_4IN2_SendCommand, EPD_4IN2_SendData2,
|
||||
EPD_4IN2_TurnOnDisplay, EPD_4IN2_Sleep},
|
||||
{EPD_DRIVER_4IN2_V2, EPD_4IN2_V2_Init, EPD_4IN2_V2_Clear,
|
||||
EPD_4IN2_V2_SendCommand, EPD_4IN2_V2_SendData,
|
||||
EPD_4IN2_V2_SendCommand, EPD_4IN2_V2_SendData2,
|
||||
EPD_4IN2_V2_TurnOnDisplay, EPD_4IN2_V2_Sleep},
|
||||
{EPD_DRIVER_4IN2B_V2, EPD_4IN2B_V2_Init, EPD_4IN2B_V2_Clear,
|
||||
EPD_4IN2B_V2_SendCommand, EPD_4IN2B_V2_SendData,
|
||||
EPD_4IN2B_V2_SendCommand, EPD_4IN2B_V2_SendData2,
|
||||
EPD_4IN2B_V2_TurnOnDisplay, EPD_4IN2B_V2_Sleep},
|
||||
};
|
||||
|
||||
@@ -178,10 +178,7 @@ static void epd_service_process(ble_epd_t * p_epd, uint8_t * p_data, uint16_t le
|
||||
break;
|
||||
|
||||
case EPD_CMD_SEND_DATA:
|
||||
for (UWORD i = 0; i < length - 1; i++)
|
||||
{
|
||||
p_epd->driver->send_data(p_data[i + 1]);
|
||||
}
|
||||
p_epd->driver->send_data(&p_data[1], length - 1);
|
||||
break;
|
||||
|
||||
case EPD_CMD_DISPLAY:
|
||||
|
||||
@@ -76,7 +76,7 @@ typedef struct
|
||||
void (*init)(void); /**< Initialize the e-Paper register */
|
||||
void (*clear)(void); /**< Clear screen */
|
||||
void (*send_command)(UBYTE Reg); /**< send command */
|
||||
void (*send_data)(UBYTE Data); /**< send data */
|
||||
void (*send_data)(UBYTE *Data, UBYTE Len); /**< send data */
|
||||
void (*display)(void); /**< Sends the image buffer in RAM to e-Paper and displays */
|
||||
void (*sleep)(void); /**< Enter sleep mode */
|
||||
} epd_driver_t;
|
||||
|
||||
Reference in New Issue
Block a user