내가 해야되는 정확한 목표를 세우고 그 목표에 맞는 지식을 습득한다.
예) LED Display Driver IC를 통해 7세그먼트 LED Display를 제어해보자
일단 데이터 시트 없이 장치를 대충 파악해보고 상상해본다.
회로도와 데이터시트의 description을 읽어본다.
구글에 장치 이름을 검색하면 데이터 시트를 다운받을 수 있다.
fnd 를 gpio로 조절 -> 총 핀이 너무 많이 필요함
led display driver ic를 사용하면 핀이 3개면 16개 다 사용가능 함
-> stm과 칩을 어떻게 연결? 이제 코드로 어떻게 제어하는지 알아야 함
1) 내가 깊게 알 필요가 있는 영역인가?
2) 스킵 해도 되나?
하드웨어인지 소프트웨어 영역인지?
데이터 시트에서 모르는 단어, 용어가 나오면 알아야하는 단어인가 확인해보고
목적을 위해 중요한게 아니면 그냥 넘어가기
내 목적을 이루기 위해 그림을 하나씩 그려가고, 모든 연결고리가 이어지도록 하자
이해가 되지 않는 연결고리가 있다면 그부분을 연구
백지식이 필요함
STB (CS라고도함) : Strobe 시작, 끝 알림 (데이터를 보내고 싶으면 high -> low)
DIO (10) : 00001010
CLK 상승엣지에 인풋 아웃풋을 보냄
어떻게 데이터를 보내는지 정리되어 있음
하지만 어떤 데이터를 보내야 하는지는 정해있지 않음
A부분을 키려면 어떤 데이터를 보내야 하지?
-> FUNCTIONAL DESCPRITION
STM32F103x8 과 STM32F103xB 에 대한 데이터 시트
데이터시트는 시리즈별로 묶어서 기재하는 경우가 많음,
데이터시트는 최신것을 찾아볼 것
각 제조사의 웹페이지에 들어가서, 최신을 받는 것을 추천
웬만하면 구글에 검색하면 나옴
너무 오래된 데이터시트일 경우, 최신것을 찾아보고 없다면, 혹시 단종된것은 아닌지
부품 수급이 원활한지 확인 해 볼 것
Medium-density performance line ARM®-based 32-bit MCU with 64 or 128 KB Flash, USB, CAN, 7 timers, 2 ADCs, 9 com. interfaces
64 or 128 KB Flash
: 프로그램이 올라가는 저장공간, 필요한 데이터를 저장하기도 함
USB, CAN
: 칩에서 지원하는 통신 인터페이스
7 timers
: 타이머 7개
2 ADCs
: ADC 2개
9 com
:9개의 커뮤니케이션이 가능한 인터페이스
ARM® 32-bit Cortex®-M3 CPU Core
:ARM사의 M3 제품군 사용
72 MHz maximum frequency
: 클럭이 1M -> 8388608
1초에 603,979,776
클럭이 빠를 수록 좋음 (CPU 성능)
I7은 4GHz ~ 5GHz
1G 는 1M의 1024배
1.25 DMIPS/MHz
: 1MHz의 클럭이 흐를때 1.25만큼의 동작이 수행됨
클럭 -> 명령어 -> 특정행동
7MHz -> MIPS -> DMIPS
1MIPS 1초에 100만개 명령어 수행
-> 위 방법은 오류가 있음
1.25 DMIPS
D(Dhrystone) 드라이스톤
(벤치마킹 프로그램)
특정 행동을 기준으로 측정
한 동작을 하는데 수행되는 시간
performance at 0 wait state memory access
: 프로세서가 메모리 액세스를 수행하기 위해 기다릴 필요가 없는 프로세서 또는 컴퓨터 아키텍처의 기능
Single-cycle multiplication
: 원 사이클안에 곱하기 할 수 있다
hardware divisions
: 나누기를 하드웨어적으로 한다 = 빠르다
Memories
– 64 or 128 Kbytes of Flash memory
– 20 Kbytes of SRAM
: 메모리 저장용량
power supply supervisor : 전원감시기
2.0 ~ 3.6 V의 전원을 공급 가능
POR( Power - On - Reset) : Vpor 이상이면 리셋 해제
PDR(Power -Down Reset) : Vpdr 이하이면 리셋
BOR(Brownout reset) : threshold voltage 감지
PVD(Programmable valtage Detector) :
전원 전압이 지정값 이하로 떨어지면 인터럽트를 발생하는 기능
4-to-16 MHz crystal oscillator
: 발진 회로가 내장되어 있음
크리스털 crystal : 소자
oscillator 오실레이터(발진기)
IC가 내장된 크리스털 OSC
X-TAL
Internal 8 MHz factory-trimmed RC
Internal 40 kHz RC
: 내부에 8MHz, 40kHz의 클럭을 발생시킬 수 있는 발진기가 있다
pll (위상 동기회로)
: phase-locked loop
오실레이터에서 제공하는 클럭을 높은 고 주파수로 만든다
32 kHz oscillator for RTC with calibration
: RTC(Real Time clock)를 위한 32KHz 발진기 가 있다
Low-power
– Sleep, Stop and Standby modes
– VBAT supply for RTC and backup registers
저전력
모드 별로 전력을 최소한으로 사용
슬립, 스톱, 스탠바이
2 x 12-bit, 1 µs A/D converters (up to 16 channels)
:ADC가 동작하는데 1 µs 가 걸림
ADC가 2개이고 12bit로 표현
전압을 디지털화
– Conversion range: 0 to 3.6 V
– Dual-sample and hold capability
– Temperature sensor 온도센서
DMA
– 7-channel DMA controller
– Peripherals supported: timers, ADC, SPIs,
I2Cs and USARTs
: direct memory access
Up to 80 fast I/O ports
– 26/37/51/80 I/Os, all mappable on 16
external interrupt vectors and almost all
5 V-tolerant
: 16개의 인터럽트 벡터와 모두 연결되어 있음
5 V-tolerant
: 해당 핀으로 5V 입력이 들어와도 입력되는 핀이나 디바이스의 다른 블럭에 문제가 발생하지 않는다는 의미
Debug mode
– Serial wire debug (SWD) & JTAG
interfaces
: 디버그 모드
SWD , JTAG
핀 설정이 다르다
STLINK 를 통해 업로드 다운로드 펌웨어를 할 수 있다
핀 배열을 다 설정해 줘야함
7 timers
– Three 16-bit timers, each with up to 4
IC/OC/PWM or pulse counter and
quadrature (incremental) encoder input
– 16-bit, motor control PWM timer with deadtime generation and emergency stop
– 2 watchdog timers (Independent and
Window)
– SysTick timer 24-bit downcounter : 기본이 되는 타이머
Counter 모드
: 카운터가 다 줄면 인터럽트 발생
external input counter 모드
: 버튼이 눌려 외부 인터럽트가 발생하고 이때마다 카운터 값이 증가
pwm ouput모드
input capture 모드
output compare 모드