본문 바로가기

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

[오제이 튜브의 임베디드 실전 강의] 10강 데이터 시트 보는 꼼수

728x90

- 10강 목표 : 데이터 시트 보는 요령 공부

  • 데이터 시트 : 어떤 부품에 대한 사용 설명부터 특징등을 나열한 것을 의미함
  • 데이터 시트를 보는 요령은 논문이나 책을 잘 읽는 요령과 비슷하다 : 방법의 많이 보는 것 말고는 없다
  • 한글로 된 데이터 시트는 거의 없으므로 영어를 잘 하면 유리함
    • 전문 용어와 논리 영역의 내용들이 있어 단순히 영어를 잘 한다고만 해서는 잘 보기 힘듦. 사전 정보, 배경 지식 필요
  • 목표하는 물건을 만들기 위해 시간을 단축하는 방법은 있다. 오늘은 이 방법을 공부

 

1) 목적을 세우자 : 내가 해야되는 정확한 목표를 세우고, 그 목표에 맞는 지식을 습득

  • ARM Core 데이터시트는 1500장으로, 다 읽기에는 무리가 있음. 그리고 그 중에는 내게 필요하지 않았던 정보들도 많음
  • 우선 개념을 잡고 내가 필요한 영역, 내가 만들어 내려는 프로그램에 필요한 정보들만 보기

 

- 오늘의 목표 : Led display driver ic를 통해 7segment LED Display를 제어해보기

7segment 제어시 Led display driver ic라는 칩을 사용하는데 이걸 어떻게 제어할 지 그림을 그리는 것이 이번 강의의 목표

하드웨어 담당자가 구성한 PCB를 토대로 소프트웨어 개발의 관점에서 보기 (칩 선정, Led driver 선정은 하드웨어 개발자의 몫). 왜 하드웨어 설계자가 이 부품을 썼을지 이해할 것

 

- 장치 개념 이해

1) 7segment

우선 데이터시트 없이 이 장치의 동작과 역할을 유추해보기

강의의 최종 목표는 고추 건조기를 만드는 것 : 7segment는 온도를 표시하는 역할. 7segment의 구성 보기

- 7segment에 대한 공부 : SND-620 데이터 시트를 인터넷에 검색하여 찾아보기

7 segment. 각 한칸 한칸이 LED고 그것들을 조합하여 숫자를 표시하는 장치이다. 오른쪽은 SND-620 데이터 시트 중 일부

 

  • Description을 보며 장치의 개념 파악. 지금은 이 장치에 대한 개념을 잡는 것으로 자세한 내용은 다음에 파악
  • epoxy resin molded 는 영어를 알아도 모르는 전문 용어 : 내가 알아야 하는 내용이면 추가적으로 학습
  • 지금은 LED를 제어하는 것이 목표. 위의 용어는 LED를 화학적으로 처리하는 것에 관련한 내용으로 목표에 크게 중요한 내용은 아니므로 넘어감
  • 우리에게 중요한 것은 7segment를 어떻게 키는건가에 관련한 내용 : 위의 사진중 중요한 내용은 없음

 

7 segment 제어 관련해서 중요한 내용들

  • 1번 pin에 전류가 흐르면 or 전압이 가해지면 E가 켜진다,
  • 2번 pin에 전류가 흐르면 or 전압이 가해지면 D가 켜진다
  • 3번은 C... 

소자가 정상적으로 작동하는 범위. 상온(25도)에서 테스트

  • Power dissipation/Total : 와트가 640이상 넘으면 탄다 (Watt = Voltage * Current)
  • Forward current : 일반적으로 전압을 가하면 흐르는 전류 (소비 전력)
  • Reverse voltage : 역으로 4V가 흐르면 망가진다
  • Operation temperature : 동작 가능 온도 범위
  • Storage temperature : 동작하지 않을 때 견딜 수 있는 온도 범위
  • Forward voltage / seg : 동작 전압

 

  • 소프트웨어적으로 문제가 없어도 온도에 의한 오류가 날 수 있으므로 동작 온도는 특히 신경을 써야 함
  • 버그는 하드웨어 / 소프트웨어적으로 모두 있을 수 있으므로 둘 다 신경 써야 함

 

- Led dislpay driver ic의 개념 이해 

FND 회로도

  • IK2102DW : Led Display Driver IC 
  • 이 LED 드라이버가 없으면 FND 제어시 코딩을 통해 A1, B1... 의 핀들 하나하나에 일일히 GPIO로 전압을 넣어줘야 함 -> 총 16개의 GPIO가 필요. 위의 사진처럼 FND가 2개 있으면 32pin이 필요 : 너무 핀이 많이 필요함

 

