/** * \brief Disable SPI and change to GPIO */ void epd_spi_detach (void) { spi_disable(EPD_SPI_ID); ioport_enable_pin(EPD_SPI_CLK_PIN); ioport_enable_pin(EPD_SPI_MOSI_PIN); ioport_enable_pin(EPD_SPI_MISO_PIN); config_gpio_dir_o(EPD_SPI_CLK_PIN); config_gpio_dir_o(EPD_SPI_MOSI_PIN); config_gpio_dir_o(EPD_SPI_MISO_PIN); set_gpio_low(EPD_SPI_CLK_PIN); set_gpio_low(EPD_SPI_MOSI_PIN); set_gpio_low(EPD_SPI_MISO_PIN); }
/** * \brief Configure GPIO */ void EPD_initialize_gpio(void) { config_gpio_dir_i( EPD_BUSY_PIN); config_gpio_dir_o( EPD_SPI_CS_PIN); config_gpio_dir_o( EPD_RST_PIN); config_gpio_dir_o( EPD_PANELON_PIN); config_gpio_dir_o( EPD_DISCHARGE_PIN); config_gpio_dir_o( EPD_BORDER_PIN); EPD_flash_cs_high(); // dumy EPD_border_low(); /** not used at present config_gpio_dir_o( Flash_CS_PIN); config_gpio_dir_i( Temper_PIN); */ }
/** * \brief Configure SPI */ void epd_spi_init(void) { if (spi_flag) return; spi_flag = TRUE; //config i/o config_gpio_dir_o(SPICLK_PORT, SPICLK_PIN); config_gpio_dir_o(SPIMOSI_PORT, SPIMOSI_PIN); config_gpio_dir_i(SPIMISO_PORT, SPIMISO_PIN); BITSET(SPISEL, SPICLK_PIN + SPIMOSI_PIN + SPIMISO_PIN); BITSET(SPISEL2, SPICLK_PIN + SPIMOSI_PIN + SPIMISO_PIN); //comfig SPI SPICTL0 = UCCKPH | UCMST | UCSYNC | UCMSB; SPICTL1 = UCSSEL_2 + UCSWRST; SPIBR0 = 2; //16MHz/2=8MHz SPIBR1 = 0; BITSET(REN (SPIMISO_PORT), SPIMISO_PIN); BITCLR(SPICTL1, UCSWRST); }
/** * \brief Set MISO pin of SPI to low */ void SPIMISO_low(void) { config_gpio_dir_o(EPD_SPI_MISO_PIN); set_gpio_low(EPD_SPI_MISO_PIN); }