[데이터시트 보는 요령]
- 많이 보는 사람이 더 잘할 수 밖에 없다.
- 데이터시트는 한글로된 시트는 거의 존재하지 않는다. 영어로 되어있으니, 영어를 잘 하는것이 유리하다. (전문영어, 논리영어)
<1_ 목적을 세우자>
- 내가 해야되는 정확한 목표를 세우고, 그 목표애 맞는 지식을 습득한다.
- 내가 결국에 만들어내려는 부분에 필요한 부분을 본다.
- 내가 필요없는 영역은 굳이 볼 필요가 없다. (그런 부분은 넘어간다)
<오늘의 목표>
- Led display driver ic를 통해서 7세그먼트 LED Displays를 제어해보자.
- 위의 부품 하나를 제어하겠다. (7세그먼트를 제어 하겠다.)
- 어떻게 제어할 것인가? 라는 그림을 그리는 것 까지가 오늘의 목표이다.
<장치들의 개념을 이해하자>
- 일단, 데이터 시트 없이 이게 뭐하는 장치인지 대충 파악해보고 상상해본다.
- 7세그먼트가 어떻게 되어있을까?를 생각한다. (7세그먼트가 무엇인가에 대해서 먼저 공부를 해본다.)
- 데이터시트없이 개념들을 파악해본다.
- 데이터시트를 본다.
- DESCRIPTION을 읽어본다.
- 데이터시트는 장치 이름을 구글에 치면 자료가 나온다.
- SND-620이라는 데이터시트를 찾고자 한다면 위와 같이 검색하면 구할 수 있다.
-
여기서 중요한것은 이 장치의 개념을 잡는 것이다.
-
영어가 잘 안되는 사람은 파파고를 이용해서 영어를 쳐봐야한다.
-
목적은 LED를 제어하는 것인데, 여기서 데이터시트를 읽다가 목적에 부합하지 않는 전문용어가 등장할 경우에는 굳이 알 필요가 없다. (화학 용어 등. 화학적인 반응을 이용해서 LED를 제어할 경우)
-
뭘 하는 장치인지는 대충 알겠다. 그런데 이것을 어떻게 키는 것일까?
- 데이터시트를 볼때 저 그림이 중요한 것이다.
- pin숫자가 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 이렇게 적혀있다.
- 그리고 LED들어오는 부분에 A, B, C, D, E, F, G 이렇게 되어있다는 것을 확인할 수 있다.
- 1번 핀에 어떠한 전류가 흐르면 E 가 켜지겠다는 것을 알 수 있다.
- 이러한 원리를 파악해야한다.
<Led display driver ic를 왜 사용했는가?>
- 아까 이야기한 FND(Flexible Numeric Display)가 표시한 부분이다.
- 표시한 부분이 LCD 드라이버이다.
- IK2102DW가 LCD 칩인데, 이게 어떻게 연결되어있는가?
<우리가 LCD 드라이버가 없다면, FND하나를 어떻게 제어하는가?>
- 하나하나 GPIO로 전압을 넣어주면 된다.
- 그림처럼 STM32보드의 핀 번호에 연결을 한 후, 내가 프로그램으로 GPIO를 1,2,3,4번을 켠다.
- 여기서 문제는 모든 번호를 켜게 된다면, GPIO가 8개가 필요하다.
- GPIO핀이 너무 많이 필요하다.
- 위의 전원 빼고는 3개의 핀이 ARM코어의 STM칩에 연결이 되어있는 것이다.
- 왼쪽으로 STM보드에 3개의 핀이 연결되고, 오른쪽으로 세그먼트 16핀과 2개의 핀이 연결된다.
- SG1에 전류를 그냥 흘려보내면 A1과 A2에 둘다 전류가 들어가서 두개의 불빛이 동시에 켜져버리게 된다.
- 그래서 존재하는 것이 밑에 다는 GR1, GR2 이다.
- SG1에 전압을 주고 GR1에 전압을 주면 A1이 켜지겠구나를 알 수 있다.
<STM칩에서 드라이버를 어떻게 제어하는가?>
- 우리가 결국 해야하는 것은 코드를 어떻게 짜는가 하는 것이다.
- STM칩과 LED인터페이스는 시리얼인터페이스로 연결이 된다는 것을 알 수 있다.
<과연 어떻게 통신이 되는가?>
- 위와 같은 그리림을 보면 어떻게 통신이 되는지 알 수 있다.
- 이 그림을 보면 이게 SPI통신이구나 라는 것을 알아야한다.
<백지식이 필요하다.>
-
어떤 칩과 칩 사이에 통신하는 방법
-
방법이 여러가지가 있다.
-
최소한 임베디드 개발자라면 알아야하는 통신 방법이 있다.
-
첫번째 : Uart
-
두번쨰 : Rs232, Rs485
-
세번째 : SPI
-
네번째 : I2c
-
다섯번째 : TCP, UDP
-
위의 통신방식은 내가 임베디드개발자라면 반드시 알아아햔다.
-
위의 그림을 보고 SPI통신방식 이라는 것을 알아야한다.
- 핀이 3개 (STB, DI/O, CLK)가 있는데 오른쪽에는 LED IC가 연결되고 왼쪽에는 STM이 연결되는 것이다.
- CLOCK이 있는데 상승 edge에 input이나 output을 보내고 있다.
<내가 10을 보내고 싶을 경우>
- 8개이다. 최소단위는 8비트이다.
- 그런데 내가 보내고 싶은 것은 10이다.
- 내가 보내고 싶은 10을 보내려면 00001010이 된다.
- 이렇게 된다면 우리가 보내게될 것은 00001010이다.
- 00001010을 보내면 10을 보낼 수 있는 것이다.
<어떻게 보내는가?>
- 너가 데이터를 보내고 싶다면 보낸다는 신호를 줘라. 그게 STB이다.
- 이것은 GPIO개념으로 보면 된다.
- 처음에 HIGH였는데 LOW로 떨어진다.
- 처음에 HIGH였다가 만약 데이터를 보내고 싶다면 LOW로 떨어뜨린다.
- CLOCK을 내보내는데 기본값이 HIGH로 있고 만약 데이터 하나를 보내고싶다면 LOW로 한번 떨어뜨리고 HIGH로 보내라.
- 데이터를 보내는 타이밍에 화살표가 적혀있다.
- 저 화살표에 맞는 시점에 데이터를 보내라는 것이다.
- 저 지점에 너가 데이터 0을 보내고 싶다면, 저 지점에 DI/O가 LOW가 되어야 한다.
- 즉, CLOCK이 올라가는 시점이 DI/O가 LOW여야한다.
-
만약 CLOCK이 올라갈때 DI/O가 HIGH라면, 1이 보내진다.
-
이러한 것을 잘 보면 GPIO OUTPUT, INPUT으로 다 구현이 가능하다.
-
우리가 SPI통신을 할때 STM칩에 SPI 설정 만으로도 데이터를 읽고 쓰는게 가능하는 고유의 기능이 있다.
-
그게 아니더라도 GPIO를 통해서 OUTPUT 2개와 INPUT1개를 통해서 구현이 가능하다.
<특정 데이터를 보내려면 어떻게 할까?>
- SPI는 데이터를 보내는 방법이다.
- 그런데 어떤 데이터를 보낼지를 정하는 것은 SPI에 없다.
- 10을 보내는 방법은 SPI에 정의되어있으나, 내가 LED를 제어할때 어떤 데이터를 보내야하는지는 정의되어있지 않다.
- 이러한 의문을 푸는 것은 데이터시트에 정의되어있다.
- FUNCTIONAL DESCRIPTION에 나와있다.
<결론>
- 데이터시트를 보는 방법은 목적에 의해서 필요한것만 땡겨서 보는 것이 가장 맞는 방법이다.
- 내가 데이터시트를 볼때 하나하나 빠져들어서 보는 것이 아니라, 목표에 맞게 필요한 부분만 찾아서 보는 것이 맞는 것이다.
- 데이터시트를 볼때 필요한 최소한의 필요 지식들이 있다.
- 데이터시트를 보기 전에 회로도만 보고도 상상이 어느정도 가능하다.
- 개념을 이해할때 내가 알 필요가 있는 영역인지 잘 보자.
- 내가 SW구현만 해도 된다면 데이터시트를 볼때 굳이 하드웨어 영역을 알 필요가 없다.
- 내가 원하는 목표를 통해 가면서 그림을 그려가면서 연결을 시켜서 읽어가자.
https://www.youtube.com/watch?v=tWwiC0zxbvI
재밌게 봤습니다 좋은 글 감사합니다