08MC95FG204_I2C_v11x

Similar documents
<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

슬라이드 1

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

SRC PLUS 제어기 MANUAL

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

CANTUS Evaluation Board Ap. Note

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

untitled

[8051] 강의자료.PDF

슬라이드 1

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

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

IoT FND8 7-SEGMENT api

1

Microsoft Word - ASG AT90CAN128 모듈.doc

PRO1_09E [읽기 전용]

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

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

MR-3000A-MAN.hwp

슬라이드 제목 없음

API 매뉴얼

MAX+plus II Getting Started - 무작정따라하기

T100MD+

<4D F736F F D20B1E2BCFAC0DAB7E1202D20454F435220B8F0B5E5B9F6BDBA20C5EBBDC5C1A6C7B020BBE7BFEBB9FD202D F302E646F63>

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

PowerPoint 프레젠테이션

API 매뉴얼

디지털공학 5판 7-8장

Chapter #01 Subject

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

USB3-FRM01 API 매뉴얼

歯설명서_020925_.PDF

Microsoft PowerPoint - polling.pptx

RVC Robot Vaccum Cleaner

Microsoft Word - Installation and User Manual_CMD V2.2_.doc

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Microsoft Word - FunctionCall

6 강남구 청담지구 청담동 46, 삼성동 52 일대 46,592-46,592 7 강남구 대치지구 대치동 922번지 일대 58,440-58,440 8 강남구 개포지구 개포동 157일대 20,070-20,070 9 강남구 개포지구중심 포이동 238 일대 25,070-25,

27집최종10.22

황룡사 복원 기본계획 Ⅵ. 사역 및 주변 정비계획 가. 사역주변 정비구상 문화유적지구 조성 1. 정비방향의 설정 황룡사 복원과 함께 주변 임해전지(안압지) 海殿址(雁鴨池)와 분황사 등의 문화유적과 네트워크로 연계되는 종합적 정비계획안을 수립한다. 주차장과 광장 등 주변

AN_0005B_UART

PRO1_16E [읽기 전용]

CPX-E-PB_BES_C_ _ k1

Chapter ...

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

UI TASK & KEY EVENT

CAN 통신

Microsoft Word doc

R50_51_kor_ch1

개요

Microsoft PowerPoint - 04-UDP Programming.ppt

Remote UI Guide

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

untitled

鍮뚮┰硫붾돱??李⑤낯

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

untitled

Microsoft Word - STM32 BxCAN.doc

USB3-DIO01


2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

Chap06(Interprocess Communication).PDF

CPX-E-SYS_BES_C_ _ k1

Mango220 Android How to compile and Transfer image to Target

MicrocontrollerAcademy_Lab_ST_040709

hd1300_k_v1r2_Final_.PDF

DSP_MON 프로그램 메뉴얼

ATmega128

2014밝고고운동요부르기-수정3

2005프로그램표지

歯FDA6000COP.PDF

제품소개 MODBUS Tester 는 MODBUS 프로토콜을사용하는산업장비테스트및점검하기위해 PC 를휴대및설치할필요없이쉽고빠르게장비와연결하여원하는작업을진행할수있도록휴대성을강조한 MODBUS 프로토콜테스트장치입니다. MODBUS Tester 에는 3 가지의기능이지원되며,

목차 1. 제품 소개 특징 개요 Function table 기능 소개 Copy Compare Copy & Compare Erase

PowerPoint 프레젠테이션

목차 제 1 장 inexio Touch Driver소개 소개 및 주요 기능 제품사양... 4 제 2 장 설치 및 실행 설치 시 주의사항 설치 권고 사양 프로그램 설치 하드웨

Microsoft Word ARM_ver2_0a.docx

슬라이드 1

Microsoft PowerPoint - o8.pptx

Microsoft Word - DTM-M300_Spec_V1_0.doc

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

0.1-6

BY-FDP-4-70.hwp

ATmega128 교재 - 8장 EEPROM.hwp

(SW3704) Gingerbread Source Build & Working Guide

Deok9_Exploit Technique

CPX-E-EC_BES_C_ _ k1

Microsoft Word - PEB08_USER_GUIDE.doc

Microsoft Word - Automap3

PowerPoint Presentation


TCP.IP.ppt

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

Microsoft PowerPoint - T1 ERS (Elevator Reservation System)SASD2.pptx

