Presentation is loading. Please wait.

Presentation is loading. Please wait.

임베디드 프로그래밍 Lecture #04 2017. 10. 16.

Similar presentations


Presentation on theme: "임베디드 프로그래밍 Lecture #04 2017. 10. 16."— Presentation transcript:

1 임베디드 프로그래밍 Lecture #04

2 목 차 I2C 통신 테스트 TMP102 디지털 온도 센서 인터페이스

3 동기식 직렬 통신 (1) 라즈베리파이 동기식 직렬 통신 ADC Sensors RaspberryPi I2C / SPI
Actuator ADC I2C / SPI DAC

4 동기식 직렬 통신 (2) I2C 직렬 통신

5 동기식 직렬 통신 (3) SPI 직렬 통신

6 TMP102 디지털 온도 센서 (1) TMP102 Breakout Board TMP102 IC
Low-power digital temperature sensor SMBus™/Two-Wire(I2C) Serial Interface 12-bit ADC Resolution ℃/count Accuracy: 0.5°C (–25°C to +85°C) Low Quiescent Current: 10mA Active (max) / 1mA Shutdown (max) Voltage Supply Range: 1.4V to 3.6V

7 TMP102 디지털 온도 센서 (2) TMP102 Breakout Board TMP102 IC

8 TMP102 디지털 온도 센서 (3) TMP102 Breakout Board TMP102 IC
cf) (1) Pointer register : 8 bits (2) Other registers : 16 bits, Little-endian order

9 TMP102 디지털 온도 센서 (4) TMP102 Breakout Board TMP102 Temperature Register
Normal Mode Config. Reg. EM bit = 0 12-bit resolution Extended Mode Config. Reg. EM bit = 1 13-bit resolution

10 TMP102 디지털 온도 센서 (5) TMP102 Breakout Board
TMP102 Temperature Register – data format

11 TMP102 디지털 온도 센서 (6) TMP102 Breakout Board
TMP102 Temperature Register – data format

12 TMP102 디지털 온도 센서 (7) TMP102 Breakout Board
TMP102 High/Low Limit Register Alert 동작의 경계 온도 설정

13 TMP102 디지털 온도 센서 (8) TMP102 Breakout Board
TMP102 Configuration Register (1) Conversion Rate(CR) - Sampling speed (2) Extended Mode(EM) - Sampling resolution(12/13 bits) 선택

14 TMP102 디지털 온도 센서 (9) TMP102 Breakout Board
TMP102 Configuration Register (3) Alert(AL) – read only (4) Polarity(POL) (5) Termostat Mode(TM) TM = 0 TM = 1

15 TMP102 디지털 온도 센서 (10) TMP102 Breakout Board
TMP102 Configuration Register (6) Fault Queue(F1/F0) A fault condition exists when the measured temperature exceeds the user-defined limits set in the THIGH and TLOW registers. The number of fault conditions required to generate an alert may be programmed using the fault queue. The fault queue is provided to prevent a false alert as a result of environmental noise.

16 TMP102 디지털 온도 센서 (11) TMP102 Breakout Board
TMP102 Configuration Register (7) Shutdown Mode(SM) (8) One-Shot/Conversion-Ready(OS) (9) Conversion Rate(R1/R0=‘11’)

17 TMP102 디지털 온도 센서 (12) TMP102 Breakout Board
TMP102 Addressing : ADD0 pin

18 TMP102 디지털 온도 센서 (13) TMP102 Breakout Board

19 TMP102 디지털 온도 센서 (14) TMP102 Breakout Board : JK전자
ADD0을 Vcc에 연결 => 0x49

20 TMP102 디지털 온도 센서 (15) TMP102 Breakout Board : 라즈베리파이와의 연결 RaspberryPi
TMP102 BB pin1(3.3V) Vcc pin39(GND) GND pin3(SDA) SDA pin4(SCL) SCL ADD0 pin11(GPIO17) Alert

21 TMP102 디지털 온도 센서 (16) TMP102 Breakout Board : I2C 주소 확인
# sudo i2cdetect –y 1

22 TMP102 디지털 온도 센서 (17) TMP102 Breakout Board : I2C 입출력 테스트
# sudo i2cget –y 1 0x49 0x00 w // read current temperature # sudo i2cget –y 1 0x49 0x01 w // read config. register # sudo i2cget –y 1 0x49 0x02 w // read low limit temperature register # sudo i2cget –y 1 0x49 0x03 w // read high limit temperature register # sudo i2cset –y 1 0x49 0x01 0xb060 w // set config. Register to enable EM mode

