슬라이드 1

Similar documents
슬라이드 1

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

슬라이드 1

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - es-arduino-lecture-03

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

hd1300_k_v1r2_Final_.PDF

Microsoft PowerPoint - Chapter 8_USART Serial Communication

SRC PLUS 제어기 MANUAL

1

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

CANTUS Evaluation Board Ap. Note

개요

2주차: 입출력 제어 복습

[8051] 강의자료.PDF

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

Microsoft Word - PEB08_USER_GUIDE.doc

2 Mitsubishi FX Series Computer Link MITSUBISHI FX SERIES COMPUTER LINK 시스템구성 시스템설정 사용예 사용예 사용예

BY-FDP-4-70.hwp

T100MD+

ARDUINO Open Physical Computing Platform 오탈자, 문의및보완이필요한내용은 으로알려주세요.

CAN-fly Quick Manual

(SW3704) Gingerbread Source Build & Working Guide

MicrocontrollerAcademy_Lab_ST_040709

Motor

그룹웨어와 XXXXX 제목 예제

Microsoft PowerPoint - AVR 시리얼 통신.ppt [호환 모드]

슬라이드 1

OSTSen-THL100 사용자설명서 Ver 1.1 Onsystech OSTSen-THL100 Ver1.1 1 of 8 Onsystech

PRO1_09E [읽기 전용]

ºÎ·ÏB

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

PowerPoint Presentation

MR-3000A-MAN.hwp

Microsoft Word _whitepaper_latency_throughput_v1.0.1_for_

untitled

Mango220 Android How to compile and Transfer image to Target

DSP_MON 프로그램 메뉴얼

untitled

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

RaspberryPi 시리얼통신 1 제 08 강 시리얼통신제어 시리얼통신시리얼모니터링루프백시리얼통신 Win. PC와의시리얼통신가상머신과의시리얼통신아두이노보드와의시리얼통신 KUT51보드와의시리얼통신

Microsoft Word - IRM9600x Spec.doc

프로토콜 Protocol 서로대화를하는사람을생각해보자. 서로의언어를이해함에있어다른언어끼리는대화가불가능하며, 같은언어라하더라도한사람의말의속도가너무빠르거나어려운어휘를사용하는경우에도알아듣기가어려워진다. 수화로대화하는경우라도수화라는정해진규칙을따라대화가가능하다. 또한멀리있는상대

<4D F736F F D20B1E2BCFAC0DAB7E1202D20454F435220B8F0B5E5B9F6BDBA20C5EBBDC5C1A6C7B020BBE7BFEBB9FD202D F302E646F63>

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서

고급 프로그래밍 설계

YV-150-S.CHINESE1.0-1

OSTSen-PIR100 사용자설명서 Ver 1.1 Onsystech OSTSen-PIR100 V1.1 1 of 8 Onsystech

슬라이드 1


슬라이드 제목 없음

Microsoft PowerPoint - es-arduino-lecture-08

DSP_MON 프로그램 메뉴얼

OSTSen-MOS100 사용자설명서 Ver 1.1 Onsystech OSTSen-MOS100 Ver of 8 Onsystech

- 2 -

歯메뉴얼v2.04.doc

4) CRC - 16bit MODBUS crc 4. MODBUS Exception Codes Code 01h 02h 03h 04h 05h 06h 10h 11h 12h 13h 14h Name ILLEGAL FUNCTION ILLEGAL DATA ADDRESS ILLEGA

MODBUS SERVO DRIVER( FDA7000 Series ) STANDARD PROTOCOL (Ver 1.00) 1

M16_32KIT_Manual.hwp

PowerPoint 프레젠테이션

Microsoft PowerPoint - RPino-GOGO_datasheet.pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint - 9.Serial.pptx

PowerPoint 프레젠테이션