Microsoft Word - logic2005.doc

<BBEABEF7B5BFC7E22DA5B12E687770>

Á¦¸ñ¾øÀ½

<C6F7C6AEB6F5B1B3C0E72E687770>

Transcription:

MC95FG204 의 I 2 C Bus Application v1.0 : v1.0 v1.1 I2CMR 의 BIT2 로 master or slave mode 를설정하도록 f_master 제거함. 1. Introduction 이어플리케이션노트는 MC95FG204의 Multi-Master I 2 C Bus Application에대해설명한다. I 2 C Bus는 SCL, SDA 2 Wire로구성된 Synchronous 통신형태이며대기상태에서는 SCL, SDA가 High 상태를유지한다. 한개의 Master가다수의 Slave를제어할수있도록 Wired-AND logic 으로구성된다. 본응용에서는 Master 기능과 Slave 기능을동시에수행할수있는 Multi-Master 응용을소개하며 EEPROM 24C04 통신 Format을기준으로설명한다. EEPROM Write EEPROM Read 1.1 Master Write and Read Master는통신 Clock인 SCL을주관하여통신 Line의주인이되어 Slave에게명령을내릴수있다. 만약 SCL line이 Logic Low 상태로남아있으면 Master는 Clock 주도권을잃어버리고 Slave 상태로남는다. 이를 Arbitration Lost라하며 Multi-Master 통신망에서다른 Slave가 Clock 주도권을차지하여 Master가될수있는기회를제공한다. SRT는 I 2 C 통신의논리적인시작을의미하며전기적으로 SCL이 High인상태에서 SDA가 Low상태로전환하고 Setup Time이상동안유지되는것을의미한다. STP는 SCL이 Low인상태에서 SDA가 Low에서 High로전환될때통신 STOP함을의미한다. MAD는 Slave Address( 주소값 b7~b1) 이며, CMD(b0) 는읽기 (1)/ 쓰기 (0) 를지정한다.

ACK 는받는쪽에서보내는쪽으로정확하게받았음을지정하는것으로 9 th Clock 에서보내는 쪽에서는 SDA 단자를입력으로전환하여받는쪽에서의 ACK 신호를인식한다. 이는 하드웨어적으로실시간에이루어진다. 이렇게 8bit 의 Data 와 ACK 를합쳐 9bit 단위로통신하며 완료후인터럽트가걸린다. 아래 Read Write Frame 에서각,(comma) 후인터럽트가발생한다. SRT: Start Signal RST: Restart Signal (SDA가 High인상태에서다시 Start가발생할때 ) MAD: Main Slave Address (MSB 7bit) CMD: Data Direction Command Read (1) / Write (0) SAD: Sub Register Address (8bit) ACK: Acknowledge Signal (1bit) DATA: Data Byte (8bit) STP: Stop Signal Write: SRT MAD+CMD+ACK, SAD+ACK, DATA0+ACK, DATA1+ACK,,.STP Read: SRT MAD+CMD+ACK, SAD+ACK, RST MAD+CMD+ACK, DATA0+ACK,,STP 읽기는 Sub Register 주소쓰기후, Data 값읽기명령을새로보내어해당 Sub Register 의 값부터연속적으로읽어온다. 따라서 STOP 을하지말고 Restart 를수행하여 Read Command 보내어읽기전환하고본격적으로 Data 를읽는다. 1.2 Slave Receive and Transmit 초기화상태에서모든 I 2 C Device는 Slave상태를유지하며 SCL, SDA는 High (Free) 상태이다. SRT 신호가발생되고 Master가 First 9개 Clock을발생할때, Master가보내는 MAD+CMD 가운데 MAD값이자신의 Self Address와일치할경우 SCL Line을 Low 상태로 Master에게 Acknowledge ( 하드웨어적으로 ) 를알려줌과동시에 I 2 C 인터럽트가발생하여필요한소프트웨어적인일을수행한다. Slave 동작은반드시인터럽트에의한하드웨어적인도움을받아야만가능하다. 본 24C04 응용에서는 Slave 인터럽트의역할은 Master가지정한 SLAVE Address와 Command 주기, Sub Address주기를설정하는일을제외하고모두 Slave가 Master 요구한 Data 값을보내는역할이다. 1.3 MC95FG204 I 2 C Hardware I2CMR (I 2 C Mode Control Register, address 0xDA) 는 8bit 읽기 / 쓰기레지스터이며각 Bit 들을 의미는아래와같다. IIF(bit7) 는인터럽트가발생될때 1이된다. 이 bit는인터럽트서버루틴을발생하지않고일반루틴에서 I 2 C byte 송수신여부를확인하여처리할때이용되며사용후강제로지워야한다. IICEN(bit6) 은 I 2 C 하드웨어를 Enable 상태로만들고자할때 1을설정한다. RESET(bit5) 은 Internal Register 값을초기화할때 1을설정한다. INTEN(bit4) 은 I 2 C인터럽트를활성화하고자할때 1을설정한다.