23 TMP102 BB 테스트 (1) 테스트 프로젝트 생성 NetBeans IDE를 이용한 테스트 프로그램 작성 및 테스트
프로젝트명: TMP102_Test 프로젝트 속성 설정에서 라이브러리 추가 lib 디렉토리 생성 dio.jar 파일을 lib 디렉토리로 복사 프로젝트 속성에서 dio.jar 라이브러리 추가

24 TMP102 BB 테스트 (2) I2C 인터페이스 패키지 복사
PCF8591BB_Test 프로젝트로 부터 I2C 인터페이스 패키지를 “source packages” 내로 복사 i2c_dev package I2c_dev.drivers package

25 TMP102 BB 테스트 (3) I2C 인터페이스 패키지 확장 (1)
i2c_dev.I2CUtils 클래스에 short 타입 데이터 출력 메소드 추가 public static void writeShort(I2CDevice device, byte cmd, int value) { ByteBuffer txBuf = ByteBuffer.allocateDirect(3); txBuf.put(0, cmd); txBuf.put(1, (byte)((value >> 8) & 0x00FF)); txBuf.put(2, (byte)(value & 0x00FF)); try { device.write(txBuf); } catch (IOException ex) { System.out.println("WARNING: " + ex.getMessage()); }

26 TMP102 BB 테스트 (4) I2C 인터페이스 패키지 확장 (2)
i2c_dev.TMP102 Enumeration 클래스 추가

27 TMP102 BB 테스트 (5) I2C 인터페이스 패키지 확장 (3)
i2c_dev.drivers.TMP102Device 클래스 추가

28 TMP102 BB 테스트 (6) 장치 테스트 클래스 작성 tmp102_test.TMP102_Test 클래스 구현

29 TMP102 BB 테스트 (7) 설정 파일 추가 및 수정 “lib” 디렉토리에 장치 레지스트리 파일 및 보안 정책 파일 추가
build.xml 파일 수정

30 TMP102 BB 테스트 (8) 설정 파일 – 장치 레지스트리 파일 # RPi3 header pins
1 = deviceType: gpio.GPIOPin, pinNumber:4, name:GPIO4, predefined:true 2 = deviceType: gpio.GPIOPin, pinNumber:7, name:GPIO7, mode:4, direction:1, predefined:true 3 = deviceType: gpio.GPIOPin, pinNumber:17, name:GPIO17, predefined:true 4 = deviceType: gpio.GPIOPin, pinNumber:18, name:GPIO18, mode:4, direction:1, predefined:true 5 = deviceType: gpio.GPIOPin, pinNumber:22, name:GPIO22, predefined:true 6 = deviceType: gpio.GPIOPin, pinNumber:23, name:GPIO23, mode:2, direction:0, predefined:true 7 = deviceType: gpio.GPIOPin, pinNumber:24, name:GPIO24, mode:2, direction:0, predefined:true 8 = deviceType: gpio.GPIOPin, pinNumber:25, name:GPIO25, mode:4, direction:1, predefined:true 9 = deviceType: gpio.GPIOPin, pinNumber:27, name:GPIO27, predefined:true 100 = deviceType: uart.UART, controllerName:ttyAMA0, name:ttyAMA0, baudRate:19200, dataBits:8, parity:0, stopBits:1, flowControl:0, predefined:true 300 = deviceType: spibus.SPIDevice, name:SPI0.0, controllerNumber:0, address:0, csActive:1, wordLength:8, clockFrequency:500000, clockMode:1, bitOrdering:1, predefined:true gpio.GPIOPin = initValue:0, controllerNumber:0, direction:0, mode:2, trigger:1, predefined:true uart.UART = baudRate:19200, parity:0, dataBits:8, stopBits:1, flowControl:0, predefined:true

31 TMP102 BB 테스트 (9) 설정 파일 – 보안 정책 파일 // policy for DIO framework grant {
// Very permissive permissions permission jdk.dio.DeviceMgmtPermission "*:*", "open"; permission jdk.dio.gpio.GPIOPinPermission "*:*"; permission jdk.dio.i2cbus.I2CPermission "*:*"; permission jdk.dio.spibus.SPIPermission "*:*"; };

32 TMP102 BB 테스트 (10) build.xml 파일 수정

33 TMP102 BB 테스트 (11) 프로젝트 속성 설정 수정 Sources / Run 속성 수정

34 TMP102 BB 테스트 (12) 원격 실행 원격 디버깅


Download ppt "임베디드 프로그래밍 Lecture #04 2017. 10. 16."

Similar presentations


Ads by Google