본문 바로가기
[Intel] 엣지 AI SW 아카데미/펌웨어 프로그래밍 75hour

[Intel] 엣지 AI SW 아카데미 27일차 (부산상공회의소 인력개발원)

by 0x01 2023. 12. 17.


일정: 2023.12.01(금)

수업 내용: 
 

 - Cortax M7 , STM32F767VIT6

 

목표: 

 - Cortax M7 , STM32F767VIT6

 

 

Part list (google pdf datasheet 검색)

 

 

 

STM32F767VGT6의 특징
① 고성능 32비트 ARM Cortex-M7 코어를 갖는 micro-controller로서
최고 216MHz의 시스템 clock으로 동작한다.(6단계 파이프라인 처리)
16MHz crystal x 13.5 채비 (내부 PLL) = 216MHz 
② 1024KB의 플래시 메모리와 512KB의 SRAM을 내장하고 있으며, 4개의 32비트 옵션 바이트
③ 16KB의 명령 캐시 메모리와 16KB의 데이터 캐시 메모리를 가지고 있다.
④ 1.7∼3.6V의 전원으로 동작하며, 
VBAT 단자를 통하여 별도로 공급되는 전원으로는 RTC, 4KB의 백업 SRAM 등을 구동한다.
⑤ 각각 16채널까지 동작할 수 있는 2개의 DMA 제어기를 가지고 있다.
⑥ 최고 180MHz의 높은 속도로 동작하는 82개의 병렬 I/O 포트(GPIO)를 가지고 있으며, 
이중에서 80개는 5V 로직이 사용 가능한 비트(5V-tolerant I/O)이다.
⑦ 총 18개의 타이머를 가지고 있다. 
1개의 SysTick 타이머, 13개의 16비트 타이머, 2개의 32비트 타이머, 2개의 워치독 타이머
⑧ 총 27개의 직렬통신 포트를 가지고 있다. 
4개의 USART, 4개의 UART, 4개의 SPI(3개의 I2S 포함), 4개의 I2C, 3개의 CAN, 1개의 USB
⑨ 12비트 분해능 A/D 컨버터를 3개 가지고 있다. 
외부 16개, 내부 3개의 아날로그 입력 채널을 연결할 수 있다.
⑩ 12비트 분해능의 D/A 컨버터를 2개 가지고 있다.

⑪ 시계 및 캘린더 구현을 위한 RTC를 가지고 있다.
⑫ 32비트 CRC(순환 중복검사, cyclic redundancy check) 계산기.
⑬ XGA(1024×768)의 해상도까지 지원하는 TFT-LCD 컨트롤러를 가지고 있다.
⑭ 디지털 카메라 인터페이스 및 하드웨어 JPEG codec을 가지고 있다.
⑮ JTAG 및 SWD(Serial Wire Debug) 인터페이스를 사용한 디버그 기능을 지원한다. 
STMicroelectronics사에서는 이를 이용한 저가형 에뮬레이터 ST-LINK/V2를 제공한다.
① 100핀 LQFP(Low-profile Quad Flat Package) 패키지
② 산업용(industrial)으로서 -40℃∼+85℃의 온도 범위에서 사용할 수 있는 버전과
-40℃∼+105℃의 온도 범위에서 사용할 수 있는 버전이 있다.

 

 

STM32F767VGT6의 외부 핀의 기능

- 메인 Nor-Flash memory 블록(1024KB) :
single bank 구조에서는 8개의 sector로 구성. (이때 플래시 메모리는 256비트 단위로 읽음)
dual bank 구조에서는 16개의 sector로 구성. (이때 플래시 메모리는 128비트 단위로 읽음)
섹터 단위로 메모리 보호기능 사용 가능.
AXIM/AHB를 사용하면 0x0800 0000 번지부터 플래시 메모리가 시작됨.
(이때, 명령 캐시 및 데이터 캐시 메모리 사용 가능)
ITCM 버스를 사용하면 0x0020 0000 번지부터 플래시 메모리가 시작됨.
(이때, ART(Adaptive Real-Time) Accelerator와 32바이트의 Prefetch buffer 사용 가능)
0 wait (3.3V에서 30MHz 이하) 또는 1∼9개의 wait cycle 부여 가능.
wait cycle 1개 이상 설정한 경우에는 반드시 Prefetch buffer 사용할 것.

 

- 정보 블록(64KB) : 

시스템 메모리(60KB) – 부트 메모리로 사용 가능.
옵션 바이트(32바이트) – 특별한 정보 저장.

 

전원 감시기(Power Supply Supervisor) : power-on이나 power-down시에 전원전압을 감시하여 지정값 이하이면 reset 신호 발생 : Vpor = 1.72V 이상이면, Reset wakeup, Vpdr=1.68V 이하이면 Reset

 

