/** * \brief Initialize the EPD hardware setting */ void EPD_display_hardware_init(void) { EPD_initialize_gpio(); EPD_Vcc_turn_off(); epd_spi_init(); initialize_temperature(); EPD_cs_low(); EPD_pwm_low(); EPD_rst_low(); EPD_discharge_low(); EPD_border_low(); //initialize_EPD_timer(); }
/** * \brief Power Off COG Driver * \note For detailed flow and description, please refer to the COG G2 document Section 6. * * \param EPD_type_index The defined EPD size */ uint8_t EPD_power_off(uint8_t EPD_type_index) { uint8_t y; if(EPD_type_index==EPD_144 || EPD_type_index==EPD_200) { border_dummy_line(EPD_type_index); dummy_line(EPD_type_index); } delay_ms (25); if(EPD_type_index==EPD_270) { EPD_border_low(); delay_ms (200); EPD_border_high(); } //Check DC/DC if((SPI_R(0x0F,0x00) & 0x40) == 0x00) return ERROR_DC; //Turn on Latch Reset epd_spi_send_byte (0x03, 0x01); //Turn off OE epd_spi_send_byte (0x02, 0x05); //Power off charge pump Vcom epd_spi_send_byte (0x05, 0x0E); //Power off charge pump neg voltage epd_spi_send_byte (0x05, 0x02); //Turn off all charge pump epd_spi_send_byte (0x05, 0x00); //Turn off OSC epd_spi_send_byte (0x07, 0x0D); epd_spi_send_byte (0x04, 0x83); delay_ms(120); epd_spi_send_byte (0x04, 0x00); epd_spi_detach (); EPD_cs_low(); EPD_rst_low(); EPD_Vcc_turn_off (); EPD_border_low(); delay_ms (10); for(y=0;y<10;y++) { EPD_discharge_high (); delay_ms (10); EPD_discharge_low (); delay_ms (10); } return RES_OK; }
/** * \brief Initialize the temperature sensor */ void initialize_temperature(void) { /** not used at present */ #if 0 struct adc_config adc_cfg = { /* System clock division factor is 16 */ .prescal = ADC_PRESCAL_DIV16, /* The APB clock is used */ .clksel = ADC_CLKSEL_APBCLK, /* Max speed is 150K */ .speed = ADC_SPEED_150K, /* ADC Reference voltage is VCC/2 */ .refsel =ADC_REFSEL_4, /* Enables the Startup time */ .start_up = CONFIG_ADC_STARTUP }; struct adc_seq_config adc_seq_cfg = { /* Select Vref for shift cycle */ .zoomrange = ADC_ZOOMRANGE_0, /* Pad Ground */ .muxneg = ADC_MUXNEG_1, /* Temperature sensor */ .muxpos = EPD_Temperature_Sensor_ADC, /* Enables the internal voltage sources */ .internal =ADC_INTERNAL_2, /* Disables the ADC gain error reduction */ .gcomp = ADC_GCOMP_DIS, /* Disables the HWLA mode */ .hwla = ADC_HWLA_DIS, .gain=ADC_GAIN_1X, /* 12-bits resolution */ .res = ADC_RES_12_BIT, /* Enables the single-ended mode */ .bipolar = ADC_BIPOLAR_SINGLEENDED }; struct adc_ch_config adc_ch_cfg = { .seq_cfg = &adc_seq_cfg, /* Internal Timer Max Counter */ .internal_timer_max_count = 60, /* Window monitor mode is off */ .window_mode = 0, .low_threshold = 0, .high_threshold = 0, }; adc_init(&g_adc_inst, ADCIFE, &adc_cfg); adc_enable(&g_adc_inst); adc_ch_set_config(&g_adc_inst, &adc_ch_cfg); adc_set_callback(&g_adc_inst, ADC_SEQ_SEOC, adcife_read_conv_result, ADCIFE_IRQn, 1); adc_configure_trigger(&g_adc_inst,ADC_TRIG_SW); adc_configure_gain(&g_adc_inst, ADC_GAIN_1X); #endif } /** * \brief Initialize the EPD hardware setting */ void EPD_display_hardware_init (void) { EPD_initialize_gpio(); EPD_Vcc_turn_off(); epd_spi_init(); initialize_temperature(); EPD_cs_low(); EPD_pwm_low(); EPD_rst_low(); EPD_discharge_low(); EPD_border_low(); //initialize_EPD_timer(); }