티스토리 뷰
이 페이지에서는 UART, SPI, I2C 를 테이블 형식으로 비교 합니다.
여러 항목들을 비교
항목
|
UART
|
SPI
|
I2C
|
전체 이름
|
Universal Asyncronous Receiver/Transmitter
|
Serial Peripheral Interface
|
Inter-Integrated Circuit
|
|
|
||
핀
|
TxD: Transmit Data
RxD: Receive Data
|
SCLK: Serial Clock
MOSI: Master Output, Slave Input
MISO: Master Input, Slave Output
SS: Slave Select
|
SDA: Serial Data
SCL: Serial Clock
|
Data Rate
데이터 전송 속도
|
비동기(asynchronous) 통신이기 때문에 공유하는Clock 이 없어서 통신하는 양쪽 기기의 속도를 동일하게 맞춰 주어야 한다. 동일하지 않아도 통신이 되는경우가 있지만 의도하지 않은 데이터가 들어갈 경우가 있다.
Maximum 통신 속도는 Model 에 따라 다르며, 일반적으로 115,200bps 이다. |
SPI에서 최대 데이터 속도는 정해져 있지 않다. 보통10Mbps 에서 20Mbps 사이 이다.
|
I2C는 100Kbps, 400Kbps, 3.4Mbps 를 주로 사용하며10Kbps 나 1Mbps를 사용하는 경우도 있다.
|
Distance 거리
|
5미터 이하
|
가장 길다.
|
길다.
|
Type of communication
통신의 종류
|
비동기
통신을 하는 기기가 같은 clock을 공유하지 않는다는의미로, 통신하는 두 기기가 동일한 속도를 맞춰야 한다. 편리한 점은 속도만 맞추면 어떤 기기와도 통신이가능하다는 점
|
동기
같은 clock을 사용하여 통신을 한다는 의미로, 개발 단계에서 연결이 되어야 한다.
|
동기
|
Number of masters
|
Master가 없다. 각자 주고(Tx), 받는(Rx) 다.
|
Master 는 하나이며 변하지 않는다.
|
Master가 하나 이상이 될 수 있다.
|
Clock
|
공유하는 Clock이 없다. 각 기기는 각자의 Clock을 사용하며 통신 시에는 동일한 데이터 전송 속도를 설정하여 송수신 해야 한다.
|
Master와 Slave들은 동일한 Clock을 사용한다.
|
Master들과 Slave들은 동일한 클럭을 사용한다.
|
Hardware Complexity
|
가장 복잡하지 않다.
|
복잡하지 않다.
|
복잡하다.
|
Protocol
|
Data는 8bit로 보내며 앞에 Start bit와 뒤에 Stop bit를 붙인다.
|
통일된 Protocol이 있지 않다. 그래서 해당 기기의datasheet를 참조해야 한다. 예를 들어 microcontroller와EEPROM의 통신을 한다면 EEPROM 의 datasheet를 봐야한다.
|
Start bit와 Stop bit를 사용하며 데이터는 8bit를 전송한다.8bit를 보내고 나면 (slave?) ack를 사용하여 데이터가 잘받아졌는지를 확인한다. 아래 그림에 표시 되어있다.
|
Software addressing
|
1:1 통신만을 하기 때문에 addressing은 필요 없다.
|
Master에는 slave 개수만큼 slave select 라인이 있기 때문에 해당 line을 통해서 slave를 선택한다.
|
다수의 master와 다수의 slave가 존재하고, 각 master는 모든 slave에 접근할 수 있다. 27개의 slave까지 지원이 되며master는 고유 주소값을 통해 접근한다.
|
장점
|
하드웨어가 간단해서 거의 모든 장치에서 UART를 지원하기 때문에 (9개의 핀이 연결되거나, USB가 있는장치라면) 편리하다. RS232 라고도 불린다. RS232는protocol의 이름이며 UART는 그것을 가능하게 해 주는 송수신기를 의미하기 때문이다.
|
간단한 프로토콜이기 때문에 구현하는데 어렵지 않다. Full duplex(전체 동시 송수신, 전이중) 통신을 지원한다.
나뉘어진 slave select 라인이 있기 때문에 같은 종류의 칩들이 회로에 사용될 수 있다.
SPI는 push-pull을 사용하기 때문에 높은 데이터 전송률을가지며 긴 거리도 가능하다.
SPI는 I2C와 비교하면 적은 파워를 사용한다.
|
Open collector(?) 디자인이기 때문에 slew rate(출력 전압의 최대 변화율, 모양이 이상해 지는 것)가 제한적이다.
한 개 이상의 master가 가능하다.
선이 두 개 필요하다.
Addressing 하는 방법이 간단해서 SPI 같이 여러 라인이 필요하지 않다.
Open collector bus concept를 가지고 있어 bus의 voltage가 유연(다른 voltage level 가능)하다.
|
단점
|
1:1 통신만 지원한다.
동일한 속도를 맞추고 시작해야 한다. 그렇지 않으면데이터가 깨질 것이다.
Voltage level 이 동일해야 한다. |
Slave가 많아지면 각 slave별 라인이 필요하기 때문에hardware 구성이 복잡해진다.
만약 slave가 추가 된다면 선을 새로 연결해야 하며addressing을 위해 software의 디자인이 변경되어야 한다.
Master와 slave가 고정되어 있기 때문에 I2C에서 하는 것처럼 역할 변경을 할 수 없다.
Flow control을 할 수 없다.
Voltage level 이 동일해야 한다. |
Master와 slave가 많아지면 복잡성이 증가한다.
I2C 는 half duplex(반이중) 이다. 이 말은 하나의 선 SDA를 통해서 Data가 양 방향으로 갈 수 있지만 한번에는 하나의 데이터만 간다는 뜻이다. UART는 항상 한 방향으로만가는데 반해 반 이중은 동시는 아니지만 양 방향이 가능하다.
|
참조
|
RS232 Interface>>
UART는 회로를 의미하는 단어로, 일반적으로 EIA RS-232, RS-422, RS-485와 같은 통신 표준과 함께 사용한다. |
I2C
- I2C 의 Slave 주소는 해당 Chip의 Datasheet에 Idx의 구성에 따라 여러가지로 될 수 있다는 것이 명시되어 있다. 여러 Chip이 같은 Bus를 통해서 연결될 수 있기 때문이다. 그래서 실제 IDx 의 회로 구성을 확인하여 주소값을 확인해야 한다.
- Slave I2C의 속도는 해당 Chip의 Register Setting 에 의해 변경될 수 있다. Clock 과 Data의 최대 속도를 확인하고 그 이상으로 셋팅하지 않아야 한다.
- I2C 에서 1Byte 단위로 데이터를 송신하기 때문에 9번째 bit를 보면 ACK 여부를 확인할 수 있다. Start와 Stop 신호를 제외하면 모두 이 1byte(8bit) 단위로 송신이 되며 보통 Slave Address(1byte), Register Address(1~2 Byte), Value(1Byte) 로 한 셋트를 송신하지만 인접한 Address 의 경우에는 연속으로 쓸 수 있다. 이를 Burst Write 혹은 Sequential Write 라고 부른다.
- I2C 를 여러 Chip 끼리 연결하려고 하면(같은 Bus) 신호의 Level 을 맞춰 주어야 한다. 보통 1.8V, 3.3V, 5V 등 이 있으며 이를 맞춰주기 위해서는 Level Shifter 가 회로에 구성되어 있어야 하면 그렇지 않으면 통신이 정상적으로 이루어 지지 않는다.
- I2C 를 이해할 때는 몇 V 로 동작하는지, Start Condition은 SDA 가 default 1인 상태에서 0으로 갈 때 신호가 시작되고, SDA, SCL 모두 default 1인 상태에서 0으로 갈 때가 동작을 진행한 상태이므로 우선순위가 높다 그래서 ACK 신호가 low(SCL high, SDA low) 인 것이다. Start 와 Stop(SDA가 0으로 먼저 떨어지고 SCL high 가 된 상태) 를 제외하면 총 9bit를 사용하는데 8bit 가 하나의 1byte 이므로 이를 보내기 위해서 사용되며 나머지 1bit 가 반대쪽의(write 시 slave 에서 잘 받았다고 보내는 신호) ACK 이다. Mater에서 read 시에는 데이터를 slave 쪽에서 보내는 데 이 때 데이터를 전부 보내고 나면 NACK 를 보내 더이상 보낼 데이터가 없다는 것을 알려준다.
I2C ACK(Link)
'[전자]' 카테고리의 다른 글
[전자기학] Biot-Savart Law(비오사바르 법칙) (0) | 2019.09.15 |
---|---|
모터 PID 제어 (0) | 2019.02.15 |
시리얼 직렬 통신 (2) | 2019.01.28 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크