본문 바로가기

[STM32F746G-DISCO] LIBJPEG 사용하기

by rudals.kim 2024. 7. 11. 댓글 개
반응형
아래 테스트는 STM32CubeIDE 1.6.1/STM32Cube_FW_F7_V1.16.1를 사용하여 테스트 되었습니다.


아래 표와 같이 STM32F7x7/8/9 칩셋에서는 H/W적으로 JPEG 코덱이 내장되어 있습니다.

이와는 달리 STM32F7x6 칩셋에는 H/W JPEG 코덱이 들어있지 않고, 소프트웨어적으로 처리를 하기 위해 디코딩 라이브러리를 예제와 함께 제공해 주고 있어서 테스트를 해 보았습니다.

새 프로젝트를 생성하여 DMA2D/FATFS/FMC/GPIO/I2C3/LIBJPEG/LTDC/NVIC/RCC/SDMMC1/USART1을 설정하였습니다. 점점 사용하는 디바이스가 늘어나다 보니 설정해야 할 장치들이 많아지고 있지만 이것도 몇 번 설정하다 보니 익숙해집니다.

다른 디바이스들은 이전에 LDC와 SDMMC를 하면서 사용해 봤기때문에 생략하고 새로 추가된 LIBJPEG 설정만 추가 해 놓았습니다. 모두 기본 설정값을 사용하였습니다.

STM32Cube_FW_F7_V1.16.1\Projects\STM32746G-Discovery\Applications\LibJPEG\LibJPEG_Decoding 예제 프로젝트를 참고하여 새 프로젝트를 생성하시면 됩니다.

예제에서 중요 함수는 jpeg_decode, Jpeg_CallbackFunction 함수입니다.

jpeg_decode 함수에서는 scanline만큼 읽어들여 디코딩을 한 후 Jpeg_CallbackFunction을 호출하여 LCD의 SDRAM 영역에 직접 이미지를 출력하는 구조입니다.

윈도우10 PC에서 테스트용 이미지 2장을 MicroSD 카드에 복사해 넣었습니다.

MicroSD 카드를 STM32F746G-DISCO 보드에 꽂은 후 부팅을 시킵니다.

CLI에 구현된 명령어를 사용하여 MicroSD의 파일리스트를 확인한 후 "jpeg <파일명>"의 명령어를 사용하여 테스트용 jpeg 이미지를 디코딩해 봅니다.

sample1.jpg를 디코딩 해 보았습니다.

sample2.jpg를 디코딩 해 보았습니다.

S/W 라이브러리를 사용하기 때문에 JPEG 이미지가 디코딩 시 시간이 조금 걸리지만 정상적으로 잘 디코딩됩니다.

아래는 테스트 영상입니다.

반응형

댓글