66 lines
1.6 KiB
C
66 lines
1.6 KiB
C
#include "epd-spi/panel/lcd_zjy350c4001.h"
|
|
#include "fsl_flexcomm.h"
|
|
#include "fsl_gpio.h"
|
|
#include "fsl_spi.h"
|
|
#include "pin_mux.h"
|
|
|
|
#define DMA_TRANSFER 0
|
|
|
|
#define LCD_SPI SPI3
|
|
#define SET_GPIO(x, v) \
|
|
GPIO_PinWrite(BOARD_INITPMODPINS_LCD_##x##_GPIO, BOARD_INITPMODPINS_LCD_##x##_PORT, \
|
|
BOARD_INITPMODPINS_LCD_##x##_PIN, v)
|
|
|
|
void lcd_impl_init(void) {
|
|
SET_GPIO(DC, 1U);
|
|
SET_GPIO(RST_0IN9, 1U);
|
|
}
|
|
|
|
epd_ret_t lcd_impl_write_cmd(void *handle, uint8_t *cmd, uint32_t len) {
|
|
SET_GPIO(DC, 0U);
|
|
|
|
spi_transfer_t xfer = {
|
|
.txData = cmd,
|
|
.rxData = NULL,
|
|
.dataSize = 1U,
|
|
.configFlags = kSPI_FrameAssert,
|
|
};
|
|
|
|
SPI_MasterTransferBlocking(LCD_SPI, &xfer);
|
|
|
|
if (len > 1) {
|
|
SET_GPIO(DC, 1U);
|
|
|
|
xfer.txData = &cmd[1];
|
|
xfer.dataSize = len - 1;
|
|
|
|
SPI_MasterTransferBlocking(LCD_SPI, &xfer);
|
|
}
|
|
|
|
return EPD_OK;
|
|
}
|
|
|
|
epd_ret_t lcd_impl_write_data(void *handle, uint8_t *data, uint32_t len) {
|
|
SET_GPIO(DC, 1U);
|
|
spi_transfer_t xfer = {
|
|
.txData = data,
|
|
.rxData = NULL,
|
|
.dataSize = len,
|
|
.configFlags = kSPI_FrameAssert,
|
|
};
|
|
|
|
SPI_MasterTransferBlocking(LCD_SPI, &xfer);
|
|
|
|
return EPD_OK;
|
|
}
|
|
|
|
epd_ret_t lcd_impl_reset(void *handle) {
|
|
SET_GPIO(RST_0IN9, 0U);
|
|
SDK_DelayAtLeastUs(50 * 1000, CLOCK_GetCoreSysClkFreq());
|
|
|
|
SET_GPIO(RST_0IN9, 1U);
|
|
SDK_DelayAtLeastUs(50 * 1000, CLOCK_GetCoreSysClkFreq());
|
|
|
|
return EPD_OK;
|
|
}
|