-. Data Field 의, 개수, data 등으로구성되며, 각 에따라구성이달라집니다. -. Data 모든 의 data는 2byte로구성됩니다. Data Type는 Integer, Float형에따라다르게처리됩니다. ( 부호가없는 data 0~65535 까지부호가있는

슬라이드 1

목차 1. 개요 USB 드라이버 설치 (FTDI DRIVER) FTDI DRIVER 실행파일 USB 드라이버 확인방법 DEVICE-PROGRAMMER 설치 DEVICE-PROGRAMMER

Microsoft Word - EWKit-RS232.doc

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

LCD Monitor

Microsoft PowerPoint - ch03ysk2012.ppt [호환 모드]

API 매뉴얼

ConnectCore i.mx53 / Wi-i.MX53 Freescale i.mx53 Cortex A8 system-on-module 네트워크가가능한 i.mx53 ConnectCore는새로운프리스케일 i.mx53 Application 프로세서기반인고성능 32-bit S

CL100B_manual_kor_m.0.2.indd

한글사용설명서

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

PowerPoint 프레젠테이션

untitled

STM32F2xx 시리즈의특성 Core: ARM 32-bit Cortex -M3 CPU with Adaptive real-time accelerator (ARTAccelerator ) allowing 0-wait state execution performance fro

untitled

KR

Microsoft Word - ASG AT90CAN128 모듈.doc

(MHT-SB112\273\347\276\347\274\255.hwp)

- 이 문서는 삼성전자의 기술 자산으로 승인자만이 사용할 수 있습니다 Part Picture Description 5. R emove the memory by pushing the fixed-tap out and Remove the WLAN Antenna. 6. INS

Microsoft Word - WGM-447Xx9 Spec_Transceiver_.doc

PowerPoint 프레젠테이션

전자실습교육 프로그램

untitled

하나님의 선한 손의 도우심 이세상에서 가장 큰 축복은 하나님이 나와 함께 하시는 것입니다. 그 이 유는 하나님이 모든 축복의 근원이시기 때문입니다. 에스라서에 보면 하나님의 선한 손의 도우심이 함께 했던 사람의 이야기 가 나와 있는데 에스라 7장은 거듭해서 그 비결을

Microsoft PowerPoint - es-arduino-lecture-09

제품 설명

Microsoft PowerPoint - hw4.ppt [호환 모드]

<3130C0E5>

<BFC0B7A3C1F6C4B72DBBE7BFEBC0DABCB3B8EDBCAD5FC8AEC0E5BABB C7D1B1DB295F E6169>

PRO1_16E [읽기 전용]

<32B1B3BDC32E687770>

INDUCTION MOTOR 표지.gul

Microsoft PowerPoint - 4_Wii눈척.ppt [호환 모드]

Transcription:

임베디드시스템개론 : Arduino 활용 Lecture #10: 시리얼통신 (Serial Comm.) 2015. 5. 26 by 김영주

강의목차 시러얼통신개요 I2C 통신개요 I2C 통신실험 2

3 1. Serial Communication

아두이노통신 아두이노통신개요 아두이노 MCU 와 on-board 장치또는외부연결장치간의통신 통신프로토콜에따른데이터송수신을위해개별적인통신장치 ( 모듈 ) 을사용 외부와의통신을위해별도의통신장치가필요 MCU 내장또는외부확장통신장치등 통신모듈의지원여부에따른분류 : MCU 내장통신장치 ( 모듈 ) - I2C, SPI, UART 외부통신장치 ( 모듈 ) - USB, Ethernet, Wifi, Zigbee, Bluetooth, IR 등 4

시리얼통신 (1) 시리얼통신개요 장치간에비트단위로데이터를전송하는통신 비동기 (Asynchronous) & 동기 (Synchronous) 통신방식존재시리얼통신프로토콜 I2C(Inter-Integrated Circuit) SPI(Serial Peripheral Interface) UART(Universal Asynchronous Receive-Transmit) 5

시리얼통신 (2) 시리얼통신개요 : 비동기및동기전송비교 Asynchronous No Clock 정해진시간에맞추어전송신호를 HIGH/LOW 로설정하여데이터를표현 발신과수신을위해별도의선을사용 단지두개의장치간에통신하고자하고상호전송속도를같게설정되어있을때에유용 Synchronous With Clock clock 변화에맞추어전송신호를 HIGH/LOW 로설정하여데이터를표현 Clock 신호와전송방향별로별도의선을사용 일반적으로빠른전송속도가필요할때에유용 6

시리얼통신 (3) 시리얼통신개요 : 비동기및동기전송비교 7

8 2. UART(Universal Asynchronous Receiver/Transmitter)

UART (1) UART(Universal Asynchronous Receiver Transmitter) 대표적인비동기시리얼통신장치 정해진통신속도 (baud rate) 에맞추어병렬데이터를비트단위로직렬전송하고, 수신된직렬데이터를병렬데이터를변환하는기능을지원 기본적으로 Tx(Transmitter)/Rx(Receiver) 2 개의통신라인을사용 필요에따라 handshake 라인 (DTS/DTR) 을사용하기도함 별도의동기화메커니즘을사용하지않으므로통신하기위해서는송수신측에서동일한통신파라미터를설정하여야함. 통신속도 (Baud Rate) 9600~115200 bsp Start bit 0, 1, 2 Data bit 7, 8 Stop bit 0, 1 Parity bit none, odd, even 9

UART (2) 아두이노 UART Arduino Mega MCU(Atmega-2560) 에서는최대 4 개의 UART 장치를지원 Serial(pin0/pin1), Serial1(pin19/pin18), Serial2(pin17/pin16), Serial3(pin15/pin14) Arduino library 에서 UART 통신을위한 API 지원 Serial 내장객체 (Serial, Serial1, Serial2, Serial3) 통신메소드 begin(), end(), available(), read(), peek(), flush(), print(), println(), write(), SerialEvent() 참조 : http://arduino.cc/en/reference/serial 10

UART (3) RS-232 표준 (1) 비동기직렬통신에필요한전기적인신호특성 ( 전압, 타이밍등 ) 과기계적특성 ( 커넥터모양, 핀배치 ) 등모든사양을규정 미국 Electronic Industries Association (EIA) 에서정한표준 주로 PC 및통신장비의콘솔통신을위해사용하는직렬포트용 DB-9 커넥터의모양및핀배치표준도규정 송신신호 (TxD) 와수신신호 (RxD) 이외에도다른용도의여러신호들도정의함 데이터흐름제어 (flow control) 나반송파검출 (carrier detection) 등의다른기능은사용하지않고순수하게통신만하겠다면 TxD 와 RxD 두신호로충분 11

UART (4) RS-232 표준 (2) UART 가있으면비동기통신이가능하지만 UART 의송수신핀을 PC 의직렬포트 (RS-232 포트 ) 에바로연결할수는없다. RS-232 표준에서규정하고있는전압레벨은 TTL 호환 (TTL compatible) 이아니기때문 RS-232 표준은논리 1 에해당하는전압의범위를 -3 V ~ -15 V 로, 논리 0 에해당하는전압의범위를 +3 V ~ +15 V 로규정한다. 이런전압은일반디지털회로에서사용되는범위를벗어나기때문에 RS-232 표준을따르기위해서는 0 V ~ 3 V ( 또는 3.3 V 또는 5 V) 범위의신호를 RS-232 레벨신호로변환하고또그반대방향으로도전압을변환해주는전용회로가필요 이런역할을하는 IC 를 RS-232 트랜시버 (transceiver) 라고하며, Maxim 사의 MAX232 가대표적인예 12

13 3. I2C(IIC)

I2C (1) I2C(Inter-Integrated Circuit) Bus 데이터라인을공유하는동기시리얼통신버스하나의버스에 127 장치까지연결가능 1Mbps 전송속도까지가능간단한통신프로토콜이장점대부분의 MCU에 I2C 통신제어장치내장참조 : http://tronixstuff.files.wordpress.com/2010/10/nxp_i2c.pdf 14

I2C (2) I2C(Inter-Integrated Circuit) Bus 마이크로프로세서와저속주변장치사이의통신을위한용도로 Philips 에서개발한규격 TWI (Two Wire Interface) I2C 버스는양방향오픈드레인선인 SCL (serial clock) 과 SDA (serial data) 로이루어져있으며마스터 - 슬레이브형태로동작한다. SCL 은통신동기를위한클럭선, SDA 는데이터선 마스터는 SCL 로동기를위한클럭을출력하며, 슬레이브는 SCL 로출력되는클럭에맞추어 SDA 를통해데이터를출력하거나입력받는다. SDA 한선으로만데이터를주고받기때문에반이중 (half duplex) 통신만가능 15

I2C (3) I2C(Inter-Integrated Circuit) Bus SCL 선과 SDA 선은모두오픈드레인이므로두선에는각각풀업저항을연결해주어야한다. 16

I2C (4) I2C(Inter-Integrated Circuit) Bus 17

I2C (4) I2C(Inter-Integrated Circuit) Bus 통신프로토콜 18

19 4. I2C 통신실험

DS1307 RTC 를이용한시계 (1) 참고 Sites http://learn.adafruit.com/ds1307-real-time-clock-breakoutboard-kit tronixstuff.wordpress.com/tutorials Ch. 20 & 21 Arduino Wire Library 20

DS1307 RTC 를이용한시계 (2) DS1307 IC 21

DS1307 RTC 를이용한시계 (3) 회로도 22

DS1307 RTC 를이용한시계 (4) 회로구성 23

DS1307 RTC 를이용한시계 (5) DS1307 Pulse 출력 (1) Arduino Wire Library 사용레지스터 #07 설정하여펄스출력 24 /* DS1307 Square-wave machine Used to demonstrate the four different square-wave outputs from Maxim DS1307 See page nine of data sheet for more information John Boxall - tronixstuff.wordpress.com */ #include "Wire.h" #define DS1307_I2C_ADDRESS 0x68 // each I2C object has a unique bus address, the DS1307 is 0x68 void setup() { Wire.begin(); } void sqw1() // set to 1Hz { Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0x07); // move pointer to SQW address Wire.write(0x10); // sends 0x10 (hex) 00010000 (binary) Wire.endTransmission(); }

DS1307 RTC 를이용한시계 (6) DS1307 Pulse 출력 (2) void sqw2() // set to 4.096 khz { Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0x07); // move pointer to SQW address Wire.write(0x11); // sends 0x11 (hex) 00010001 (binary) Wire.endTransmission(); } void sqw3() // set to 8.192 khz { Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0x07); // move pointer to SQW address Wire.write(0x12); // sends 0x12 (hex) 00010010 (binary) Wire.endTransmission(); } 25 void sqw4() // set to 32.768 khz (the crystal frequency) { Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0x07); // move pointer to SQW address Wire.write(0x13); // sends 0x13 (hex) 00010011 (binary) Wire.endTransmission(); }

DS1307 RTC 를이용한시계 (7) DS1307 Pulse 출력 (3) void sqwoff() // turns the SQW off { Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0x07); // move pointer to SQW address Wire.write(0x00); // turns the SQW pin off Wire.endTransmission(); } 26 void loop() { sqw1(); delay(5000); sqw2(); delay(5000); sqw3(); delay(5000); sqw4(); delay(5000); sqwoff(); delay(5000); }

DS1307 RTC 를이용한시계 (8) DS1307 시계출력 (1) #include "Wire.h" #define DS1307_I2C_ADDRESS 0x68 // Convert normal decimal numbers to binary coded decimal byte dectobcd(byte val) { return ( (val/10*16) + (val%10) ); } // Convert binary coded decimal to normal decimal numbers byte bcdtodec(byte val) { return ( (val/16*10) + (val%16) ); } 27

DS1307 RTC 를이용한시계 (9) DS1307 시계출력 (2) 28 // 1) Sets the date and time on the ds1307 // 2) Starts the clock // 3) Sets hour mode to 24 hour clock // Assumes you're passing in valid numbers void setdateds1307(byte second, // 0-59 byte minute, // 0-59 byte hour, // 1-23 byte dayofweek, // 1-7 byte dayofmonth, // 1-28/29/30/31 byte month, // 1-12 byte year) // 0-99 { Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0); Wire.write(decToBcd(second)); // 0 to bit 7 starts the clock Wire.write(decToBcd(minute)); Wire.write(decToBcd(hour)); Wire.write(decToBcd(dayOfWeek)); Wire.write(decToBcd(dayOfMonth)); Wire.write(decToBcd(month)); Wire.write(decToBcd(year)); Wire.write(00010000); // sends 0x10 (hex) 00010000 (binary) to control register - turns on square wave Wire.endTransmission(); }

DS1307 RTC 를이용한시계 (10) DS1307 시계출력 (3) 29 // Gets the date and time from the ds1307 void getdateds1307(byte *second, byte *minute, byte *hour, byte *dayofweek, byte *dayofmonth, byte *month, byte *year) { // Reset the register pointer Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0); Wire.endTransmission(); Wire.requestFrom(DS1307_I2C_ADDRESS, 7); // A few of these need masks because certain bits are control bits *second = bcdtodec(wire.read() & 0x7f); *minute = bcdtodec(wire.read()); *hour = bcdtodec(wire.read() & 0x3f); // Need to change this if 12 hour am/pm *dayofweek = bcdtodec(wire.read()); *dayofmonth = bcdtodec(wire.read()); *month = bcdtodec(wire.read()); *year = bcdtodec(wire.read()); }

DS1307 RTC 를이용한시계 (11) DS1307 시계출력 (4) void setup() { byte second, minute, hour, dayofweek, dayofmonth, month, year; Wire.begin(); Serial.begin(9600); // Change these values to what you want to set your clock to. // You probably only want to set your clock once and then remove // the setdateds1307 call. second = 0; minute = 54; hour = 14; dayofweek = 4; dayofmonth = 9; month = 5; year = 10; setdateds1307(second, minute, hour, dayofweek, dayofmonth, month, year); } 30

DS1307 RTC 를이용한시계 (12) DS1307 시계출력 (5) 31 void loop() { byte second, minute, hour, dayofweek, dayofmonth, month, year; getdateds1307(&second, &minute, &hour, &dayofweek, &dayofmonth, &month, &year); Serial.print(hour, DEC);// convert the byte variable to a decimal number when being displayed Serial.print(":"); if (minute<10) { Serial.print("0"); } Serial.print(minute, DEC); Serial.print(":"); if (second<10) { Serial.print("0"); } Serial.print(second, DEC); Serial.print(" "); Serial.print(dayOfMonth, DEC); Serial.print("/"); Serial.print(month, DEC); Serial.print("/"); Serial.print(year, DEC);

DS1307 RTC 를이용한시계 (13) DS1307 시계출력 (6) Serial.print(" Day of week:"); switch(dayofweek){ case 1: Serial.println("Sunday"); break; case 2: Serial.println("Monday"); break; case 3: Serial.println("Tuesday"); break; case 4: Serial.println("Wednesday"); break; case 5: Serial.println("Thursday"); break; case 6: Serial.println("Friday"); break; case 7: Serial.println("Saturday"); break; } // Serial.println(dayOfWeek, DEC); delay(1000); } 32

DS1307 RTC 를이용한시계 (14) RTC 라이브러리설치 http://learn.adafruit.com/ds1307-real-time-clock-breakout-boardkit/overview https://github.com/adafruit/rtclib DS1307 IC 를이용한 RTC 기능을구현한라이브러리 RTClib 압축파일을다운로드하여풀고 RTClib 라는이름으로아두이노라이브러리디렉토리에설치한다. 33

DS1307 RTC 를이용한시계 (15) RTC 예제실행 LCD 출력확장 34