- 데이터 시트를 보기 전 회로도를 보고 동작 해석

  • 드라이버의 왼쪽 부분은 STM 칩과 연결되는 부분 : 5V가 VDD에 공급
  • SPI_MOSI, SPI_CLK, SPI_CS는 메인칩의 CS에 연결되어 있음
  • 전원 빼고는 위 3개의 핀이 ARM Core의 STM 칩에 연결되어 있음

 

  • 드라이버의 오른쪽 부분의 8개의 핀 (SG1 ~ SG8)은 우리가 제어해야 할 7segment와 연결되어 있음 (16개)
  • 7segment를 제어하기 위해 필요한 전압과 전류를 LED 드라이버가 흘려 보냄
  • GR1 ~ GR4 : SG1 ~ SG8의 전류는 두개의 FND에 흐르게 됨. 따라서 둘의 LED에 동시에 전류가 흐르게 되어 항상 같은 표현을 할 수 밖에 없음. GR1 ~ GR4는 이를 방지하는 역할로써 신호를 보낼 FND를 선택
  • ex) DIG1의 A를 키고 싶으면 SG1에 신호를 보내고 GR1에도 신호를 보냄

 

위처럼 데이터시프 없이 회로도만 보고서 동작 해석 가능

 

다음으로 해석할 부분

  • 위 부분들은 FND와 이어지지 않는 영역
  • 위의 3가닥 선만 STM 칩에 연결되어 있음 : 이 3가닥만 제어하면 FND를 제어할 수 있는 칩이다고 유추 가능

 

  • 결론 : 7segment의 각 LED에 필요한 전압과 전류가 있는데 그걸 일일히 다 공급하면 너무 많은 핀이 필요함 
  • 따라서 FND 제어 칩을 통해 공급

 

위의 가정을 데이터시트를 보며 확인. 근데 데이터시트를 그냥 보면 어려워서 이해하기가 어려움

내가 생각하는 개념이 맞는가 아닌가 정도를 확인해야 함 (결론은 위의 가정이 맞긴 함)

 

- 지금까지의 내용 정리

  • 목적 : 7segment 제어
  • 7segment 제어를 위해서는 LED각각 하나씩 있는 핀을 제어해야 함 (전압을 줘야 함)
  • 너무 많은 핀이 쓰이는 것을 방지하기 위해 LCD Driver로 FND의 핀들을 제어. 핀과 LED 드라이버의 핀이 1대1로 연결되어 있음 (LCD 드라이버에 전압, 전류를 넣어주면 됨).
  • 위 회로도의 7segment는 2개 : GR1, GR2가 각각의 segment에 연결되어 있어 제어할 segment 선택 가능
  • SG 0 ~ 13 : 핀이 총 13개까지 연결 가능
  • GR1 ~ 4 : 총 4개의 segment 연결 가능

 

- 실제로 FND module을 어떻게 제어하는가

  • 우리가 사용하는 것은 STM 칩. 이 칩 제어를 위해선 코드를 짜야 함.
  • STM 칩에서 LCD Driver를 어떻게 제어하는지 알아야 함. 그리고 코드를 어떻게 짜야 하는가?

 

  • STM 칩과 LCD Driver를 어떻게 연결하는가? (두 장치 간의 통신 방식이 뭔가) : Serial Interface로 연결
    • Serial : 직렬 
    • Interface : 서로 다른 두 시스템이 신호를 주고 받을 때의 접점

데이터 시트에서 확인 가능

 

