본문 바로가기

Study_Embedded/[오제이 튜브의 임베디드 실전 강의]

[오제이 튜브의 임베디드 실전 강의] 11강 데이터 시트 읽어주는 남자

728x90

- 11강 목표 : 데이터 시트를 읽으며 단어의 의미 등을 설명. 데이터시트 분석시 도움이 많이 될 것

이번 시간에는 딱 이 한장을 해석 (데이터 시트의 첫 장)

  • 프로그래머와 회로 설계자가 데이터시트를 보는 관점은 다름
    1. 회로 설계자는 전기적 특성들을 주로 고려
    2. 프로그래머는 칩의 사용법을 고려
  • 데이터 시트에도 여러 종류가 있음. (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씩 불러오는데 속도가 엄청 빠름
  • 64 or 128KB Flash 

사진 출처 https://ko.wikipedia.org/wiki/%ED%94%8C%EB%9E%98%EC%8B%9C_%EB%A9%94%EB%AA%A8%EB%A6%AC

  • 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통신 방식이 개발됨

사진 출처 : https://www.fescaro.com/ko/archives/249

  • 7 timers 
    • 7개의 타이머 사용 가능
  • 2 ADCs
    • Analog to Digital Convert 2개를 제공
  • 9 com. interfaces
    • 9개의 communication이 가능한 인터페이스

CPU의 특징 설명

  • 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 Pipeline. 출처 : https://blog.naver.com/PostView.nhn?blogId=icbanq&logNo=221683960935&categoryNo=0&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=postView

 

 

Memory 부분

  • SRAM(Static RAM) : 프로그램을 플레쉬 메모리로부터 읽어와서 프로세서화 해서 쓸 때 사용. 휘발성
    • DRAM(Dynamic RAM) : SRAM에 비해 많은 데이터를 저장할 수 있으나 속도가 느림
    • SRAM은 Flip-flop으로 작동하여 안의 데이터가 변하지 않는다
    • DRAM은 Capacitor로 작동한다. Capacitor는 시간이 지나면 방전이 되므로 데이터 보존을 위해서 Refresh 신호를 계속 줘야 함
    • 일반적인 컴퓨터에는 DRAM이 주로 사용되며 SRAM은 임베디드 컴퓨터에서 주로 사용
    • 변수 선언, 스택, 힙(동적 메모리가 할당되는 영역) 공간 등이 SRAM에 있음
  • 20KB의 SRAM 공간이 있다
  • Flash 메모리는 하드디스크라 생각. 특징은 서로 다르지만 역할이 비슷

 

 

Clock 관련 부분

  • 칩 자체에서 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와 백업 레지스터를 위해 공급

 

 

시간 단위. ms, us, ns 많이 사용

  • 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 관련 부분

  • DMA(Direct Memory Access) : 입출력 장치들이 CPU를 거치지 않고 메모리에 바로 접근하는 방식. 메모리에 많은 양의 데이터 전송시 시간이 오래걸리고 CPU가 다른 일을 하기 힘듦. 이를 보완하기 위해 DMA 방식을 사용하여 CPU가 다른 일을 할 수 있도록 함
    • PIO(Programmed Input/Output) : DMA의 반대 개념으로 장치들간의 모든 데이터가 CPU를 거쳐가는 방식

PIO / DMA

출처 : https://hydroponicglass.tistory.com/283

  • 7개의 DMA를 가져올 수 있는 채널들. 
  • DMA가 지원되는 장치들 : 타이머, ADC, SPI, IC2, USARTs

 

 

  • 최대 80개의 빠른 I/O 포트가 있음. 제품군에 따라 갯수가 달라짐
  • 모두 다 16개의 외부 인터럽트에 mapping이 가능하다 -> 인터럽트 발생시 호출되는 함수에 GPIO mapping 가능
    • mapping : 어떤 값을 다른 값에 대응시키는 것
  • 5V tolerant : 해당 핀으로 5V의 입력이 들어와도 주변 장치에 영향을 미치지 않는다. 전압이 다른 곳으로 세지 않는다는 의미

 

Debug 관련 부분

  • SWD & JTAG
    • 2개의 디버그를 지원해주는 인터페이스 
    • 소프트웨어 / 하드웨어적 관점 두가지 모두에서 차이가 있음
    • 핀 설정 다름
    • ST Link는 JTAG, SWD, SWIM까지 지원

SWD / JTAG

  • 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 

SWCLK와 SWDIO 핀을 설정하여 SWD 인터페이스를 사용

  • 위처럼 핀 설정을 통해 SWD 인터페이스를 사용하고, ST-LINK를 보드와 연결하여 MCU를 컴퓨터와 연결시켜 디버깅 환경을 만듦

 

 

  • 7개의 Timer
    • Timer는 Clock을 통해 돌아감
    • Clock에 따라 카운트 값을 더하거나 뺌
    • 시간 측정이나, Thread를 돌릴 때나 운영체제 만들 때 명령어 수행 전환의 기준으로 사용, PWM으로도 사용
      • 하나의 프로세스는 아래 그림처럼 여러개의 쓰레드로 구성이 가능하다

단일 쓰레드와 멀티 쓰레드. 각 쓰레드는 각자의 stack과 register를 가짐

  • 3개의 16bit timer와 4가지 모드들 
    • 16bit = 2^16까지 카운트 가능
  • Timer의 Modes
    1. Counter Mode : 단순히 비트단위로 카운트를 세다가 내가 설정한 카운터가 다 줄면 인터럽트 발생. 그 때 특정 행동을 하도록 설정
    2. External Input Mode : 버튼이 눌려 외부 인터럽트가 발생하고 이 때마다 카운터 값이 증가
    3. PWM Output Mode : 타이머에 따라 시간 단위로 PWM을 조절하며 전압을 조절함 
      • PWM(Pulse Width Modulation) : 펄스의 폭을 조절하여 출력을 조절
      • 디밍 : ex) LED가 5V에서 최대 발광. 근데 서서히 컷다 꺼지는게 디밍. 전압이 가변적으로 변해야 함 -> PWM 사용
      • 모터 제어시에도 PWM 사용
    4. Inoput Capture Mode (IC)
    5. Output Compare Mode (OC)

ton의 비율을 조절하며 출력을 조절함

  • 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의 차이점 (참고)

  1. Timer : CPU 내부의 일정한 System Clock을 count. 일정한 주기를 세므로 시간을 카운트 할 수 있다
  2. 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