본문 바로가기

[ST_MICRO]/STM32F43x

STM32F439 EVM - SD카드를 이용한 BMP파일 출력 테스트

 STM32F439 EVM - SD카드를 이용한 BMP파일 출력 테스트



STM32F439 EVM 보드 에는 SDIO방식의 SD Card 연결할 수 있는 SD 소켓이 할당되어 있고 이를 이용하여 SD Card의 BMP파일을 TFT LCD에 출력하는 테스트를 진행해 보았다.




STM32F439 7" TFT-LCD 출력 테스트 동영상




STM32F439 SDIO 초기화 코드
uint8_t BSP_SD_Init(void)
  uint8_t SD_state = MSD_OK;
  
  /* uSD device interface configuration */
  uSdHandle.Instance = SDIO;

  uSdHandle.Init.ClockEdge           = SDIO_CLOCK_EDGE_RISING;
  uSdHandle.Init.ClockBypass         = SDIO_CLOCK_BYPASS_DISABLE;
  uSdHandle.Init.ClockPowerSave      = SDIO_CLOCK_POWER_SAVE_DISABLE;
  uSdHandle.Init.BusWide             = SDIO_BUS_WIDE_1B;
  uSdHandle.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE;
  uSdHandle.Init.ClockDiv            = SDIO_TRANSFER_CLK_DIV;
  
  /* Configure IO functionalities for SD detect pin */
  //BSP_IO_Init(); 
  
  /* Check if the SD card is plugged in the slot */
  if(BSP_SD_IsDetected() != SD_PRESENT)
  {
    return MSD_ERROR;
  }
  
  /* HAL SD initialization */
  SD_MspInit();
  if(HAL_SD_Init(&uSdHandle, &uSdCardInfo) != SD_OK)
  {
    SD_state = MSD_ERROR;
  }
  
  /* Configure SD Bus width */
  if(SD_state == MSD_OK)
  {
    /* Enable wide operation */
    if(HAL_SD_WideBusOperation_Config(&uSdHandle, SDIO_BUS_WIDE_4B) != SD_OK)
    {
      SD_state = MSD_ERROR;
    }
    else
    {
      SD_state = MSD_OK;
    }
  }
  
  return  SD_state;
}



STM32F439 SD Card를 이용한 BMP파일 출력 테스트 예제코드
    //SD 카드 초기화
    if(FATFS_LinkDriver(&SD_Driver, SDPath) == 0)
    {
        if(f_mount(&SDFatFs, (TCHAR const*)SDPath, 0) != FR_OK)
        {
            Led2On();
            Error_Handler();

            while(1);
        }
        else
        {
            //파일 리스트 출력
            //res = print_files("");
            Led1On();
            
            
            //------------------------------------------------------------------
            //BMP파일 출력테스트
            InitBmpFileRead();
            
            //BMP파일 읽어와서
            if(OpenReadBmpFile(ImageBuffer, (const char*)"1_3.bmp"))
            {
                BSP_LCD_SelectLayer(1);
                
                //출력
                BSP_LCD_DrawBitmap(0, 0, ImageBuffer);  
                BSP_LCD_SetTransparency(1, 255);            
            }
            //------------------------------------------------------------------
}
}




STM32F439 BMP 이미지 7" TFT-LCD에 출력 결과









반응형