/**
  * @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();
}
/**
  * @brief  Initializes the SD Card and put it into StandBy State (Ready for 
  *         data transfer).
  * @param  None
  * @retval None
  */
void SD_IO_Init(void)
{
  GPIO_InitTypeDef  GPIO_InitStruct;
  uint8_t counter;

  /* SD_CS_GPIO Periph clock enable */
  SD_CS_GPIO_CLK_ENABLE();

  /* Configure SD_CS_PIN pin: SD Card CS pin */
  GPIO_InitStruct.Pin = SD_CS_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(SD_CS_GPIO_PORT, &GPIO_InitStruct);


  /*  LCD chip select line perturbs SD also when the LCD is not used */
  /*  this is a workaround to avoid sporadic failures during r/w operations */ 
  LCD_CS_GPIO_CLK_ENABLE();
  GPIO_InitStruct.Pin = LCD_CS_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(LCD_CS_GPIO_PORT, &GPIO_InitStruct);
  LCD_CS_HIGH();


  /*------------Put SD in SPI mode--------------*/
  /* SD SPI Config */
  SPIx_Init();
  
  /* SD chip select high */
  SD_CS_HIGH();
  
  /* Send dummy byte 0xFF, 10 times with CS high */
  /* Rise CS and MOSI for 80 clocks cycles */
  for (counter = 0; counter <= 9; counter++)
  {
    /* Send dummy byte 0xFF */
    SD_IO_WriteByte(SD_DUMMY_BYTE);
  }
}
예제 #3
0
/**
  * @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();
}