데이터 시트의 위 그림을 통해 STM칩과 LCD Driver 간의 통신 방식이 SPI임을 알 수 있음

  • 위의 그림을 보고 SPI 통신 방식임을 알아야 함 : 배경 지식 필요 (데이터 시트에는 없는 내용)
    • 배경 지식 : 칩과 칩 사이에 통신하는 방법들 중 중요한 방식
      1. UART : Universal Asynchronous Receiver / Transmitter. 비동기 모드로써 사용되는 시리얼 통신으로 병렬 데이터를 직렬 방식으로 전환하여 데이터를 전송하는 방식. USART는 여기에 동기 신호를 추가적으로 사용
      2. RS232, RS485 : 시리얼 통신으로써 한번에 하나의 데이터를 전송. MPU와 외부 장치간의 연결처럼 통신거리가 먼 경우 주로 사용
      3. SPI : Serial Peripheral Interface. 1대 다수의 통신이 가능한 동기식 통신 방식으로 칩과 칩 사이 처럼 RS232에 비해 짧은 거리에서 통신하며 I2C에 비해 속도가 빠름. 통신하는 기기가 늘어날 수록 연결 선도 늘어난다는 단점이 있음
      4. I2C : Inter - Integrated Circuit. 2개의 선만으로 시리얼 통신을 함. SPI보다 상대적으로 속도가 느리다. 보통 센서 신호의 입력이나 제어용으로 많이 사용 
        1. I2C는 필립스에서 개발한 통신 방식인데, 이 등록상표명을 피하기 위해 Atmel등의 회사에서는 TWI(Two Wire Interface)라는 이름을 사용함. 두 인터페이스는 매우 유사하여 서로 대부분 호환이 됨
      5. TCP, UDP : Transmission Control Protocol, User Datagram Protocol. 전송 계층에서 사용하는 프로토콜로써, 목적 장치까지 전송한 패킷을 상위의 특정 응용 프로토콜에게 전달
        • 전송 계층이란 송신자와 수진자를 연결하는 통신 계층으로, 데이터의 전달을 담당함
        • 프로토콜 : 기기 간의 통신시 교환하는 데이터의 형식에 대해 상호 합의가 필요한데 이 형식을 규정한 것이 프로토콜이다. 즉 통신 규약 및 약속을 뜻한다
        • TCP는 속도보다 신뢰성이 더 중요할 때 사용하고 UDP는 신뢰성보다 속도가 더 중요할 때 사용
      6. CAN (사용 빈도 적음) : Controller Area Network. 차량 내의 장치들이 서로 통신하기 위해 설계된 표준 통신 규격. 연결할 모듈이 추가될 때 마다 연결 선을 추가해야 했던 UART의 단점을 보완하고자 개발됨. 통신 장치들을 병렬로 연결하여 각 장치들이 하나의 노드를 공유하게 함으로써 데이터를 주고 받음

 

- SPI 설명

위 그림의 왼쪽에는 STM 칩, 오른쪽에는 LED IC가 연결되어 있음

ex) 10 전송 = 0b1010

  • 위 그림에서 볼 수 있듯 통신의 최소 단위는 8bit : 0b00001010. 왼쪽부터 b0 ~ b7
  • 데이터를 보내기 위해선 우선 데이터를 보낸다는 신호인 STB 신호를 LOW로 줘야 함
  • 그리고 데이터 하나를 보낼 때 마다 Clock을 low로 떨어뜨러야 함. Clock 파형의 Edge 부분의 화살표가 데이터를 보내는 순간임을 의미ll
  • DI/O 그림의 의미 : 저 화살표 순간에 아래쪽이면 0, 위쪽이면 1임

 

* STM 칩에서 SPI를 설정만으로 데이터를 읽고 쓰고 하는게 가능함

GPIO Input 2개, Output 하나로 위의 내용들 구현 가능

 

- STM과 LED IC의 통신 방식(데이터를 보내는 방법)이 SPI인걸 알게 됨. 근데 어떤 데이터를 보내야 하는지는 정해져있지 않음.

  • 내가 LED를 제어하려 할 때 어떤 데이터를 보내야 하는가?  ex) A부분을 키려면 어떤 데이터를 보내야 하는가?
  • 1을 보내면 A가 켜짐, 2를 보내면 B가 켜짐 이런 식으로 정해진 규칙이 없음
  • 위와 같은 내용은 데이터시트 중 아래의 그림에 나와 있음

어떤 데이터를 어떤 규칙으로 보내야 하는가에 대한 내용

위의 개념들을 알아야 어떤 데이터를 어떻게 보내야 하는 지 알 수 있음 : 데이터 시트마다 다르므로 소프트웨어 개발자가 가장 신경써서 봐야 하는 부분

아직은 모르는 개념들이 많음 : 소스 코드를 구해서 보며 분석하는 것이 좋음

 

- 오늘의 결론 : 데이터 시트를 보는 방법은 목적에 의해 필요한 부분만 찾아서 보는 것. 내가 필요 없는 내용이면 넘기고 소프트웨어 영역의 내용이 필요한데 하드웨어 내용이면 넘기기

 

 

 

 

 

 

 


위 내용의 모든 출처는 유튜버 '[오제이 튜브]OJ Tube' 님께 있습니다.

https://www.youtube.com/watch?v=tWwiC0zxbvI&t=2472s