/** * \brief SPI command * * \param register_index The Register Index as SPI command to COG * \param register_data The Register Data for sending command data to COG */ void epd_spi_send_byte (uint8_t register_index, uint8_t register_data) { EPD_cs_low (); epd_spi_write (0x70); // header of Register Index epd_spi_write (register_index); EPD_cs_high (); Wait_10us (); EPD_cs_low (); epd_spi_write (0x72); // header of Register Data epd_spi_write (register_data); EPD_cs_high (); }
/** * \brief SPI command if register data is larger than two bytes * * \param register_index The Register Index as SPI command to COG * \param register_data The Register Data for sending command data to COG * \param length The number of bytes of Register Data which depends on which * Register Index is selected. */ void epd_spi_send (unsigned char register_index, unsigned char *register_data, unsigned length) { EPD_cs_low (); epd_spi_write (0x70); // header of Register Index epd_spi_write (register_index); EPD_cs_high (); Wait_10us (); EPD_cs_low (); epd_spi_write (0x72); // header of Register Data of write command while(length--) { epd_spi_write (*register_data++); } EPD_cs_high (); }
/** * \brief SPI command * * \param Register The Register Index as SPI Data to COG * \param Data The Register Data for sending command data to COG * \return the SPI read value */ uint8_t SPI_R(uint8_t Register, uint8_t Data) { uint8_t result; EPD_cs_low (); epd_spi_write (0x70); // header of Register Index epd_spi_write (Register); EPD_cs_high (); Wait_10us (); EPD_cs_low (); epd_spi_write (0x73); // header of Register Data of read command result=epd_spi_read (Data); EPD_cs_high (); return result; }
/** * \brief Power on COG Driver * \note For detailed flow and description, please refer to the COG G2 document Section 3. */ void EPD_power_on (void) { /* Initial state */ EPD_Vcc_turn_on(); //Vcc and Vdd >= 2.7V EPD_cs_high(); EPD_border_high(); EPD_rst_high(); delay_ms(5); EPD_rst_low(); delay_ms(5); EPD_rst_high(); delay_ms(5); }
/** * \brief Initialize SPI */ void epd_spi_attach (void) { EPD_flash_cs_high(); EPD_cs_high(); epd_spi_init(); }
/** * \brief Set EPD_CS to high and Flash_CS to low */ void Flash_cs_low(void) { EPD_cs_high(); EPD_flash_cs_low(); }