/** * @brief Initialize the LCD * @retval None */ void LCD_IO_Init(void) { GPIO_InitTypeDef gpioinitstruct = {0}; /* LCD_CS_GPIO and LCD_DC_GPIO Periph clock enable */ LCD_CS_GPIO_CLK_ENABLE(); LCD_DC_GPIO_CLK_ENABLE(); /* Configure LCD_CS_PIN pin: LCD Card CS pin */ gpioinitstruct.Pin = LCD_CS_PIN; gpioinitstruct.Mode = GPIO_MODE_OUTPUT_PP; gpioinitstruct.Pull = GPIO_NOPULL; gpioinitstruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; HAL_GPIO_Init(SD_CS_GPIO_PORT, &gpioinitstruct); /* Configure LCD_DC_PIN pin: LCD Card DC pin */ gpioinitstruct.Pin = LCD_DC_PIN; HAL_GPIO_Init(LCD_DC_GPIO_PORT, &gpioinitstruct); /* LCD chip select high */ LCD_CS_HIGH(); /* LCD SPI Config */ SPIx_Init(); }
/*====================================================================================================*/ void ILI9341_Config( void ) { GPIO_InitTypeDef GPIO_InitStruct; /* SPI Clk ******************************************************************/ LCD_DC_GPIO_CLK_ENABLE(); LCD_RST_GPIO_CLK_ENABLE(); LCD_CST_GPIO_CLK_ENABLE(); LCD_SCK_GPIO_CLK_ENABLE(); LCD_SDO_GPIO_CLK_ENABLE(); LCD_SDI_GPIO_CLK_ENABLE(); LCD_SPIx_CLK_ENABLE(); ILI9341_LigConfig(); /* SPI Pin ******************************************************************/ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Pin = LCD_DC_PIN; HAL_GPIO_Init(LCD_DC_GPIO_PORT, &GPIO_InitStruct); GPIO_InitStruct.Pin = LCD_RST_PIN; HAL_GPIO_Init(LCD_RST_GPIO_PORT, &GPIO_InitStruct); GPIO_InitStruct.Pin = LCD_CST_PIN; HAL_GPIO_Init(LCD_CST_GPIO_PORT, &GPIO_InitStruct); GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Pin = LCD_SCK_PIN; GPIO_InitStruct.Alternate = LCD_SCK_AF; HAL_GPIO_Init(LCD_SCK_GPIO_PORT, &GPIO_InitStruct); GPIO_InitStruct.Pin = LCD_SDO_PIN; GPIO_InitStruct.Alternate = LCD_SDO_AF; HAL_GPIO_Init(LCD_SDO_GPIO_PORT, &GPIO_InitStruct); GPIO_InitStruct.Pin = LCD_SDI_PIN; GPIO_InitStruct.Alternate = LCD_SDI_AF; HAL_GPIO_Init(LCD_SDI_GPIO_PORT, &GPIO_InitStruct); LCD_CST_H; // 低電位有效 /* SPI Init ****************************************************************/ SPI_HandleStruct.Instance = LCD_SPIx; SPI_HandleStruct.Init.Mode = SPI_MODE_MASTER; SPI_HandleStruct.Init.Direction = SPI_DIRECTION_2LINES; SPI_HandleStruct.Init.DataSize = SPI_DATASIZE_8BIT; SPI_HandleStruct.Init.CLKPolarity = SPI_POLARITY_HIGH; SPI_HandleStruct.Init.CLKPhase = SPI_PHASE_2EDGE; SPI_HandleStruct.Init.NSS = SPI_NSS_SOFT; SPI_HandleStruct.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; SPI_HandleStruct.Init.FirstBit = SPI_FIRSTBIT_MSB; SPI_HandleStruct.Init.TIMode = SPI_TIMODE_DISABLE; SPI_HandleStruct.Init.CRCCalculation = SPI_CRCCALCULATION_ENABLE; SPI_HandleStruct.Init.CRCPolynomial = 7; HAL_SPI_Init(&SPI_HandleStruct); __HAL_SPI_ENABLE(&SPI_HandleStruct); }
/** * @brief Initializes the LCD * @retval None */ void LCD_IO_Init(void) { GPIO_InitTypeDef gpioinitstruct = {0}; /* LCD_CS_GPIO and LCD_DC_GPIO Periph clock enable */ LCD_CS_GPIO_CLK_ENABLE(); LCD_DC_GPIO_CLK_ENABLE(); LCD_RW_GPIO_CLK_ENABLE() ; /* Configure LCD_CS_PIN pin: LCD Card CS pin */ gpioinitstruct.Pin = LCD_CS_PIN; gpioinitstruct.Mode = GPIO_MODE_OUTPUT_PP; gpioinitstruct.Speed = GPIO_SPEED_HIGH; HAL_GPIO_Init(LCD_CS_GPIO_PORT, &gpioinitstruct); /* Configure LCD_DC_PIN pin: LCD Card DC pin */ gpioinitstruct.Pin = LCD_DC_PIN; HAL_GPIO_Init(LCD_DC_GPIO_PORT, &gpioinitstruct); /* Configure LCD_RW_PIN pin: LCD Card DC pin */ gpioinitstruct.Pin = LCD_RW_PIN; HAL_GPIO_Init(LCD_RW_GPIO_PORT, &gpioinitstruct); /* Configure LCD_RW_PIN pin: LCD Card DC pin */ gpioinitstruct.Pin = LCD_RD_PIN; HAL_GPIO_Init(LCD_RW_GPIO_PORT, &gpioinitstruct); /* Configure LCD_RST PIN pin:*/ gpioinitstruct.Pin = LCD_RST_PIN; HAL_GPIO_Init(LCD_RST_GPIO_PORT, &gpioinitstruct); /* LCD chip select high */ /*LCD_GPIO_PORT config */ gpioinitstruct.Pin = LCD_DATA_PIN_7; HAL_GPIO_Init(LCD_GPIO_PORT, &gpioinitstruct); gpioinitstruct.Pin = LCD_DATA_PIN_6; HAL_GPIO_Init(LCD_GPIO_PORT, &gpioinitstruct); gpioinitstruct.Pin = LCD_DATA_PIN_5; HAL_GPIO_Init(LCD_GPIO_PORT, &gpioinitstruct); gpioinitstruct.Pin = LCD_DATA_PIN_4; //10 HAL_GPIO_Init(LCD_GPIO_PORT, &gpioinitstruct); gpioinitstruct.Pin = LCD_DATA_PIN_3; //9 HAL_GPIO_Init(LCD_GPIO_PORT, &gpioinitstruct); gpioinitstruct.Pin = LCD_DATA_PIN_2; HAL_GPIO_Init(LCD_GPIO_PORT, &gpioinitstruct); gpioinitstruct.Pin = LCD_DATA_PIN_1; HAL_GPIO_Init(LCD_GPIO_PORT, &gpioinitstruct); gpioinitstruct.Pin = LCD_DATA_PIN_0; HAL_GPIO_Init(LCD_GPIO_PORT, &gpioinitstruct); //// LCD_CS_HIGH(); /* LCD SPI Config */ // SPIx_Init(); }