KR19980030788A - I²c 버스의 데이터 전송 장치 및 방법 - Google Patents

I²c 버스의 데이터 전송 장치 및 방법 Download PDF

Info

Publication number
KR19980030788A
KR19980030788A KR1019960050266A KR19960050266A KR19980030788A KR 19980030788 A KR19980030788 A KR 19980030788A KR 1019960050266 A KR1019960050266 A KR 1019960050266A KR 19960050266 A KR19960050266 A KR 19960050266A KR 19980030788 A KR19980030788 A KR 19980030788A
Authority
KR
South Korea
Prior art keywords
data
bus
address
sda
data line
Prior art date
Application number
KR1019960050266A
Other languages
English (en)
Other versions
KR0181596B1 (ko
Inventor
정성학
Original Assignee
배순훈
대우전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 배순훈, 대우전자 주식회사 filed Critical 배순훈
Priority to KR1019960050266A priority Critical patent/KR0181596B1/ko
Publication of KR19980030788A publication Critical patent/KR19980030788A/ko
Application granted granted Critical
Publication of KR0181596B1 publication Critical patent/KR0181596B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0016Inter-integrated circuit (I2C)

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Small-Scale Networks (AREA)

Abstract

본 발명은 I2C 버스상의 다중 마스터(Multi-Master) 환경에서 데이터를 전송하는 데이터 전송 장치 및 방법에 관한 것으로, 특히 버스 사용권이 포기(Arbitration Loss)된 경우 즉시 슬레이브로 동작하여 마스터로부터 전송되는 데이터를 수신하는 데이터 전송 장치 및 방법에 관한 것이다.
본 발명은 버스 사용권이 상실된 경우 마스터에서 I2C 버스로 전송된 어드레스와 자신의 어드레스를 비교하고 동일하면 바로 슬레이브로 전환하여 마스터의 요구에 따라 데이터를 처리한다.
따라서 본 발명은 I2C 버스 상에 다수의 마스터가 존재하여 버스 사용권의 상실이 발생했을 때 빠르게 마스터에서 슬레이브로 전환되므로 전송 효율을 높이는 효과가 있다.

Description

I2C 버스의 데이터 전송 장치 및 방법
본 발명은 I2C 버스상의 다중 마스터(Multi-Master) 환경에서 데이터를 전송하는 데이터 전송 장치 및 방법에 관한 것으로, 특히 버스 사용권이 포기(Arbitration Loss)된 경우 즉시 슬레이브로 동작하여 마스터로부터 전송되는 데이터를 수신하는 데이터 전송 장치 및 방법에 관한 것이다.
일반적으로 I2C 버스는 도1에 도시한 바와 같이 각 부분(A, B, C, D), 예를 들어 CPU, 메모리, I/O 기기간의 데이타 전송을 위해 사용하는 데이타 선로로, 2개의 선, 즉 데이타와 클럭을 각각 전송하는 2개의 선으로 통신이 가능하다. 또한, I2C 버스에 연결된 기기는 소프트웨어적으로 접근이 가능하고 다중 마스터가 동시에 같은 버스에 존재할 수 있다. 즉, I2C 버스에 연결된 각 부분(A, B, C, D)은 클럭을 발생하게 되면 모두 마스터가 될 수 있다.
예를 들어, 한 부분(A)이 클럭을 발생하여 마스터가 되면 나머지 부분(B, C, D)은 슬레이브가 되고, 다른 한 부분(B)이 클럭을 발생하여 마스터가 되면 나머지 부분(A, C, D)은 슬레이브가 되고, 또 다른 한 부분(C)이 클럭을 발생하여 마스터가 되면 나머지 부분(A, B, D)은 슬레이브가 되고, 또 다른 한 부분(D)이 클럭을 발생하여 마스터가 되면 나머지 부분(A, B, C)은 슬레이브가 된다.
또한, I2C 버스는 100Kbps에서 400Kbps까지 데이타 전송이 가능하며 캐패시터가 400pF을 초과하지 않는 한도내에서 다수의 기기(A, B, C, D)가 동일 버스에 연결될 수 있다.
I2C 버스는 2개의 라인, 즉 데이타를 전송하는 하나의 데이타 라인(SDA)와 클럭을 전송하는 하나의 클럭 라인(SCL)으로 이루어진다. 따라서 마스터에서 클럭 라인(SCL)을 통해 클럭을 전송하고 테이타 라인(SDA)을 통해 데이터와 어드레스를 전송하면 슬레이브에서는 클럭 라인(SCL)을 통해 전송된 클럭에 동기되어 데이타 라인(SDA)을 통해 전송된 데이터와 어드레스를 수신하게 된다.
종래의 I2C 버스를 이용한 데이터 전송 장치는 도2에 도시한 바와 같이 장치 전체의 동작을 제어하는 CPU(101), 상기 CPU(101)의 제어에 따라 시작 조건과 종결 조건을 발생시켜 데이터 라인(SDA)과 클럭 라인(SCL)을 통해 전송하는 시작 조건/종결 조건 발생부(102), 상기 CPU(101)의 제어에 따라 데이터 라인(SDA)과 클럭 라인(SCL)을 통해 데이터를 전송하고 타 장치로부터 전송되는 데이터를 처리하는 데이터 처리부(104), 및 상기 CPU(101)의 제어에 따라 장치와 I2C 버스를 통해 전송되는 어드레스를 비교하여 비교 결과를 상기 데이터 처리부(104)로 출력하는 어드레스 비교부(103)로 구성된다.
이와 같이 구성되는 종래의 I2C 버스의 데이터 전송 장치에서 이루어지는 데이터 송수신 동작을 도3을 참조하여 설명한다. 즉 다수의 마스터가 존재하는 I2C 버스에서 하나의 마스터가 데이터를 전송하고자 하는 경우를 도 3 및 도 4를 참조하여 설명한다.
마스터로 동작하기 위해서는 클럭을 발생시켜야 한다. 이를 위해 시작 조건/종결 조건을 발생하여야 한다. 즉, 데이터를 전송하려면 CPU(101)에서 시작 조건/종결 조건 발생부(102)를 동작시켜 시작 조건을 발생하도록 한다(120).
시작 조건은 도 3에 도시한 바와 같이 클럭 라인(SCL)을 통해 전송되는 클럭이 '1'인 상태에서 데이타 라인(SDA)이 '1'에서 '0'으로 천이하는 경우이고, 종결 조건은 클럭 라인(SCL)을 통해 전송되는 클럭이 '1'일때 데이타 라인(SCL)을 통해 전송되는 데이타가 '0'에서 '1'로 천이하는 경우이다.
이와 같이 시작 조건 검출부(102)에서 시작 조건을 I2C 버스의 클럭 라인(SCL)과 데이터 라인(SDA)을 통해 전송한후에는 어드레스를 전송하게 된다(121). 즉, CPU(101)의 제어에 따라 데이터를 전송하고자하는 장치에 해당하는 어드레스를 데이터 처리부(104)에서 I2C 버스의 데이터 라인(SDA)을 통해 전송하게 된다.
이와 같이 어드레스를 전송한후에는 어드레스에 포함된 읽기/쓰기 데이터에 따라 읽기/쓰기를 수행한다(122). 즉, 어드레스에 포함된 읽기/쓰기 데이터가 읽기를 나타내면 슬레이브에서 데이터를 읽어와서 데이터 처리부(104)에서 읽어온 데이터를 처리하도록 하고, 어드레스에 포함된 읽기/쓰기 데이터가 쓰기를 나타내면 데이터 처리부(104)에서 슬레이브로 데이터를 전송하도록 한다.
이와 같이 마스터의 제어에 따라 슬레이브에서 데이터를 수신하거나 슬레이브에 데이터를 전송한후에는 위의 종결 조건을 발생하여 I2C 버스의 사용을 종결한다(123). 즉, CPU(101)의 제어에 따라 시작 조건/종결 조건 발생부(102)에서 도3에 도시한 바와 같이 종결 조건을 발생하여 I2C 버스를 통해 전송하므로써 데이터의 전송을 마친다.
그러나 종래의 I2C 버스를 이용한 데이터 전송 장치는 마스터가 버스 사용권을 상실했을 경우에, 특히 그 마스터가 다른 마스터에서 지정한 슬레이브인 경우에는 데이터의 재전송이 필요하다.
즉, 두 개의 장치가 동시에 시작 조건을 발생하는 경우에 두 개의 장치중에서 하나의 장치만이 마스터가 되어 I2C 버스를 사용하게 되는데, 이때 버스 사용권을 획득하지 못하고 상실한 장치는 버스 사용권을 획득한 장치의 데이터 전송이 완료된후에 재전송을 수행해야 한다.
특히, 버스 사용권을 획득하지 못하고 상실한 마스터가 버스 사용권을 획득한 마스터에 의해 지정된 슬레이브인 경우에도 재전송이 필요하다.
이와 같은 경우를 도 1을 참조하여 설명하면 다음과 같다.
장치(A)가 장치(B)를 슬레이브로 지정하고 데이터 전송을 수행하려고 시작 조건을 발생시킴과 동시에 장치(B)가 장치(C)를 슬레이브로 지정하고 데이터 전송을 수행하려고 시작 조건을 발생시킬 때 시작 조건은 동일하므로, 장치(A, B)는 모두 마스터로써 어드레스를 전송하게 된다.
즉, 장치(B)의 어드레스가 '1000000'이고, 장치(C)의 어드레스가 '1100000'인 경우 장치(A)는 장치(B)와의 데이터 전송을 위해 장치(B)에 해당하는 어드레스'1000000'를 데이터 라인(SDA)을 통해 전송하게 되고 장치(B)는 장치(C)와의 데이터 전송을 위해 장치(C)에 해당하는 어드레스'1100000'를 전송하게 된다. 그러면 I2C 버스의 데이터 라인(SDA)에서 충돌이 발생하게 되고 데이터 라인(SDA)에서는 어드레스 '1000000'를 선택하게 된다. 왜냐하면 I2C 버스는 와이어드 앤드(Wired AND)이므로 데이터 라인(SDA)에서 두 개의 데이터, 즉 '1'과 '0'이 전송되는 경우에는 '0'의 데이터가 선택되게 된다. 따라서 7비트의 어드레스 중에서 첫 번째 비트인 '1'이 전송된후 두 번째 비트'0'과 '1'이 전송되면 '0'이 선택되어 전송되고 '1'을 전송하는 장치(B)는 마스터로서 버스 사용권을 상실하게 된다.
이때, 장치(B)는 슬레이브로 동작해야 하는데 바로 슬레이브로의 전환이 어려우므로 장치(A)에서는 장치(B)로의 데이터 전송을 위해 재시도를 해야 한다.
따라서 종래의 I2C의 데이터 전송 장치는 버스 사용권 상실로 발생되는 재전송으로 인해 I2C 버스를 사용하는 시간이 길어지게 되어 전송 효율이 떨어지는 문제점이 있었다.
상기 문제점을 개선하기 위한 본 발명은 I2C 버스에서 각 마스터간의 데이터 전송시 버스 사용권 상실이 일어난 경우 전송된 어드레스를 점검하고 바로 슬레이브로 전환하여 재전송으로 발생되는 버스 사용 시간을 줄이기 위한 I2C 버스의 데이터 전송 장치 및 방법을 제공함에 그 목적이 있다.
도 1a는 일반적인 I2C 버스의 구조도
도 1b는 종래의 I2C 버스의 데이터 전송 장치의 구성도
도 2는 시작 조건 및 종결 조건을 설명하기 위한 신호 파형도
도 3은 도 2의 동작을 설명하기 위한 흐름도
도 4는 본 발명에 의한 I2C 버스의 데이터 전송 장치의 구성도
도 5a는 도 5의 어드레스 비교부의 세부 구성도
도 5b는 도 5의 버스 사용권 점검부의 세부 구성도
도 5c는 도5의 종결 조건 검출부의 세부 구성도
도 6은 본 발명에 의한 I2C 버스의 데이터 전송 방법의 흐름도
도면의 주요 부분에 대한 부호의 설명
201 : 제어부202 : 시작 조건/종결 조건 발생부
203 : 어드레스 비교부204 : 데이터 처리부
205 : 버스 사용권 점검부206 : 종결 조건 검출부
211 : 어드레스 레지스터212 : 쉬프트 레지스터
213, 220, 221 : 비교기215 : 배타적 오아 게이트
상기 목적을 달성하기 위해 본 발명에 의한 I2C버스의 데이터 전송 장치는 I2C 버스의 데이타 라인과 클럭 라인을 통해 데이터 전송의 시작과 종결 상태를 나타내는 시작 조건 및 종결 조건을 발생하는 시작 조건/종결 조건 발생부; 상기 I2C 버스의 데이타 라인과 클럭 라인을 통해 데이터를 전송하고 수신된 데이터를 처리하는 데이터 처리부; 상기 시작 조건/종결 조건 발생부에서 출력되는 신호에 따라 상기 데이터 처리부에서 출력되는 데이터와 상기 I2C 버스의 데이타 라인을 통해 수신되는 데이터를 비교하여 I2C 버스 사용권의 상실 여부를 점검하는 버스 사용권 점검부; 상기 시작 조건/종결 조건 발생부와 상기 데이터 처리부를 제어하고 상기 버스 사용권 점검부의 출력에 따라 마스터에서 슬레이브로 전환하도록 제어하는 제어부; 상기 제어부의 제어에 따라 I2C 버스의 데이터 라인을 통해 수신되는 어드레스를 자신의 어드레와 비교하여 상기 제어부로 인터럽트 신호를 출력하는 어드레스 비교부; 및 상기 I2C 버스의 데이터 라인과 클럭 라인을 통해 전송되는 신호를 입력으로 데이터 전송의 종결 상태를 나타내는 종결 조건을 검출하여 상기 데이터 처리부로 출력하는 종결 조건 검출부를 포함하여 구성됨을 특징으로 한다.
또한, 상기 목적을 달성하기 위해 본 발명에 의한 I2C 버스의 데이터 전송 방법은 I2C 버스의 데이타 라인(SDA)과 클럭 라인을 통해 데이터 전송의 시작 상태를 나타내는 시작 조건과 데이타를 전송하는 시작 조건 및 데이타 전송 단계; 상기 전송된 데이타와 상기 I2C 버스의 데이터 라인을 통해 수신되는 데이타를 비교하여 버스 사용권 상실 여부를 판단하는 버스 사용권 상실 판단 단계; 상기 판단 결과 버스 사용권을 상실한 경우에는 자신의 어드레스와 상기 I2C 버스의 데이터 라인을 통해 전송되는 어드레스를 비교하는 어드레스 비교 단계; 상기 어드레스 비교 결과 어드레스가 동일하지 않은 경우에는 상기 시작 조건 및 데이터 전송 단계로 진행하여 재시도하는 재시도 단계; 및 상기 어드레스 비교 결과 어드레스가 동일한 경우에는 슬레이브로 전환하여 마스터의 요구에 따라 데이터를 처리하는 데이터 처리 단계에 의해 수행됨을 특징으로 한다.
이하 첨부한 도면을 참조하여 본 발명의 실시예를 상세히 설명한다.
본 발명에 의한 I2C 버스의 데이터 전송 장치는 도5에 도시한 바와 같이 시작 조건/종결 조건 발생부(202), 버스 사용권 점검부(205), 제어부(201), 어드레스 비교부(203), 데이터 처리부(204), 및 종결 조건 검출부(206)로 구성된다.
상기 시작 조건/종결 조건 발생부(202)는 제어부(201)의 제어에 따라 I2C 버스의 데이타 라인(SDA)과 클럭 라인(SCL)을 통해 데이터 전송의 시작과 종결 상태를 나타내는 시작 조건 및 종결 조건을 발생한다.
상기 데이터 처리부(204)는 제어부(201)의 제어에 따라 상기 I2C 버스의 데이타 라인(SDA)과 클럭 라인(SCL)을 통해 데이터를 전송하고 수신된 데이터를 처리한다.
상기 버스 사용권 점검부(205)는 상기 시작 조건/종결 조건 발생부(202)에서 출력되는 신호에 따라 상기 데이터 처리부(204)에서 출력되는 데이터와 상기 I2C 버스의 데이타 라인(SDA)을 통해 수신되는 데이터를 비교하여 I2C 버스 사용권의 상실 여부를 점검하여 상기 제어부(201)로 버스 사용권 상실시 인터럽트를 출력한다.
상기 제어부(201)는 CPU로 이루어져 상기 시작 조건/종결 조건 발생부(202)와 상기 데이터 처리부(204)를 제어하고 상기 버스 사용권 점검부(205)의 출력에 따라 마스터에서 슬레이브로 전환하도록 제어한다.
상기 어드레스 비교부(203)는 상기 제어부(201)의 제어에 따라 I2C 버스의 데이터 라인(SDA)을 통해 수신되는 어드레스를 자신의 어드레스와 비교하여 상기 제어부(201)로 인터럽트 신호를 출력한다.
상기 종결 조건 검출부(206)는 상기 I2C 버스의 데이터 라인(SDA)과 클럭 라인(SCL)을 통해 전송되는 신호를 입력으로 데이터 전송의 종결 상태를 나타내는 종결 조건을 검출하여 상기 데이터 처리부(204)로 출력한다.
이와 같이 구성되는 본 발명에 의한 I2C 버스의 데이터 전송 장치는 버스 사용권 포기 또는 상실이 일어난 경우에 마스터가 즉시 슬레이브로 전환되어 다른 마스터가 전송하는 데이터를 받고 다른 마스터로 데이터를 전송할 의무가 있는지를 판별하기 위해서 다른 마스터가 전송한 어드레스를 점검해야 하는데, 이러한 과정을 설명하면 다음과 같다.
데이터의 전송을 위해 먼저 제어부(201)에서 상기 시작 조건/종결 조건 발생부(202)를 제어하여 상기 시작 조건/종결 조건 발생부(202)에서 시작 조건을 발생하도록 한다. 즉, 도 3에 도시한 바와 같이 클럭 라인(SCL)과 데이터 라인(SDA)으로 신호를 출력하여 클럭 라인(SCL)이 '1'인 상태에서 데이터 라인(SDA)이 '1'에서 '0'으로 천이하도록 한다.
이와 같이 시작 조건을 전송한후에는 제어부(201)의 제어에 따라 데이터 처리부(204)에서 데이터 라인(SDA)를 구동시켜 어드레스에 해당하는 데이터를 전송하게 된다. 이때, 버스 사용권 점검부(205)에서는 데이터 라인(SDA)을 통해 수신되는 데이터와 상기 데이터 처리부(204)로부터 데이터 라인(SDA)으로 출력되는 데이터를 비교하여 버스 사용권이 상실되었는지를 판단하게 된다.
즉, 버스 사용권 점검부(205)에서 하나의 장치가 구동하는 데이터의 상태와 실제의 데이터 라인(SDA)의 상태의 동일 여부를 검사한다. 이때, 동일하다면 현재까지는 버스 사용권을 점유하고 있는 것이다. 또한, 구동 데이터와 실제 데이터 라인(SDA)의 상태가 다르면 버스 사용권을 상실한 것으로 판단하고 버스 사용권을 포기해야 한다. 또한, 데이터 라인(SDA)에 타 장치가 인지 신호(ACKNOWLEDGE)를 구동한 경우에는 버스 사용권을 포기하고 나중에 재시도를 해야 한다.
이와 같이 버스 사용권 점검부(205)에서 버스 사용권 상실을 검출하게 되면 상기 제어부(201)로 버스 사용권 상실을 알리는 인터럽트를 출력하게 된다.
한편, 데이터 라인(SDA)으로 전송하는 전송 비트의 수가 8비트 미만인 경우 버스 사용권을 포기해야 하면 현재 데이터 라인의 어드레스가 지기 자신의 어드레스와 동일한지에 대해 검토가 있어야 한다. 이를 위해 8비트 이하의 데이터 전송 도중 버스 사용권을 포기해야 하는 경우가 발생하면 제어부(201)에서 어드레스 비교부(203)를 구동시킨다.
어드레스 비교부(203)에서는 하나의 장치가 구동하는 데이터와 실제 데이터가 달리지는 시점 바로 전까지의 데이터 라인(SDA)의 데이터를 버퍼에 저장해놓고 달라지는 시점 부터의 데이터를 데이터 라인(SDA)의 입력으로 사용하여 전송되는 어드레스를 발생시키고, 이를 자기 자신의 어드레스와 비교한다. 비교 결과 전송된 어드레스와 자신의 어드레스가 동일하면 제어부(201)로 인터럽트 신호를 출력한다.
이때, 마스터의 지정 동작 방법, 즉 읽기/쓰기 데이터를 판별하여 인터럽트 발생시 제어부(201)로 인터럽트 신호와 같이 전송하게 된다. 즉, 읽기/쓰기 데이터는 1비트로 이루어져서 어드레스 전송후에 바로 전송되는데 어드레스가 7비트로 이루어지는 경우에는 바로 전송되는 8번째 비트가 읽기/쓰기 데이터가 된다.
어드레스 비교부(203)의 어드레스 비교 결과 동일한 어드레스로 인터럽트 신호가 출력되면 제어부(201)에서는 인터럽트 처리 함수를 마스터의 지정 조건, 즉 읽기/쓰기 조건에 따라서 데이터를 처리하도록 데이터 처리부(204)를 제어한다. 즉, 제어부(201)의 제어에 따라 일 장치를 마스터에서 슬레이브로 전환하고 데이터 처리부(204)에서는 마스터인 타장치의 요구에 따라 읽기인 경우 데이터 라인(SDA)과 클럭 라인(SCL)을 이용하여 전송되는 8비트의 데이터를 입력으로 사용하여 데이터를 출력하고, 쓰기인 경우 마스터로 부터 데이터 라인(SDA)과 클럭 라인(SCL)을 통해 전송되는 데이터를 수신하여 자기 장치, 즉 일장치에 쓰게 된다.
다시말해서 읽기인 경우에는 슬레이브로 전환된 일장치의 데이터 처리부(204)에서 클럭 라인(SCL)이 하이 레벨인 상태에서 데이터 라인(SDA)을 통해 타장치인 마스터로 데이터를 전송하게 되고, 쓰기인 경우에는 마스터의 제어에 따라 마스터로부터 클럭 라인(SCL)과 데이터 라인(SDA)을 통해 전송되는 데이터를 슬레이브로 전환된 일장치에 데이터 처리부(204)의 동작에 따라 쓰게 된다.
인터럽트 처리 함수에는 인터럽트가 발생하기전인 응용 프로그램으로 환원하기 전에 소위 이벤트 루틴(Event Routine)이라고 불리는 특정한 루팅을 수행하여 전송하거나 전송된 데이터를 간단하게 처리하도록 한다.
이와 같이 데이터 처리부(204)의 데이터 처리후에 종결 조검 검출부(206)에서 종결조건이 검출되면 데이터 처리부(204)의 동작을 중단시킨다. 즉, 종결 조건 검출부(206)에서는 클럭 라인(SCL)이 '1'인 상태에서 데이터 라인(SDA)이 '0'에서 '1'로 변하는 시점을 검출하여 데이터 처리부(204)로 출력한다.
또한, 어드레스 비교부(203)의 어드레스 비교 결과 동일한 어드레스가 아니면 재시도를 수행할 수 있도록 제어부(201)에서 제어하게 된다.
한편, 버스 사용권 점검부(205)는 버스 사용권에 대한 포기 또는 상실 여부를 데이터를 전송하고 종결 조건을 전송할때까지 계속 수행해야 한다.
다음으로, 도 6, 도 7, 및 도 8을 참조하여 본 발명을 구성하는 어드레스 비교부(203), 버스 사용권 점검부(205), 및 종결 조건 검출부(206)의 세부 구성 및 동작을 설명한다.
상기 어드레스 비교부(203)는 도 6에 도시한 바와 같이 자신의 어드레스를 저장하는 어드레스 레지스터(211), 상기 I2C 버스의 데이터 라인(SDA)을 통해 수신되는 어드레스를 쉬프트시켜 출력하는 쉬프트 레지스터(212), 및 상기 어드레스 레지스터(211)로부터 출력되는 어드레스와 상기 어드레스 레지스터(211)에 저장된 어드레스를 비교하여 상기 제어부(201)로 출력하는 비교기(213)로 구성된다.
이와 같이 구성되는 어드레스 비교부(203)의 동작을 설명한다.
버스 사용권을 상실한 경우 어드레스 비교부(203)는 비교 동작을 수행하게 된다. 즉, 어드레스 비교부(203)에서는 데이터 처리부(204)로부터 데이터 라인(SDA)으로 버스 사용권 상실 시점까지 전송된 데이터와 이후의 데이터 라인(SDA)의 상태에 따라 다른 마스터가 자기 자신을 슬레이브로 지정했는가를 검사하게 된다.
쉬프트 레지스터(212)에서는 제어부(201)의 제어에 따라 시작 조건 발생 이후 데이터 라인(SDA)으로 전송된 데이터와 데이터 라인(SDA)의 상태를 저장하고 쉬프트시켜 비교기(213)로 출력한다. 한편, 어드레스 레지스터(211)에는 자신의 어드레스가 저장되어 있어 어드레스 비교 동작이 수행되어 쉬프트 레지스터(212)에서 전송된 데이터가 비교기(213)로 출력되면 자기 자신의 어드레스를 비교기(213)로 출력하게 된다.
비교기(213)에서는 어드레스 레지스터(211)로부터 출력되는 자기 자신의 어드레스와 쉬프트 레지스터(212)로부터 출력되는 데이터 라인(SDA)으로 전송된 어드레스를 비교하여 동일한 경우에는 타 마스터가 자기 자신을 슬레이브로 지정한 것으로 판단하여 제어부(201)로 인터럽트 신호를 출력하게 된다.
한편, 어드레스 비교부(203)에서 마스터의 지정 조건을 검출하여 읽기/쓰기 동작을 제어부(201)로 알리기도 하는데, 이는 어드레스 레지스터(211)에 자기 자신의 어드레스와 함께 특정 동작 조건, 예를 들어 읽기 조건에 해당하는 데이터를 저장하고 있도록하여 비교기(213)에서 쉬프트 레지스터(212)로부터 출력되는 마스터의 지정 조건 신호와 비교하여 이루어지도록 한다.
예를 들어, 어드레스 레지스터(211)에 읽기 동작 조건으로 '1'을 저장한 경우 쉬프트 레지스터(212)에서 '1'이 출력되면 마스터의 지정 조건이 읽기가 되는 것이고, 쉬프트 레비스터(212)에서 '0'이 출력되면 마스터의 지정 조건이 쓰기가 되는 것이다.
상기 버스 사용권 점검부(205)는 도 7에 도시한 바와 같이 상기 데이터 처리부(204)에서 I2C 버스의 데이타 라인(SDA)을 통해 출력되는 데이터와 상기 I2C 버스의 데이타 라인(SDA)을 통해 수신되는 데이터를 입력으로 배타적 논리합하는 배타적 오아 게이트(215)로 구성된다.
상기 데이터 처리부(204)에서 I2C 버스의 데이타 라인(SDA)을 통해 출력되는 데이터와 상기 I2C 버스의 데이타 라인(SDA)을 통해 수신되는 데이터가 동일한 경우에는 배타적 오아 게이트(215)에서 '0'을 출력하게 되고, 상기 데이터 처리부(204)에서 I2C 버스의 데이타 라인(SDA)을 통해 출력되는 데이터와 상기 I2C 버스의 데이타 라인(SDA)을 통해 수신되는 데이터가 동일하지 않은 경우에는 배타적 오아 게이트(215)에서 '1'을 출력하여 인터럽트를 발생하므로써 제어부(201)로 버스 사용권의 상실을 알리게 된다.
또한, 상기 종결 조건 검출부(206)는 도 8에 도시한 바와 같이 상기 I2C 버스의 클럭 라인(SCL)을 통해 전송되는 신호에 따라 인에이블되어 상기 데이터 라인(SDA)을 통해 전송되는 신호와 '0'을 비교하는 비교기(220); 및 상기 I2C 버스의 클럭 라인(SCL)을 통해 전송되는 신호에 따라 인에이블되어 상기 비교기(220)의 출력 신호와 상기 데이터 라인(SDA)을 통해 전송되는 신호를 비교하여 상기 데이터 처리부(204)로 출력하는 비교기(221)로 구성된다.
이와 같이 구성되는 종결 조건 검출부(206)의 동작을 설명한다.
I2C 버스의 클럭 라인(SCL)을 통해 전송되는 클럭이 '1'인 경우 비교기(220, 221)가 인에이블된다.
이때, 종결 조건을 검출하기 위해 I2C 버스의 데이타 라인(SDA)을 통해 전송되는 데이타와 '0'을 비교기(220)에서 비교하여 출력한다.
여기서, I2C 버스의 데이타 라인(SDA)을 통해 전송되는 데이타가 '0'인 경우에는 비교기(220)에서 '1'을 출력하게 되고 비교기(220)에서 출력된 신호는 다시 비교기(221)에서 I2C 버스의 데이타 라인(SDA)을 통해 전송되는 데이타와 비교되어 데이터 처리부(204)로 출력되게 된다.
여기서, I2C 버스의 데이타 라인(SDA)을 통해 전송되는 데이타가 '1'인 경우에는 비교기(221)에서 '1'을 출력하게 되어 종결 조건임을 데이터 처리부(204)에 알리고 데이터 처리부(204)에서는 모든 데이터의 처리를 중단하게 된다.
한편, I2C 버스의 클럭 라인(SCL)을 통해 전송되는 클럭이 '1'이 아닌 경우에는 종결 조건을 만족하지 않으므로 비교기(220, 221)가 디스에이블되어 시작 조건 및 종결 조건을 검출하지 않게 된다.
또한, I2C 버스의 데이터 전송 방법은 도 9에 도시한 바와 같이 시작 조건 및 데이터 전송 단계(300), 버스 사용권 상실 판단 단계(301), 어드레스 비교 단계(303), 재시도 단계(306), 및 데이터 처리 단계(304, 305)에 의해 수행된다.
상기 시작 조건 및 데이터 전송 단계(300)는 I2C 버스의 데이타 라인(SDA)과 클럭 라인(SCL)을 통해 데이터 전송의 시작 상태를 나타내는 시작 조건과 데이타를 전송하는 단계이다.
상기 버스 사용권 상실 판단 단계(301)는 상기 전송된 데이타와 상기 I2C 버스의 데이터 라인(SDA)을 통해 수신되는 데이타를 비교하여 버스 사용권 상실 여부를 판단하는 단계이다.
상기 어드레스 비교 단계(303)는 상기 버스 사용권 상실 판단 단계(301)의 수행 결과 버스 사용권을 상실한 경우에는 자신의 어드레스와 상기 I2C 버스의 데이터 라인(SDA)을 통해 전송되는 어드레스를 비교하는 단계이다.
상기 재시도 단계(306)는 상기 어드레스 비교 결과 어드레스가 동일하지 않은 경우에는 상기 시작 조건 및 데이터 전송 단계(300)로 진행하여 재시도하는 단계이다.
상기 데이터 처리 단계(304, 305)는 상기 어드레스 비교 결과 어드레스가 동일한 경우에는 슬레이브로 전환하여 마스터의 요구에 따라 데이터를 처리하는 단계이다.
이와 같이 이루어지는 I2C 버스의 데이터 전송 방법의 수행 과정을 설명한다.
I2C 버스를 통해 데이터를 전송하기 위해서는 먼저 시작 조건과 어드레스를 전송해야 한다(300). 즉, I2C 버스의 클럭 라인(SCL)이 하이 레벨로 구동하는 동안 데이터 라인(SDA)을 하이 레벨에서 로우 레벨로 천이시켜 데이터 전송의 시작임을 다른 장치, 즉 슬레이브로 전송한후에는 원하는 슬레이브를 선택하기 위해 어드레스를 전송한다.
이와 같이 시작 조건과 어드레스 전송후에는 버스 사용권 상실 여부를 판단한다(301). 즉, I2C 버스의 데이터 라인에 실려 전송되는 데이터와 자신의 장치가 전송한 데이터가 동일한지 비교한다.
이때, 동일하면 버스 사용권이 포기되지 않은 것으로 판단하고 계속해서 슬레이브와 데이터를 처리하게 된다(307). 또한, 동일하지 않으면 버스 사용권이 포기된 것으로 판단하고 I2C 버스의 데이터 라인에 실려 전송되는 어드레스와 자신의 장치에 해당하는 어드레스가 동일한지를 비교한다(302).
이때 비교 결과 I2C 버스의 데이터 라인에 실려 전송되는 어드레스와 자신의 어드레스가 동일하지 않으면 재시도를 위해 일정 시간 경과후 시작 조건과 어드레스를 전송하는 단계(300)로 진행한다(306). 또한, 비교 결과 I2C 버스의 데이터 라인에 실려 전송되는 어드레스와 자신의 어드레스가 동일하면 슬레이브로 전환하여 마스터인 다른 장치, 즉 버스 사용권을 가지고 있는 장치의 요구에 따라 데이터를 처리한다(304).
데이터 처리후 종결 조건이 마스터로부터 전송되면 슬레이브에서는 이를 검출하여 데이터 전송을 마친후(305) 다시 처음의 데이터 처리를 위해 재시도를 수행한다.
이상에서 설명한 바와 같이 본 발명에 의한 I2C 버스의 데이터 전송 장치 및 방법은 I2C 버스 상에 다수의 마스터가 존재하여 버스 사용권의 상실이 발생했을 때 빠르게 마스터에서 슬레이브로 전환되어 전송 효율을 높이는 효과가 있다.

Claims (5)

  1. I2C 버스의 데이타 라인(SDA)과 클럭 라인(SCL)을 통해 데이터 전송의 시작과 종결 상태를 나타내는 시작 조건 및 종결 조건을 발생하는 시작 조건/종결 조건 발생부(202);
    상기 I2C 버스의 데이타 라인(SDA)과 클럭 라인(SCL)을 통해 데이터를 전송하고 수신된 데이터를 처리하는 데이터 처리부(204);
    상기 시작 조건/종결 조건 발생부(202)에서 출력되는 신호에 따라 상기 데이터 처리부(204)에서 출력되는 데이터와 상기 I2C 버스의 데이타 라인(SDA)을 통해 수신되는 데이터를 비교하여 I2C 버스 사용권의 상실 여부를 점검하는 버스 사용권 점검부(205);
    상기 시작 조건/종결 조건 발생부(202)와 상기 데이터 처리부(204)를 제어하고 상기 버스 사용권 점검부(205)의 출력에 따라 마스터에서 슬레이브로 전환하도록 제어하는 제어부(201);
    상기 제어부(201)의 제어에 따라 I2C 버스의 데이터 라인(SDA)을 통해 수신되는 어드레스를 자신의 어드레와 비교하여 상기 제어부(201)로 인터럽트 신호를 출력하는 어드레스 비교부(203); 및
    상기 I2C 버스의 데이터 라인(SDA)과 클럭 라인(SCL)을 통해 전송되는 신호를 입력으로 데이터 전송의 종결 상태를 나타내는 종결 조건을 검출하여 상기 데이터 처리부(204)로 출력하는 종결 조건 검출부(206)를 포함하여 구성됨을 특징으로 하는 I2C 버스의 데이터 전송 장치.
  2. 제1항에 있어서, 상기 어드레스 비교부(203)는 자신의 어드레스를 저장하는 어드레스 레지스터(211); 상기 I2C 버스의 데이터 라인(SDA)을 통해 수신되는 어드레스를 쉬프트시켜 출력하는 쉬프트 레지스터(212); 및 상기 어드레스 레지스터(211)로부터 출력되는 어드레스와 상기 어드레스 레지스터(211)에 저장된 어드레스를 비교하여 상기 제어부(201)로 출력하는 비교기(213)로 구성됨을 특징으로 하는 I2C 버스의 데이터 전송 장치.
  3. 제 1 항에 있어서, 상기 버스 사용권 점검부(205)는 상기 데이터 처리부(204)에서 I2C 버스의 데이타 라인(SDA)을 통해 출력되는 데이터와 상기 I2C 버스의 데이타 라인(SDA)을 통해 수신되는 데이터를 입력으로 배타적 논리합하는 배타적 오아 게이트(215)로 구성됨을 특징으로 하는 I2C 버스의 데이터 전송 장치.
  4. 제 1 항에 있어서, 상기 종결 조건 검출부(206)는 상기 I2C 버스의 클럭 라인(SCL)을 통해 전송되는 신호에 따라 인에이블되어 상기 데이터 라인(SDA)을 통해 전송되는 신호와 '0'을 비교하는 제1 비교기(220); 및 상기 I2C 버스의 클럭 라인(SCL)을 통해 전송되는 신호에 따라 인에이블되어 상기 제1 비교기(220)의 출력 신호와 상기 데이터 라인(SDA)을 통해 전송되는 신호를 비교하여 상기 데이터 처리부(204)로 출력하는 제2 비교기(221)로 구성됨을 특징으로 하는 I2C 버스의 데이터 전송 장치.
  5. I2C 버스의 데이타 라인(SDA)과 클럭 라인(SCL)을 통해 데이터 전송의 시작 상태를 나타내는 시작 조건과 데이타를 전송하는 시작 조건 및 데이타 전송 단계(300);
    상기 전송된 데이타와 상기 I2C 버스의 데이터 라인(SDA)을 통해 수신되는 데이타를 비교하여 버스 사용권 상실 여부를 판단하는 버스 사용권 상실 판단 단계(301);
    상기 판단 결과 버스 사용권을 상실한 경우에는 자신의 어드레스와 상기 I2C 버스의 데이터 라인(SDA)을 통해 전송되는 어드레스를 비교하는 어드레스 비교 단계(303);
    상기 어드레스 비교 결과 어드레스가 동일하지 않은 경우에는 상기 시작 조건 및 데이터 전송 단계(300)로 진행하여 재시도하는 재시도 단계(306); 및
    상기 어드레스 비교 결과 어드레스가 동일한 경우에는 슬레이브로 전환하여 마스터의 요구에 따라 데이터를 처리하는 데이터 처리 단계(304, 305)에 의해 수행됨을 특징으로 하는 I2C 버스의 데이터 전송 방법.
KR1019960050266A 1996-10-30 1996-10-30 I2c 버스의 데이터 전송 장치 및 방법 KR0181596B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019960050266A KR0181596B1 (ko) 1996-10-30 1996-10-30 I2c 버스의 데이터 전송 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019960050266A KR0181596B1 (ko) 1996-10-30 1996-10-30 I2c 버스의 데이터 전송 장치 및 방법

Publications (2)

Publication Number Publication Date
KR19980030788A true KR19980030788A (ko) 1998-07-25
KR0181596B1 KR0181596B1 (ko) 1999-05-15

Family

ID=19479831

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960050266A KR0181596B1 (ko) 1996-10-30 1996-10-30 I2c 버스의 데이터 전송 장치 및 방법

Country Status (1)

Country Link
KR (1) KR0181596B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020066636A (ko) * 2001-02-13 2002-08-21 엘지이노텍 주식회사 디지털 셋탑박스 프로세서간의 통신 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020066636A (ko) * 2001-02-13 2002-08-21 엘지이노텍 주식회사 디지털 셋탑박스 프로세서간의 통신 방법

Also Published As

Publication number Publication date
KR0181596B1 (ko) 1999-05-15

Similar Documents

Publication Publication Date Title
KR960006506B1 (ko) 컴퓨터 시스템, 시스템 확장장치, 버스 결합장치 및 버스억세스 조정방법
US20080086578A1 (en) Integrated circuit device having send/receive macro for serial transfer bus
US5068785A (en) Bus control for small computer system interface with transfer indication preceding final word transfer and buffer empty indication preceding receipt acknowledgement
WO2012046634A1 (ja) 電子装置およびシリアルデータ通信方法
KR0181596B1 (ko) I2c 버스의 데이터 전송 장치 및 방법
US5765019A (en) Microcomputer with built-in serial input-output circuit and collision detection circuit responsive to common input-output line being occupied
WO2017199759A1 (en) Communication apparatus, communication method, program, and communication system
KR20050046932A (ko) i2C 버스를 이용한 슬레이브 장치들의 상태 검사 시스템
KR0184402B1 (ko) I₂c 버스의 인터럽트 발생 장치
JP2000231539A (ja) データ転送システムおよびデータ転送方法
CN112445744A (zh) I2c通信
KR100217819B1 (ko) Iic 버스 사용 제어 방법
JPH10207834A (ja) シリアル入出力回路
JP2702832B2 (ja) 低優先度アダプタの救済制御装置
KR100209199B1 (ko) I2c 버스 사용 점검 장치 및 방법
KR19980057209A (ko) I²c 버스의 인터럽트 발생 장치
JP2000299694A (ja) デ−タ転送システムおよび転送エラー検出方法
EP0629954A1 (en) Adapter for transferring blocks of data having a variable length on a system bus
JP2004046891A (ja) データ処理システム、データ処理装置、外部装置及びデータ伝送方法
KR100259585B1 (ko) 디엠에이 콘트롤러
KR100209192B1 (ko) I2c 버스의 인터럽트 발생장치
KR100225531B1 (ko) 교환기에 있어서 하위레벨프로세서와 디바이스간 정합장치
KR960015586B1 (ko) 다중프로세서 인터럽트 요청기에서의 전송 실패 인터럽트의 구동방법
JPH03156553A (ja) Dma制御装置および情報処理システム
KR100962306B1 (ko) 임베디드 시스템의 양방향 데이터 통신장치 및 그 방법

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121203

Year of fee payment: 15

LAPS Lapse due to unpaid annual fee