STM32F746_TouchGFX_FreeRTOS_1_H/W 분석
STM32F746_TouchGFX_FreeRTOS_1_H/W 분석
오늘부터 본격적으로 STM32F746 Discovery Kit 사용을 시작하였습니다.
전에 STM32F407과 마찬가지로 임베디드 시스템 개발에 있어 가장 먼저 해야할 일은 H/W 분석입니다.
H/W 구성에 대한 내용이 정리되어 있다면 개발 및 디버깅에 있어 더 쉽게 접근을 할 수 있습니다.
최종적으로 STM32F746+TouchGFX+FreeRTOS+Application(DC 모터 PID제어)을 구성하여
완성하는 것으로 정했습니다.
1. STM32F746 MCU 분석
STM32F746의 MCU분석은 Datasheet 및 Reference Manual총 2개가 있는데 따로 정리는 하지 않을 것입니다.
(STM32F407과 크게보면 겹치는 부분들이 많아서 그렇습니다. 사용하면서
F7관련 중요 MCU Spec에 대한 내용이 있다면 추후 내용 추가하겠습니다.)
STM32F74(5)XXX_Reference Manual
2. STM32F746 Discovery Kit 회로도 분석
Discovery Kit의 회로도를 각 Part별로 어떻게 구성되어 있는지 확인해보겠습니다.
ST사의 F746NGH6-C01의 schematic을 참고하였습니다.
en.mb1191-F746NGH6-C01_schematic.pdf
2.1 ST_LINK_V2-1
임베디드 H/W를 분석하는데 있어서 가장 중요한 것은 전원 입니다.
전원을 어떻게 공급받고 어떻게 만들어서 쓰는지에 대한 분석은 필수 입니다.
Discovery kit의 전원부는 ST_LINK_V2-1(4PAGE)에서 확인할 수 있습니다.
- 기본적으로 ST_LINK_Connector(USB-MINI-B)<1> 인 CN14에서 Power Switch IC를 통해 출력하는 5V를 사용할 수 있습니다.
- 추가적으로 JP2 <3> 또는 Arduino UNO와 연결하여 입력받는 <4> 5V를 사용할 수 있습니다.
- 그외에도 USB OTG FS,HS 쪽 5V도 사용 가능합니다.(주로 사용할 것 같진 않습니다.)
- 최종적으로 <5> 에서 어떠한 5V를 사용할 것인지 Jumper로 연결해주면 됩니다.
(당연하게도, 여러개의 Jumper를 연결 시, 출력인 5V끼리 연결되는 것과 같기 때문에 H/W가 망가질 수 있습니다.) - 연결된 5V는 STM32F746과 각종H/W 회로에 공급하는 메인전원인 3.3V 와 1.8V로 Regulate 합니다.
- 그외에도 ST_LINK_V2 동작을 위한 별도 전원 및
STM32F746 의 Debugging 및 Download동작을 수행하는 SWD <7> 가 있습니다.
2.2 MCU(STM32F746)
전원에 대한 대략적인 그림을 본 후, Main MCU인 STM32F746의 H/W 구성을 체크하였습니다.
- RTC를 위한 32MHz XTAL 과 Main Clock을 위한 오실레이터로 25MHz를 사용한 것으로 확인하였습니다. <12>
- Power-Down-Reset pin을 High로 하여 Power Supply Supervisor를 활성화 하였습니다.
- BOOT0핀을 Low로 하여 초기 부팅 시, ITCM Flash(0x00200000)로 부팅하도록 하였습니다.
- ITCM에서 실제 Application이 다운로드 되는 0x08000000으로 Jump되는 것으로 알고있는데
추후 정확한 정보인지 확인하겠습니다.
- ITCM에서 실제 Application이 다운로드 되는 0x08000000으로 Jump되는 것으로 알고있는데
- MCU의 전원부에 bypass cap 들을 확인하였습니다. <13>
실제 PCB상에서도 바로 옆에 붙어있을 정도로 가깝게 배치하였습니다. - 그외에도 각종 Perpherals들과 연결되는 I/O 핀들로 구성되어있습니다.
2.3 Peripherals(주변기기)
STM32F746에 연결되는 각종 Perpherals들의 H/W 구성에 대한 내용을 체크하였습니다.
- 먼저, I2C 통신방식을 지원하는 외부 Modules를 연결할 수 있는 커넥터가 있습니다. <8>
- Mirco SD(TF) Card Connector를 확인하였습니다. <9>
- FATFS를 구현하여 각종 파일들을 관리할 수 있을 것 같습니다.
- STM32F746의 H/W Reset 버튼 입니다. <10>
- 다양한 용도로 사용할 수 있는 User 버튼 입니다. <11>
- 버튼을 누를 시, Rising Edge이고 뗄 시, Polling Edge 입니다.
2.4 Audio
생략
2.5 QSPI(Quad SPI)
TouchGFX 사용 시, 이미지의 bitmap data를 저장할 Quad SPI Flash Memory입니다. <14>
- 기존의 SPI는 MOSI, MISO, SCK, nCS 이고
QSPI는 D0,D1,D2,D3, SCK, nCS 입니다. - 아래는 Serial Flash Memory의 SPI I/F에 대한 일반적인 연결방법 예제입니다.
- QSPI는 SPI에 비해 병렬로 데이터가 이동하기 때문에 SPI보다 빠른 통신속도로 사용 가능합니다.
- MT25QL128AB를 사용합니다.
2.6 Arduino_Connector
사용하고 싶은 GPIO나 각종 I/O 기능들을 사용하고자 할 때는 Arduino Connector부를 이용하면됩니다.
- 저는 이번에 진행하면서 표시한 PF7,PF6(UART7)을 TTL to USB Convertor를 연결하여 사용할 것입니다.
- 기본으로 구성되어있는 USART6은 추후 다른 Device와 통신 시 사용할 계획입니다.
- 그외 다른 pin들도 얼마든지 사용 가능합니다.
- 추후 구현할 Application Part와 연결할 계획입니다.
2.7 USB_OTG_FS,HS
생략
2.8 Ethernet
생략
2.9 Camera-Connector
생략(사용 시 정리)
2.10 SDRAM
LCD 화면 출력을 위해선 LCD Resolution에 따른 pixel별 Data가 필요합니다.
그리고 Pixel별 Data는 RGB888(24bit), RGB666(18bit), RGB565(16bit)로 구분합니다.
이 Pixel별 Data는 당연하게도 엄청난 공간(FrameBuffer)가 필요하고
역동적인 LCD 화면 출력을 위해선 매우 빠른 속도로 움직여야합니다.
위의 사항을 만족하기 위해 LCD 화면 출력 FrameBuffer는 SDRAM안에 구현하며
FMC I/F를 사용합니다.
- IS42S32F400F 는 1M(Mega) x 32bit x 4Banks로 총 128Mbit 의 용량을 가지고있습니다.
- 하지만, STM32F746과 연결된 Data Line은 16bit만 연결되어있습니다.
- 그래서 실제로 사용하고 있는 용량은 64Mbit가 되겠습니다.
- 앞서 말했듯이 FMC Data I/F를 32bit가 아닌 16bit로 사용하고 있기 때문에
STM32F746는 SDRAM의 Internal Bank 하나 당 크기인 4MByte를 모두 사용하지 않고
2Mbyte만 사용하게 됩니다. 총 8MByte만을 사용하게 되는 것입니다. - 그래서 주소범위는 0x0000 0000 ~ 0x007F FFFF 가되고 Offset을 고려하면
0xC000 0000 ~ 0xC07F FFFF의 주소공간을 사용하게 됩니다.
2.11 LCD4.3인치 + Touch
- LCD+Touch 제품의 Connector 부 입니다.
- 별도의 Backlight를 위한 Step Up DC-DC Convertor가 구성되어있습니다.
- LCD 제품이 Touch도 포함되어있어서 Touch Driver(ft5336)와 I2C 통신을 하여 수행됨을 확인하였습니다.
3. 정리
STM32F746 Discovery Kit의 H/W 분석 내용에 대해 정리하였습니다.
다음은 Project 및 Debugging 환경 구성에 대한 내용을 정리하겠습니다.
댓글남기기