Esempio n. 1
0
/*====================================================================================================*/
void ILI9341_Config( void )
{
    GPIO_InitTypeDef GPIO_InitStruct;
    SPI_InitTypeDef SPI_InitStruct;

    /* SPI Clk Init *************************************************************/
    RCC_APB1PeriphClockCmd(LCD_SPIx_CLK, ENABLE);
    RCC_APB2PeriphClockCmd(LCD_RST_GPIO_CLK | LCD_CST_GPIO_CLK | LCD_DC_GPIO_CLK  |
                           LCD_SCK_GPIO_CLK | LCD_SDO_GPIO_CLK | LCD_SDI_GPIO_CLK |
                           RCC_APB2Periph_AFIO, ENABLE);

    ILI9341_LigConfig();

    /* DC PB10  */
    GPIO_InitStruct.GPIO_Pin = LCD_DC_PIN;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(LCD_DC_GPIO_PORT, &GPIO_InitStruct);
    /* RST PB11 */
    GPIO_InitStruct.GPIO_Pin = LCD_RST_PIN;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(LCD_RST_GPIO_PORT, &GPIO_InitStruct);
    /* CST PB12  */
    GPIO_InitStruct.GPIO_Pin = LCD_CST_PIN;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(LCD_CST_GPIO_PORT, &GPIO_InitStruct);
    /* SCK PB13 */
    GPIO_InitStruct.GPIO_Pin = LCD_SCK_PIN;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(LCD_SCK_GPIO_PORT, &GPIO_InitStruct);
    /* SDO PB14 */
    GPIO_InitStruct.GPIO_Pin = LCD_SDO_PIN;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(LCD_SDO_GPIO_PORT, &GPIO_InitStruct);
    /* SDI PB15 */
    GPIO_InitStruct.GPIO_Pin = LCD_SDI_PIN;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(LCD_SDI_GPIO_PORT, &GPIO_InitStruct);

    LCD_CST_H;  // 低電位有效

    /* SPI Init ****************************************************************/
    SPI_InitStruct.SPI_Direction = SPI_Direction_2Lines_FullDuplex;   // Full Duplex
    SPI_InitStruct.SPI_Mode = SPI_Mode_Master;                        // Master Mode
    SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b;                    // Data Size 8 bit
    SPI_InitStruct.SPI_CPOL = SPI_CPOL_High;                          // Transitioned On The Falling Edge
    SPI_InitStruct.SPI_CPHA = SPI_CPHA_2Edge;                         // Latched On the Rising Edge
    SPI_InitStruct.SPI_NSS = SPI_NSS_Soft;                            // Software NSS Signal
    SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;   // fsck = APB1 36MHz / 2 = 18MHz
    SPI_InitStruct.SPI_FirstBit = SPI_FirstBit_MSB;                   // MSB First
    SPI_InitStruct.SPI_CRCPolynomial = 7;
    SPI_Init(LCD_SPIx, &SPI_InitStruct);

    SPI_Cmd(LCD_SPIx, ENABLE);
}
Esempio n. 2
0
/*====================================================================================================*/
void ILI9341_Config( void )
{
  GPIO_InitTypeDef GPIO_InitStruct;
  SPI_InitTypeDef SPI_InitStruct;

  /* SPI Clk ******************************************************************/
  LCD_SPIx_CLK_ENABLE();

  /* SPI AF *******************************************************************/
  GPIO_PinAFConfig(LCD_SCK_GPIO_PORT, LCD_SCK_SOURCE, LCD_SCK_AF);
  GPIO_PinAFConfig(LCD_SDO_GPIO_PORT, LCD_SDO_SOURCE, LCD_SDO_AF);    
  GPIO_PinAFConfig(LCD_SDI_GPIO_PORT, LCD_SDI_SOURCE, LCD_SDI_AF);

  /* SPI Pin ******************************************************************/
  GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_OUT;
  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_UP;

  GPIO_InitStruct.GPIO_Pin   = LCD_DC_PIN;
  GPIO_Init(LCD_DC_GPIO_PORT, &GPIO_InitStruct);

  GPIO_InitStruct.GPIO_Pin   = LCD_RST_PIN;
  GPIO_Init(LCD_RST_GPIO_PORT, &GPIO_InitStruct);

  GPIO_InitStruct.GPIO_Pin   = LCD_CST_PIN;
  GPIO_Init(LCD_CST_GPIO_PORT, &GPIO_InitStruct);

  GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_AF;
  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_UP;

  GPIO_InitStruct.GPIO_Pin   = LCD_SCK_PIN;
  GPIO_Init(LCD_SCK_GPIO_PORT, &GPIO_InitStruct);

  GPIO_InitStruct.GPIO_Pin   = LCD_SDO_PIN;
  GPIO_Init(LCD_SDO_GPIO_PORT, &GPIO_InitStruct);

  GPIO_InitStruct.GPIO_Pin   = LCD_SDI_PIN;
  GPIO_Init(LCD_SDI_GPIO_PORT, &GPIO_InitStruct);

  LCD_CST_H();  // LOW ENABLE

  /* SPI Init ****************************************************************/
  SPI_InitStruct.SPI_Mode              = SPI_Mode_Master;
  SPI_InitStruct.SPI_Direction         = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStruct.SPI_DataSize          = SPI_DataSize_8b;
  SPI_InitStruct.SPI_CPOL              = SPI_CPOL_High;
  SPI_InitStruct.SPI_CPHA              = SPI_CPHA_2Edge;
  SPI_InitStruct.SPI_NSS               = SPI_NSS_Soft;
  SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
  SPI_InitStruct.SPI_FirstBit          = SPI_FirstBit_MSB;
  SPI_InitStruct.SPI_CRCPolynomial     = 7;
  SPI_Init(LCD_SPIx, &SPI_InitStruct);

  SPI_Cmd(LCD_SPIx, ENABLE);

  ILI9341_LigConfig();
}
/*====================================================================================================*/
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);
}