컴퓨터네트워크설계 청주대학교전자공학과...

19
컴퓨터 네트워크 설계 청주대학교 전자공학과 한철수 I 2 C 통신 제어

Upload: others

Post on 25-Oct-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

컴퓨터 네트워크 설계

청주대학교 전자공학과

한철수

I2C 통신제어

Page 2: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

목차

2

• I2C 통신의 개요

• I2C 통신의 동작 방식

• I2C 통신 라이브러리함수

• I2C 방식의 온도 센서

• 제어 연습

Page 3: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

I2C 통신

3

• I2C(Inter-Integrated Circuit) 통신은 1980년대 초반 필립스에서 제안한 근거리 통신 방식임.‒ 마이크로컨트롤러와각종필립스 IC 간의통신을위해제안됨.

‒ I2C, IIC라고도 표기함.

• 2개의 입출력선을 이용하여 통신이 이루어지기 때문에,TWI(Two Wire Interface)라고도 불림.

Page 4: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

I2C 통신의 구성

4

• I2C 통신을 위한 장치는 마스터(Master)와 슬레이브(Slave)로 나뉨.‒ 하나의마스터에다수의슬레이브가연결될수 있음.

‒ 구별을위해각 슬레이브마다고유한주소 값을갖도록함.

‒ 슬레이브의 주소 값을 이용해 마스터는 한번에 하나의 슬레이브와 통신을수행함.

‒ SCL(Serial Clock)• 마스터에서슬레이브로클럭 신호를전송함.

‒ SDA(Serial Data)• SCL의클럭 신호에 맞추어 마스터와슬레이브간에 데이터를송수신함.

Page 5: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

I2C 통신의 장단점

5

• I2C 통신의 장점‒ 2개의입출력핀을이용해장치들사이의반이중통신이가능함.

‒ 시스템동작중에도 I2C 통신 버스에새 장치의추가및 제거가가능함.

‒ SCL핀의 클럭 신호에 맞추어 동작하는 동기방식으로서 정확한 데이터의 송수신이가능함.

‒ 하드웨어구성이간단하며대화형동작이가능함.

• I2C 통신의 단점‒ 데이터전송속도가비교적저속임.

• 일반 모드: 최대 100kHz, 고속 모드: 최대 400kHz

• 따라서 저속데이터 통신 또는 장치의동작 모드 설정 등에 적합함.

‒ 전이중통신이불가능함.• 마스터와슬레이브가동시에 데이터를송신할수 없음.

‒ 슬레이브의 주소 값이 7 bit로 제한되어 있기 때문에, 최대 128개까지슬레이브장치를동시에연결할수 있음.

• 슬레이브장치들 사이에주소 충돌 가능성이높음.

Page 6: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

I2C 통신의 동작 방식

6

1) 마스터는 SCL과 SDA 핀이 모두 High 상태일 때, SDA를 Low로 바꾸어슬레이브에게통신시작을알림.

2) 마스터는 우선 통신하고자 하는 슬레이브의 주소를 SDA를 통해 송신함.

3) 마스터는 해당 주소의 슬레이브와 통신(데이터의 송신 또는 수신)을수행함.

4) 마스터는 SCL이 High이고 SDA가 Low인 상태에서, SDA를 High로바꾸어슬레이브에게통신종료를알림.

Page 7: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

라즈베리 파이의 I2C 통신 핀

7

• 라즈베리파이에는 2개의 I2C 통신 채널이있음.‒ I2C0

‒ I2C1

I2C1

I2C0

Page 8: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

wiringPiI2C.h

8

• 와이어링파이에서 제공하는 I2C 통신 라이브러리

• 주요 함수‒ int wiringPiI2CSetup(const int devId)

• 슬레이브의주소를입력하여 통신을초기화함.

• fd를 반환함. 단, 초기화가실패했다면 -1을 반환함.

‒ int wiringPiI2CRead(int fd);• fd의 슬레이브로부터데이터를수신함.

‒ int wiringPiI2CWrite(int fd, int data);• fd의 슬레이브에데이터를송신함.

‒ int wiringPiI2CWriteReg8(int fd, int reg, int data);

‒ int wiringPiI2CWriteReg16(int fd, int reg, int data);• 슬레이브의장치 레지스터 reg에 8 또는 16 bit의 값을전송함.

‒ int wiringPiI2CReadReg8(int fd, int reg);

‒ int wiringPiI2CReadReg16(int fd, int reg);• 슬레이브의장치 레지스터 reg로부터 8 또는 16 bit의 값을 수신함.

Page 9: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

온도 센서

9

• 온도 센서는 현재 기온을 측정하여알려주는 센서임.

• 온도 센서가 온도 값을 아날로그 전압 형태로 출력하는 경우에는 ADC가 필요함.‒ 마이크로컨트롤로의 ADC 핀에연결하여사용함.

• I2C 방식의 온도 센서를 이용하면 ADC가 없는 라즈베리 파이에서도 기온을 측정할수 있음.

• TMP102 온도 센서‒ I2C 방식의온도 센서로서내부에 12 bit의 ADC를 내장하고있음.

‒ 측정된온도를디지털값으로변환하여 I2C 방식으로전송해줌.

Page 10: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

TMP102 온도 센서의 주소 값 설정

10

• ADD0핀의 연결 상태에 따른 TMP102 온도 센서의주소 값

(0x48)(0x49)(0x4a)(0x4b)

Page 11: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

TMP102 온도 센서의 내부 구조

11

Page 12: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

TMP102 온도 센서의 레지스터 지정

12

(0x00)(0x01)(0x02)(0x03)

Page 13: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

TMP102 온도 센서의 읽기 타이밍도

13

마스터가보냄.

마스터가보냄.

마스터가보냄.

슬레이브가보냄.

슬레이브가보냄.

Page 14: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

키트의 온도 센서 회로 연결 (1/3)

14

온도 센서의 ADD0핀(4번 핀)을 그라운드에연결했으므로슬레이브의주소는 0x48임.

Page 15: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

키트의 온도 센서 회로 연결 (2/3)

15

Page 16: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

키트의 온도 센서 회로 연결 (3/3)

16

• wPi 8번 핀이 SDA.1을, 9번 핀이 SCL.1을 위한 핀임.

Page 17: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

예제

17

Page 18: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

수신한 2바이트 데이터의 처리

18

• 수신한 2바이트 데이터

• 수신 함수로 얻어진 데이터

• 수신 데이터를 알맞게성형

Data Byte 1

Data Byte 2

Data Byte 1Data Byte 2

T3 … T0 0 0 0 0 T11 … T4

T3 … T0T11 … T4

Page 19: 컴퓨터네트워크설계 청주대학교전자공학과 한철수cis.cju.ac.kr/wp-content/lecture-materials/computer-networks/I2C 통신 제어.pdf · 온도센서의레지스터지정

질문

19

Q&A