BOR(Brownout Reset)
: 현재의 전압을 감시하여 지정된 threshold값 이하로 떨어지면 reset 발생.
: 옵션 바이트에서 BOR_LEV[1:0] bit를 사용하여 threshold을 3단계로 설정.
① BOR_LEV[1:0] = 00 : BOR 레벨 3(상승 threshold 2.92V, 하강 threshold 2.83V)
② BOR_LEV[1:0] = 01 : BOR 레벨 2(상승 threshold 2.59V, 하강 threshold 2.50V)
③ BOR_LEV[1:0] = 10 : BOR 레벨 1(상승 threshold 2.29V, 하강 threshold 2.19V)
④ BOR_LEV[1:0] = 11 : BOR 기능을 금지하고, POR/PDR threshold 이 적용.

 

PVD(Programmable Voltage Detector)
: 현재의 입력 전압을 검출하여 지정값 이하이면, 
PWR_CSR1 register의 PVDO bit에 표시되면서 EXTI16 인터럽트 발생.
: PWR_CSR1 register에서 PVDE=1로 설정하고 PLS[2:0] bit를 사용하여 threshold 8단계로 설정.
① PVD threshold 0 : 상승 threshold 2.14V, 하강 threshold 2.04V
② PVD threshold 1 : 상승 threshold 2.30V, 하강 threshold 2.19V
③ PVD threshold 2 : 상승 threshold 2.45V, 하강 threshold 2.35V
④ PVD threshold 3 : 상승 threshold 2.60V, 하강 threshold 2.51V
⑤ PVD threshold 4 : 상승 threshold 2.76V, 하강 threshold 2.66V
⑥ PVD threshold 5 : 상승 threshold 2.93V, 하강 threshold 2.83V
⑦ PVD threshold 6 : 상승 threshold 3.03V, 하강 threshold 2.93V
⑧ PVD threshold 7 : 상승 threshold 3.14V, 하강 threshold 3.03V

 

저전력 모드 : Sleep, Stop, Standby
▣ Sleep mode
- Cortex-M7 core를 정지시켜 프로그램 실행을 중단, NVIC와 SysTick을 포함한 모든 주변장치는 정상 동작.
- SCB_SCR(system control register)에서 SLEEPONEXIT=0일 때 : 
WFI(Wait for Interrupt) 또는 WFE(Wait for Event) asm 명령을 실행하면 곧바로 슬립 모드로 진입.
SCB_SCR에서 SLEEPONEXIT=1일 때 : 
WFI(Wait for Interrupt) 명령을 실행한 이후에 인터럽트 서비스 루틴이 종료되면 슬립 모드로 진입.
- WFI 명령으로 슬립 모드에 들어갔으면, 인터럽트가 발생할 때 wakeup.
WFE 명령으로 슬립 모드에 들어갔으면, 어떤 이벤트가 발생하면 wakeup.

 

▣ Stop mode
- 소자 내부의 모든 clock이 정지되어 프로그램 실행을 중단, 모든 주변장치의 동작도 중단.
1.2V 영역(CPU 전원)의 clock도 차단, 내부 register나 SRAM의 값은 유지.
- SCB_SCR (system control register)에서 SLEEPDEEP=1 / PWR_CR register에서 PDDS=0일 때 : 
WFI(Wait for Interrupt) 또는 WFE(Wait for Event) asm 명령을 실행하면 곧바로 정지 모드로 진입.
- WFI 명령으로 정지 모드에 들어갔으면 외부 인터럽트가 발생할 때 wakeup.
WFE 명령으로 정지 모드에 들어갔으면 어떤 외부 이벤트가 발생하면 wakeup.
- 정지 모드에서 wakeup되면 무조건 시스템 clock은 HSI(High Speed Internal) Oscillator Input 를 사용.

 

▣ Standby mode
- 정지 모드의 기능에 1.2V 영역의 전원을 차단하는 내용 추가, 소비전력을 최대로 절약하는 모드.
백업 영역을 제외한 내부 register나 SRAM의 내용 소실.
- SCB_SCR register에서 SLEEPDEEP=1 / PWR_CR register 에서 PDDS=1일 때 : 
WFI(Wait for Interrupt) 또는 WFE(Wait for Event) asm 명령을 실행하면 곧바로 standby 모드 진입.
- 외부 NRST reset pin , IWDG(independent WDG) reset pin, 
WKUPx pin(PA0, PA2, PC1, PC13, PI8, PI11)의 상승에지, RTC 알람 신호 등으로 해제.
- 해제 절차는 reset과 동일.

 

Cortex-M7
: 프로세서를 위한 아키텍처는 OS를 중심으로 설계, OS 지원함
: SysTick (system timer)
- 시간 유지와 작업 관리를 위해 정기적으로 OS 예외 처리를 생성하는 24비트 다운 카운터
- 일반전인 peripheral timer 다름

Register

 

• PWR power control register (PWR_CR1) :
: Reset value: 0x0000 C000 (reset by wakeup from Standby mode)

Overdrive : 반도체 cell에서 보다 빠르고 정확한 data access를 위해
- 일정시간 주파수를 증가시키는 것
- 일정 시간동안 외부 전원을 Vcore(반도체 내부정격전압)로 유입시켜 Vcore을 시적으로 상승시키는 것