ACKEN(bit3) 는하드웨어적인 Acknowledge 발생 ( 자동 ) 기능을활성화할때 1을설정한다. 일반적으로 1을설정하여 Acknowledge 신호가자동발생되도록하지만 Master가 Slave로부터값을읽어올때마지막 byte에서는 Acknowledge를발생하지않음으로써 Slave가더이상송신할필요없이통신을종료하도록알려주는기능으로이용되기도한다. STOP(bit1) 은 Master가 I 2 C Frame을종료하기위한신호를발생할때 1을설정한다. START(bit7) 는 Master가 I 2 C Frame을시작하기위한신호를발생할때 1을설정한다. 또한한 Frame간의정보를손상함이없이 Command만변경할때 STOP신호없이 RESTART 신호를발생할때도이용된다. I2CSR (I 2 C Status Register, address 0xDB) 는 8bit 읽기전용레지스터이며각 Bit 들을의미는 아래와같다. GCALL(bit7) 은 MAD값을 0x0? 로하는호출이발생할경우 1이된다. 이는 Master가다른모든 Slave를초기화하기위한 Command로사용되며모든 SLave들은 GCALL bit가인식되면현재의상황을종료하고 Slave mode상태로대기한다. TEND(bit6) 는 1byte 통신이완료된경우 1이된다. 인터럽터를사용하지않는 I 2 C 통신에서는 TEND bit를읽어 1byte 전송이완료되었는가를판단한다. 이 bit는향후 Master/Slave의상태를나타내는 ID bit로사용하도록하드웨어를수정할계획이다. STOP(bit5) 은 Master가 STP 신호를발생할때 Slave가 1이된다. STOP이발생하면 Slave 상태로초기화후대기한다. SSEL(bit4) 은 Master가보내는 MAD 값과자신의 Self Address값이일치되었을때 1이되며 Slave로서역할을할준비를한다. 만약 CMD가쓰기명령이면약속된값을 I2CDR에써넣어서 Master가읽어가도록한다. MLOST(bit3) 는 Master가 SCL을통해 Clock을보내는중다른 Slave가 SCL line을 Low로잡으면 Master에서 1이된다. 1이발생된 Master는 Clock의주도권을내놓고 Slave 상태로대기하여야한다. 이는 Multi Master 통신에서 Slave 상태로머물러있던다른 Master가 Clock 주도권을갖기위한수단이다. BUSY(bit2) 는 Clock이발생하여통신중이거나다른 Slave가 SDA line을 LOW상태로잡고있을때 1이된다. 이는 Master가한 Frame을보내기위한시작단계에서 BUS의상태를확인해보고자할때이용된다. 또한 bus상태가 Free하지못하고 Pending 여부를확인할때이용된다. TMODE(bit1) 는 Data의송수신방향을보여준다. Transmit(1)/Receive(0) RXACK(bit0) 는 Data를보낸쪽에서받은쪽이 Acknowledge신호를제대로발생했는가여부를확인하기위한 Bit이다. 9 th Clock에서정확하게 ACK 신호를발생하면 1이된다. I2CSCLLR (SCL Low Period Register, address 0xDC) 는 SCL Clock Speed 를설정하기위해 Low 구간의시간을지정한다. I2CSCLHR (SCL High Period Register, address 0xDC) 는 SCL Clock Speed 를설정하기위해 High 구간의시간을지정한다.

