diff options
Diffstat (limited to 'laser-tag software/epaper.c')
-rw-r--r-- | laser-tag software/epaper.c | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/laser-tag software/epaper.c b/laser-tag software/epaper.c index af6aa90..a1c6391 100644 --- a/laser-tag software/epaper.c +++ b/laser-tag software/epaper.c @@ -2,8 +2,6 @@ #include "fsl_gpio_driver.h" #include "fsl_spi_dma_master_driver.h" -#define HAS_RESET 0 - typedef enum { /* Image pixel -> Display pixel */ EPD_compensate, /* B -> W, W -> B (Current Image) */ EPD_white, /* B -> N, W -> W (Current Image) */ @@ -11,14 +9,14 @@ typedef enum { /* Image pixel -> Display pixel */ EPD_normal /* B -> B, W -> W (New Image) */ } EPD_stage; -static const gpio_output_pin_user_config_t pinReset = { +static const gpio_output_pin_user_config_t pinDischarge = { .pinName = GPIO_MAKE_PIN(GPIOA_IDX, 19), .config.outputLogic = 0, }; static const gpio_output_pin_user_config_t pinCS = { .pinName = GPIO_MAKE_PIN(GPIOD_IDX, 4), - .config.outputLogic = 0, + .config.outputLogic = 1, }; static const spi_dma_master_user_config_t spiConfig = { @@ -48,7 +46,7 @@ void EPD_Init() PORT_HAL_SetMuxMode(g_portBase[GPIOD_IDX], 5, kPortMuxAlt2); PORT_HAL_SetMuxMode(g_portBase[GPIOD_IDX], 6, kPortMuxAlt2); PORT_HAL_SetMuxMode(g_portBase[GPIOD_IDX], 7, kPortMuxAlt2); - GPIO_DRV_OutputPinInit(&pinReset); + GPIO_DRV_OutputPinInit(&pinDischarge); GPIO_DRV_OutputPinInit(&pinCS); } @@ -223,18 +221,6 @@ int EPD_Draw(const uint8_t *old_image, const uint8_t *new_image) uint32_t calculatedBaudRate; SPI_DRV_DmaMasterConfigureBus(1, &spiConfig, &calculatedBaudRate); - /* Reset */ -#if HAS_RESET - GPIO_DRV_WritePinOutput(pinReset.pinName, 0); -#endif - GPIO_DRV_WritePinOutput(pinCS.pinName, 0); - EPD_Delay(5); -#if HAS_RESET - GPIO_DRV_WritePinOutput(pinReset.pinName, 1); -#endif - GPIO_DRV_WritePinOutput(pinCS.pinName, 1); - EPD_Delay(5); - /* read the COG ID */ uint8_t id = EPD_ReadCogID(); if ((id & 0x0f) != 0x02) { @@ -341,6 +327,11 @@ int EPD_Draw(const uint8_t *old_image, const uint8_t *new_image) EPD_WriteCommandByte(0x07, 0x01); EPD_Delay(50); + /* discharge external */ + GPIO_DRV_WritePinOutput(pinDischarge.pinName, 1); + EPD_Delay(150); + GPIO_DRV_WritePinOutput(pinDischarge.pinName, 0); + out: SPI_DRV_DmaMasterDeinit(1); return rc; |