728x90
- 11강 목표 : 데이터 시트를 읽으며 단어의 의미 등을 설명. 데이터시트 분석시 도움이 많이 될 것
- 프로그래머와 회로 설계자가 데이터시트를 보는 관점은 다름
- 회로 설계자는 전기적 특성들을 주로 고려
- 프로그래머는 칩의 사용법을 고려
- 데이터 시트에도 여러 종류가 있음. (ex) 소자 하나를 설명하는 / 모듈을 제어하는 데이터시트)
- 우리는 ARM Core의 설계도를 토대로 칩을 직접 만든 회사인 STM의 제품군을 사용
- 위는 STM32F103x8, STM32F103xB에 대한 데이터시트. 중복되는 내용이 많으면 위처럼 둘 이상을 하나로 묶어서 같이 설명
- 데이터 시트 분석 시작
- Medium-density performance line ARM
- CPU(코어)의 성능을 크게 좌우하는 것중에 하나가 트랜지스터를 얼마나 많이 집약을 해서 밀도있게 안에 넣어놨는지 여부.
- 이 제품은 밀도가 중간이라 성능도 중간정도를 가지는 ARM line이다
- ARM-based 32-bit MCU
- 메모리에서 데이터를 32bit만큼 읽어올 수 있다는 뜻 (32개의 line이 있다는 뜻). 그리고 레지스터에서 연산되는 데이터의 단위도 32bit
- 레지스터 : CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 공간. 메모리와 가깝게 일을 하며 CPU와 직접 연결되어 있어 연산 속도가 메모리에 비해 매우 빠름
- 하드디스크 or Flash Memory에서 데이터를 메모리로 불러오고 그 데이터를 CPU가 처리. 그리고 ALU를 통한 연산 결과를 다시 레지스터에 저장
- 즉 32bit 컴퓨터라는 뜻은 레지스터 크기, 메모리의 한 주소에 저장되는 데이터의 크기, 메모리에서 레지스터로 데이터를 한번에 읽어오고 CPU가 한번에 연산할 수 있는 데이터의 크기 모두가 32bit라는 뜻
- 또 메모리 주소의 최댓값도 32bit임을 의미. 메모리 주소의 최댓값은 2^32보다 큰 메모리 용량을 가질 수 없다
- 결국 bit가 높은 컴퓨터는 빠르다
- USB는 하나의 line으로 한번에 1bit씩 불러오는데 속도가 엄청 빠름
- 메모리에서 데이터를 32bit만큼 읽어올 수 있다는 뜻 (32개의 line이 있다는 뜻). 그리고 레지스터에서 연산되는 데이터의 단위도 32bit
- 64 or 128KB Flash
- Flash memory는 프로그램이 올라가는 저장공간으로 쓰거나 내가 필요한 데이터를 저장하는데 쓰임
- Flash Memory : 전기적으로 데이터를 저장하고 지울 수 있는 비휘발성 메모리 칩. 데이터를 하나씩 처리하는 기존의 EEPROM과 달리 데이터를 블록 단위로 처리할 수 있다
- 또한 ROM처럼 전원이 차단되어도 데이터를 보존할 수 있으며 읽기 속도가 빠르고 내구성이 뛰어나 배터리로 동작하는 장치들에서 저장 장치로 주로 사용함
- EEPROM에 비해 가격이 훨씬 싸다.
- 각각 64 / 128KB이상의 프로그램은 만들 수 없다
- USB, CAN
- STM32F103x8, STM32F103xB에서 지원하는 통신 인터페이스
- CAN(Controller Area Network) 통신 : 여러개의 장치들이 하나의 인터페이스를 통해 통신하는 Multi Master 방식의 통신(I2C와 유사). 차량 내에서 호스트 컴퓨터 없이 MCU나 ECU들이 서로 통신하기 위해 표준 통신 규격으로 설계됨
- 아래 그림처럼 차량 내 ECU들은 UART통신 (1:1 방식)을 사용했었는데, 차량의 모듈이 늘어나고, 그에 따른 연결선들이 늘어남에 따른 자동차의 무게와 가격 상승의 문제를 해결하고자 CAN통신 방식이 개발됨
- STM32F103x8, STM32F103xB에서 지원하는 통신 인터페이스
- 7 timers
- 7개의 타이머 사용 가능
- 2 ADCs
- Analog to Digital Convert 2개를 제공
- 9 com. interfaces
- 9개의 communication이 가능한 인터페이스
- ARM 32bit Cortex M3 CPU Core
- ARM 회사에서 설계한 M3 제품군을 사용하여 칩을 설계했다는 뜻
- M3는 Cortex-M 모델으로 32bit 고성능 ARM MCU 시장의 개척자
- 72 MHz maximum frequency
- Clock을 의미. Clock은 CPU의 절대적인 시간으로, 명령을 처리할 때 행동의 기준점
- CPU안에도 여러 구역으로 하는 역할들이 나뉘는데, 각 구역이 같이 sink를 맞춰 동시에 같이 일을 해야 함
- Sink가 중요한 이유 : 각 연산을 하는 장치가 다른데 시간에 대한 기준점이 없다면 서로의 정확한 연산 결과를 받지 못할 수 있음
- Clock은 통신에서도 사용(bps). 서로 데이터를 주고 받을 때 어떤 timer를 기준으로 해석할 것인지 clock을 토대로 결정
- 즉 clock은 모든 컴퓨터에 필수적으로 있어야 하는 요소
- Clock은 빠르면 빠를수록 좋으나 위 장치의 CPU는 1초에 최대 72M까지 쪼갤 수 있음. Hz는 1초에 몇번 파형을 만들었냐를(주기) 의미 = 72MHz는 1초에 6억번의 주기를 만듦
- I7은 4GHz ~ 5GHz. 1G는 1M의 1024배
- 1.25 DMIPS/MHz
- 클럭(7MHz) -> 명령어(MIPS) -> 특정 행동(DMIPS)
- MPIS (Million Instructions Per Second) : 컴퓨터의 연산 속도를 나타내는 하나의 단위. 초당 백만 연산. 그런데 이 방법은 오류가 있음. 명렁어 하나를 수행한다고 빠르진 않음
- 드라이스톤이라는 회사에서 밴치마킹 프로그램을 만듦. 특정 동작(명령어 집합)을 수행시키고 그 동작이 걸리는 시간을 측정 DMIPS (D는 Drystone을 의미)
- 1.25 DMIPS/MHz : 데이터시트상의 CPU는 1초에 72M만큼을 쪼갤 수 있는데 그중에 1MHz만큼의 시간이 흐르면 1.25번만큼의 드라이스톤에서 요구하는 특정 동작을 할 수 있다는 의미
- CPU를 어떻게 설계했냐에 따라 한 clock안에 명령어를 몇개를 실행할 수 있느냐가 갈림
- ex) ADD 명령어를 어떤 컴퓨터는 한 클럭에 끝내고, 어떤 컴퓨터는 3클럭에 걸쳐 끝냄
- 결론 : 이 CPU는 1초에 72MHz만큼의 일을 하고 1MHz의 clock이 흐를 때 드라이스톤에서 만든 특정 동작을 1.25번 수행할 수 있다
- performance at 0 wait state memory access
- 프로세서가 메모리를 엑세스를 수행하려면 일정 시간동안 기다려야 하는데, 이 칩은 그런게 없다. 즉 프로세서가 메모리에 바로 엑세스 할 수 있다
- Single-cycle multiplication and hardware division
- Instruction fetch -> Read Memory 등의 동작들이 있는 cycle들이 있음. 그걸 모아 pipeline을 만들어 동작. 그 한 cycle에 곱하기를 할 수 있고 나누기를 하드웨어적으로 함(빠르다)
- Pileline : 하나의 명령어가 실행되는 도중에 다른 명령어 실행을 시작해 동시에 여러 개의 명령어를 실행하는 방법
- Instruction fetch -> Read Memory 등의 동작들이 있는 cycle들이 있음. 그걸 모아 pipeline을 만들어 동작. 그 한 cycle에 곱하기를 할 수 있고 나누기를 하드웨어적으로 함(빠르다)
- SRAM(Static RAM) : 프로그램을 플레쉬 메모리로부터 읽어와서 프로세서화 해서 쓸 때 사용. 휘발성
- DRAM(Dynamic RAM) : SRAM에 비해 많은 데이터를 저장할 수 있으나 속도가 느림
- SRAM은 Flip-flop으로 작동하여 안의 데이터가 변하지 않는다
- DRAM은 Capacitor로 작동한다. Capacitor는 시간이 지나면 방전이 되므로 데이터 보존을 위해서 Refresh 신호를 계속 줘야 함
- 일반적인 컴퓨터에는 DRAM이 주로 사용되며 SRAM은 임베디드 컴퓨터에서 주로 사용
- 변수 선언, 스택, 힙(동적 메모리가 할당되는 영역) 공간 등이 SRAM에 있음
- 20KB의 SRAM 공간이 있다
- Flash 메모리는 하드디스크라 생각. 특징은 서로 다르지만 역할이 비슷
- 칩 자체에서 2~3.6V의 전원을 공급할 수 있다 / Output을 낼 수 있다
- 전원감시기(Power supply supervisor) : 칩을 보호하기 위해 사용
- POR (Power-On Reset) : VPor 이상이면 리셋 해제
- PDR (Power-Down Reset) : Vpdr 이하이면 리셋
- PVD (Programmable Voltage Detector) : 전압이 일정량 이하로 내려가면 인터럽트를 발생시킴. 경고 메세지를 통해 갑작스러운 방전을 방지하는 역할
- BOR(Brownout Reset) : Threshold Voltage 감시 (참고)
- ex) 배터리로 돌아가는 MCU에서 배터리의 전압이 점점 약해져 몇 볼트 이하가 되면 정상적인 동작이 힘들어짐. 또한 전원을 뺐다 꼈다 할 때 위 기능들을 통해 자동으로 리셋이 됨
- Crystal Oscillator : 크리스털은 특정 전류를 주면 일정한 진동이 발생되는 소자. 이거 하나만으로는 진동을 발생시킬 순 없고 주변 회로(발진기 회로)가 필요. 발진기(IC)는 부품만 달면 발진을 함
- 발진 : 일정한 신호를 만들어 냄
- 회로도에 8MHz의 크리스털이 있는데 주변에 그 크리스털의 발진기 회로가 없음
- 이 칩에 내장된 크리스털 발진기 회로가 있다고 추측. 그 회로를 통해 4~16MHz의 크리스털을 사용할 수 있다
- Internal 8MHz factory-trimmed RC : 내부에 8MHz의 발진을 하는 (클럭을 만들어 낼 수 있는) 장치가 있다. RC는 발진을 의미
- Internal 40kHz RC : 40kHz의 발진 가능
- PLL(Phase-Locked Loop) : 위상 동기 회로. CPU는 72MHz까지의 클럭을 받아들일 수 있다. 그런데 외부적으로는 최대 8MHz의 클럭밖에 넣을 수 없어 CPU의 성능을 온전히 활용하지 못함. 이때 PLL이 입력받은 클럭을 증폭시켜줌
- 32 kHz oscillator for RTC with callibration : RTC를 위한 32kHz의 발진기가 있다
- RTC(Real Time Clock) : 현재의 시간을 유지시키는 일종의 컴퓨터 시계. 컴퓨터의 전원이 차단되어도 시간은 유지되어야 하기 때문에 MCU의 개입 없이 디지털 회로의 카운터에 의존하여 시간을 셈
- 소형 배터리나 슈퍼 캐패시터를 통해 RTC에 전원을 공급함
- CPU가 저전력으로 동작하는 모드들 (배터리로 동작시 전력을 최대한 아껴야 하므로 사용)
- Vbat : 배터리로 공급되는 전원. RTC와 백업 레지스터를 위해 공급
- 2개의 12bit ADC
- ADC : 아날로그(전압)를 디지털화 함
- 입력 전압의 아날로그 파형을 2^12로 나눔
- 16개의 채널 지원. 각 ADC에 변환시킬 전압을 입력할 수 있는 채널이 16개라는 뜻
- 0 ~ 3.6V의 전압 디지털화 가능
- Dual-sample and hold capability
- Sample and Hold Circuit : ADC에서 신호를 양자화 하려 할 때 샘플을 획득하는 시간이 필요. 최소한 어느정도는 입력값(샘플값)을 받아야 함. 회로상으로 일정 시간 이상만큼 입력을 받아들이게 되어있음
- 위의 샘플을 AD 변환 과정동안 유지시킴 (Hold)
- 양자화 : 표본화 과정으로, 아날로그 신호를 일정한 전압 레벨의 구간을 나눈 영역에 강제적으로 대응시키는 과정
- 내부적으로 온도 센서가 있음 : 온도 센서의 정보도 디지털화 함
- ADC가 한번 동작하는데 1us가 걸림
- DMA(Direct Memory Access) : 입출력 장치들이 CPU를 거치지 않고 메모리에 바로 접근하는 방식. 메모리에 많은 양의 데이터 전송시 시간이 오래걸리고 CPU가 다른 일을 하기 힘듦. 이를 보완하기 위해 DMA 방식을 사용하여 CPU가 다른 일을 할 수 있도록 함
- PIO(Programmed Input/Output) : DMA의 반대 개념으로 장치들간의 모든 데이터가 CPU를 거쳐가는 방식
출처 : https://hydroponicglass.tistory.com/283
- 7개의 DMA를 가져올 수 있는 채널들.
- DMA가 지원되는 장치들 : 타이머, ADC, SPI, IC2, USARTs
- 최대 80개의 빠른 I/O 포트가 있음. 제품군에 따라 갯수가 달라짐
- 모두 다 16개의 외부 인터럽트에 mapping이 가능하다 -> 인터럽트 발생시 호출되는 함수에 GPIO mapping 가능
- mapping : 어떤 값을 다른 값에 대응시키는 것
- 5V tolerant : 해당 핀으로 5V의 입력이 들어와도 주변 장치에 영향을 미치지 않는다. 전압이 다른 곳으로 세지 않는다는 의미
- SWD & JTAG
- 2개의 디버그를 지원해주는 인터페이스
- 소프트웨어 / 하드웨어적 관점 두가지 모두에서 차이가 있음
- 핀 설정 다름
- ST Link는 JTAG, SWD, SWIM까지 지원
- SWD : 간단한 회로 구조. SWDIO(Data I/O Pin)과 SWCLK(Clock Pin) 의 선 두가닥만 있으면 디버깅이 가능.
- 아래 사진에 표시한 보드. 링크의 핀 배열이 저렇게 되어 있다는 뜻
- JTAG는 5개의 핀(TDI, TMS, TCK, NRST, TDO)을 통해 제어
- Test Data In Pin, Test Mode State Pin, Test Clock Pin, Test Data Out Pin
- 위처럼 핀 설정을 통해 SWD 인터페이스를 사용하고, ST-LINK를 보드와 연결하여 MCU를 컴퓨터와 연결시켜 디버깅 환경을 만듦
- 7개의 Timer
- Timer는 Clock을 통해 돌아감
- Clock에 따라 카운트 값을 더하거나 뺌
- 시간 측정이나, Thread를 돌릴 때나 운영체제 만들 때 명령어 수행 전환의 기준으로 사용, PWM으로도 사용
- 하나의 프로세스는 아래 그림처럼 여러개의 쓰레드로 구성이 가능하다
- 3개의 16bit timer와 4가지 모드들
- 16bit = 2^16까지 카운트 가능
- Timer의 Modes
- Counter Mode : 단순히 비트단위로 카운트를 세다가 내가 설정한 카운터가 다 줄면 인터럽트 발생. 그 때 특정 행동을 하도록 설정
- External Input Mode : 버튼이 눌려 외부 인터럽트가 발생하고 이 때마다 카운터 값이 증가
- PWM Output Mode : 타이머에 따라 시간 단위로 PWM을 조절하며 전압을 조절함
- PWM(Pulse Width Modulation) : 펄스의 폭을 조절하여 출력을 조절
- 디밍 : ex) LED가 5V에서 최대 발광. 근데 서서히 컷다 꺼지는게 디밍. 전압이 가변적으로 변해야 함 -> PWM 사용
- 모터 제어시에도 PWM 사용
- Inoput Capture Mode (IC)
- Output Compare Mode (OC)
- 16bit의 Motor Control PWM Timer
- 2 Watchdog Timers (Independent and Window)
- Watchdog Timer : CPU가 잘 동작하고 있는지를 검사. 컴퓨터는 일정 시간마다 워치독 타이머를 재가동 시킴
- 만약 시스템에 문제가 생겨 watchdog을 재가동하는 데 실패하면 interrupt 발생
- Independent and Window : CPU가 고장나더라도 별도로 돌아감
- SysTick Timer 24-bit downcounter
- 시스템 타이머. 기준이 되는, CPU 동작시 기본적으로 돌아가는 타이머. 타이머 사용시 기본적으로 사용
* Timer와 Counter의 차이점 (참고)
- Timer : CPU 내부의 일정한 System Clock을 count. 일정한 주기를 세므로 시간을 카운트 할 수 있다
- Counter : 외부에서 입력되는 Clock을 count. 주기가 불규칙할 수 있으므로 clock의 개수(on/off의 개수) 만을 셈
- 9개의 통신 인터페이스
- 2개의 I2C
- 3개의 USART
- ISO 7816 interface, LIN, IrDA는 표준을 의미
- 2개의 SPI
- CAN interface
- USB 2.0 지원
- CRC(Cycle Redundancy Check) : 시리얼 통신시 노이즈를 많이 탐. 따라서 통신 데이터의 검증이 필요함
- 데이터 전송시 데이터에 따른 연산 결과(CRC값)를 데이터 뒤에 달아서 전송함
- 수신부에서는 받은 데이터를 통한 CRC값과 전송된 CRC값을 비교해서 두 값이 다르면 오류가 있음을 알 수 있음
- CRC는 보통 압축 프로그램에서 많이 사용 (압축시 변한 데이터가 압축 해제시와의 데이터와 같은지 확인)
- Packages are ECOPACK : 친환경 포장지를 통해 포장함
- 각 Reference에 어떤 Part number가 있나 설명
- 우리는 STM32F103C8 사용
- 위 내용은 117장의 데이터시트중 첫장일 뿐 훨씬 많은 내용들이 뒤에 있다
- 따라서 모든 내용을 다 볼 수 없으므로 목적에 따라 데이터 시트를 봐야 함. 필요없는 용어들은 굳이 해석할 필요 없이 넘겨가며 필요한 내용들만 볼 것
위 내용의 모든 출처는 유튜버 '[오제이 튜브]OJ Tube' 님께 있습니다.
https://www.youtube.com/watch?v=AnSYv01-1Tc&list=PLz--ENLG_8TNjRg1OtyFBvUyV4PHaKwmu&index=15
'Study_Embedded > [오제이 튜브의 임베디드 실전 강의]' 카테고리의 다른 글
[오제이 튜브의 임베디드 실전 강의] 10강 데이터 시트 보는 꼼수 (0) | 2022.03.26 |
---|---|
[오제이 튜브의 임베디드 실전 강의] 9강 회로도 딱 필요한 만큼만 배우자! (0) | 2022.03.03 |
[오제이 튜브의 임베디드 실전 강의] 8강 지금까지 배운 것을 큰 그림에 저장하기 (0) | 2022.02.14 |
[오제이 튜브의 임베디드 실전 강의] 7강 GPIO제어 고아 먹기 (0) | 2022.02.11 |
[오제이 튜브의 임베디드 실전 강의] 6강 GPIO제어 뿌셔 먹기 (0) | 2022.02.08 |