I2CSDAHR (SDA Hold Register, address 0xDE) 는 SRT, RST, STP 와같은 I 2 C start, stop 신호를 발생할때 SDA 가 Low 상태를유지하는구간을정의한다. I2CDR (I 2 C Data Register, address 0xDF) 는 8bit 통신 Data 읽기 / 쓰기를하는 Register 이다. I2CSAR (Self Address Register, address 0xD7) 는 Slave mode 에서자신의주소 (Slave Address) 를 지정하기위한레지스터이다. 2. Description 2.1 I 2 C Bus 초기화설정 MC95FG204 는 400KHz 고속통신 I 2 C 를지원하지만본예제에서는일반적인 I 2 C 통신을다룬다. I 2 C 초기화를위한 Peripheral Register 설정은다음과같다. void I2C_Initial(void) I2CMR = 0x20; // I2C clear I2CMR = 0x40; // I2C enable I2CMR = 0x50; // I2C interrupt enaable I2CSCLLR = 100; // SCL Speed is 40KHz@8MHz I2CSCLHR = 100; // I2CSDAHR = 50; // SDA hold time 6.5us@8MHz I2CAR = SELF_ADDRESS; // self address is 0xA0 I2CMR = IICEN+INTEN+ACKEN; // I2C interrupt enable EA = 1; // global interrupt enable I2C_Initial() 함수는 Program 시작할때또는오류가발생할때초기화수행한다. 2.2 I 2 C Bus Start I 2 C bus 하드웨어를초기화한상태에서 Master 로서송신 Frame 을수행하고자할때 I2C_Start() 함수를호출하면설정된값에따라 Data 를출력하게된다. *wi2c_post 는보낼 Data Pointer 이고, ri2c_mad 는 Main Slave Address 값이다. 실제보내기위한 Data 는 xtx_buffer[n] 에사전저장되어 있어야한다. void I2C_Start(void) wi2c_post = &xtx_buffer; // 보낼 Data 저장위치지정. xtx_buffer[0] = 0x83; xtx_buffer[1] = 0x23; // 보낼 Data[0] // 보낼 Data[1]

xtx_buffer[2] = 0x56; ri2c_count = 4; // 보낼 Data[2] // 3 byte 송신 I2CMR = 0x59; // start generation I2CDR = 0xA0; // I2CSR = 0xFF; // I2CMR = 0x04; // Master mode 예를들어 Master가 Slave(0xA0) 의 Register1(0x01)~Register3(0x03) 에각 0x83, 0x23, 0x56 이상 3 byte를준비하여보내고자한다면 xtx_buffer[0] 에 0x83, xtx_buffer[1] 에 0x23, xtx_buffer[2] 에 0x56을사전에저장하여야한다. 또한 ri2c_count에 3byte 보냄을선언한다. f_rd_eeprom, f_restart 는 24x04 EEPROM의통신특징을구분하기위해설정한 Bool Data이다. 2.3 Multi Master I 2 C Interrupt Subroutine MC95FG204 는하드웨어 I 2 C 기능을이용하여 Multi-Master I 2 C Bus 를구현할수있다. 다양한 I 2 C Format 의통신을간단하게지원하므로프로그램의유연성을높인다. 이는 void I2C_Int_Handler(void) interrupt 12 Byte itemp; // itemp = I2CSR; // if(i2csr & 0x00) // arbtration Lost(3), general call(7), STOP(5) I2C_Initial(); // if((i2cmr & 0x04)==0) // SSEL[4] (Slave) if(itemp & 0x10) // SSEL[4] (Slave) address matchded? if(itemp & 0x02) // I2CDR = *wi2c_post; // wi2c_post = &xtx_buffer; // *wi2c_post = I2CDR; // slave sub-address set if(itemp & 0x02) // slave transmit? I2CDR = *wi2c_post; // // *wi2c_post = I2CDR; // slave receive? // I2CSR = 0xFF; // // Master mode

if(itemp & 0x02) // TMODE[1] master transmit? if(itemp & 0x01) // RXACK ack in? rtx_count--; // ACK ok if(rtx_count) // I2CDR = *wi2c_post; // I2CSR = 0xFF; // // I2CMR = 0x7A; // STOP generation // I2C_Initial(); // ACK fail // master receive? rrx_count--; // last byte no ACK! if(rrx_count) if(rrx_count==1) I2CMR = 0x70; // last byte read no ACK! *wi2c_post = I2CDR; master receive I2CSR = 0xFF; I2CMR = 0x7A; // STOP generation end byte? I 2 C 하드웨어가물리적으로 Clock 을가동하고 Data Shifter 를움직여 Data 를송수신시작하는 시점은 I2CSR 에 0xFF 값을넣는순간부터수행된다.