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에 출력 결과
반응형