USART, UART, RS232, USB, SPI, I2C, TTL 등 이들 모두는 무엇이며 서로 어떻게 관련되어 있습니까?


165

초보 전자 취미 애호가로서, 나는 이러한 용어를 듣고 더 많은 곳에서 던져지고 있습니다. 근본적으로 나는 그것들이 모두 장치, 컴퓨터, 주변 장치 등의 통신을 기반으로한다는 것을 이해합니다.

나는 그들 모두가 어떻게 작동하는지에 대한 기본적인 이해를 가지고 있지만, 그것들을 너무 많이 볼 때 혼란스러워하고 그들이 서로 어떻게 관련되는지 이해하기가 어렵습니다. 예를 들어 UART는 USART의 하위 집합입니까? RS232와 Serial의 차이점은 무엇입니까? 신뢰성, 비용, 응용 프로그램, 속도, 하드웨어 요구 사항 등 이러한 모든 통신 방법의 핵심 차이점은 무엇입니까?

당신이 상상할 수 있다면, 나는이 모든 용어가 카드에 쓰여지고 커피 테이블에 흩어져 있으며, 내 이해를 돕기 위해 누군가가 필요합니다. 이 질문이 조금 모호하다면 용서하십시오. 그러나 저는 이것이 그 질문의 본질이라고 생각합니다.


답변:


253

시리얼 은 값 비싼 용어를 사용하기 위해 "시분할 멀티플렉싱"인 모든 것을 의미합니다. 즉, 데이터는 시간이 지남에 따라, 대개는 한 비트 씩 차례로 전송됩니다. 이름을 짓는 모든 프로토콜은 직렬 프로토콜입니다.

UART, Universal Asynchronous Receiver Transmitter의 경우 가장 많이 사용되는 직렬 프로토콜 중 하나입니다. 거의 나만큼 나이가 많고 매우 간단합니다. 대부분의 컨트롤러에는 하드웨어 UART가 내장되어 있습니다. 전송을 위해 단일 데이터 라인을 사용하고 데이터를 수신하기 위해 단일 데이터 라인을 사용합니다. 대부분의 8 비트 데이터는 다음과 같이 전송됩니다. 1 시작 비트 (낮은 레벨), 8 데이터 비트 및 1 중지 비트 (높은 레벨). 로우 레벨 시작 비트 및 하이 레벨 정지 비트는 통신을 시작하기 위해 항상 하이에서 로우로의 전환이 있음을 의미합니다. 그것이 UART를 설명하는 것입니다. 전압 레벨이 없으므로 마이크로 컨트롤러가 사용하는 3.3V 또는 5V에서 사용할 수 있습니다. UART를 통해 통신하려는 마이크로 컨트롤러는 시작 비트가 동기화 에지로 떨어지기 때문에 전송 속도, 비트 전송률에 동의해야합니다. 이를 비동기 통신이라고합니다.

장거리 통신 (수백 미터 일 필요는 없음)의 경우 5V UART는 신뢰성이 높지 않으므로 "0"의 경우 + 12V, "12"의 경우 -12V의 높은 전압으로 변환됩니다. 1". 데이터 형식은 동일하게 유지됩니다. 그런 다음 RS-232 가 있습니다 (실제로 EIA-232로 전화해야하지만 아무도하지 않습니다).

타이밍 종속성은 UART의 큰 단점 중 하나이며, 범용 동기 / 비동기 수신기 송신기에 대한 솔루션은 USART 입니다. 이것은 UART뿐만 아니라 동기 프로토콜도 가능합니다. 동기에는 데이터뿐만 아니라 클럭도 전송됩니다. 각 비트마다 클럭 펄스가 수신기에 해당 비트를 래치해야한다고 알려줍니다. 동기식 프로토콜은 Manchester 인코딩의 경우와 같이 더 높은 대역폭이 필요하거나 SPI 및 I2C와 같은 클럭을위한 추가 와이어가 필요합니다.

SPI (Serial Peripheral Interface)는 또 다른 매우 간단한 직렬 프로토콜입니다. 마스터는 클럭 신호를 보내고 각 클럭 펄스에 따라 슬레이브로 1 비트 씩, 슬레이브에서 1 비트 씩 이동합니다. 따라서 신호 이름은 클럭의 경우 SCK, 마스터 출력 슬레이브 입력의 경우 MOSI, 마스터 입력 슬레이브 출력의 경우 MISO입니다. SS (Slave Select) 신호를 사용하여 마스터는 버스에서 하나 이상의 슬레이브를 제어 할 수 있습니다. 여러 슬레이브 장치를 하나의 마스터에 연결하는 두 가지 방법이 있습니다. 하나는 위에서 언급했습니다. 예를 들어 슬레이브 선택을 사용하고 다른 하나는 데이지 체인을 사용하며 적은 하드웨어 핀 (선택 라인)을 사용하지만 소프트웨어는 복잡합니다.

I2C"통합 된 회로,"I 제곱 C "로 발음 됨) 또한 동기 프로토콜이며,"지능 "이있는 것은 처음입니다. 다른 것들은 멍청하게 비트를 안팎으로 이동 시켰습니다. I2C는 클럭 (SCL)과 데이터 (SDA)에 각각 2 개의 와이어 만 사용합니다. 이는 마스터와 슬레이브가 동일한 와이어를 통해 데이터를 전송하고 클럭 신호를 생성하는 마스터에 의해 다시 제어됨을 의미합니다. I2C는 별도의 슬레이브 선택을 사용하지 않고 특정 장치를 선택하지만 주소를 지정합니다. 마스터가 보낸 첫 번째 바이트는 7 비트 주소 (버스에서 127 개의 장치를 사용할 수 있도록)와 읽기 / 쓰기 비트를 보유하며 다음 바이트도 마스터에서 오는지 또는 마스터에서 오는지를 나타냅니다. 노예. 각 바이트 후에 수신자는 바이트 수신을 확인하기 위해 "0"을 보내야합니다. 마스터는 9 번째 클럭 펄스로 래치합니다. 마스터가 바이트를 쓰려고하면 동일한 프로세스가 반복됩니다. 마스터는 버스에 비트 단위로 비트를 넣고 매번 데이터를 읽을 준비가되었다는 신호를주기 위해 클럭 펄스를 제공합니다. 마스터가 데이터를 수신하려면 클럭 펄스 만 생성합니다. 슬레이브는 클럭 펄스가 제공 될 때 다음 비트가 준비되도록주의해야합니다. 이 프로토콜은 NXP (이전 Phillips)에 의해 특허를 받았으며, 라이센스 비용을 절약하기 위해 Atmel은 I2C와 정확히 동일한 TWI (2 선 인터페이스)라는 단어를 사용하여 Atmel을 사용하므로 모든 AVR 장치에는 I2C가 없지만 TWI가 있습니다. 마스터가 데이터를 수신하려면 클럭 펄스 만 생성합니다. 슬레이브는 클럭 펄스가 제공 될 때 다음 비트가 준비되도록주의해야합니다. 이 프로토콜은 NXP (이전 Phillips)에 의해 특허를 받았으며, 라이센스 비용을 절약하기 위해 Atmel은 I2C와 정확히 동일한 TWI (2 선 인터페이스)라는 단어를 사용하여 Atmel을 사용하므로 모든 AVR 장치에는 I2C가 없지만 TWI가 있습니다. 마스터가 데이터를 수신하려면 클럭 펄스 만 생성합니다. 슬레이브는 클럭 펄스가 제공 될 때 다음 비트가 준비되도록주의해야합니다. 이 프로토콜은 NXP (이전 Phillips)에 의해 특허를 받았으며, 라이센스 비용을 절약하기 위해 Atmel은 I2C와 정확히 동일한 TWI (2 선 인터페이스)라는 단어를 사용하여 Atmel을 사용하므로 모든 AVR 장치에는 I2C가 없지만 TWI가 있습니다.

동일한 와이어에서 두 개 이상의 신호가 충돌을 일으킬 수 있으며 한 장치가 "1"을 보내고 다른 장치가 "0"을 보내면 문제가 발생합니다. 따라서 버스는 유선으로 연결됩니다. 두 개의 저항이 버스를 높은 레벨로 끌어 당기고 장치는 낮은 레벨 만 보냅니다. 그들이 높은 레벨을 보내려면 간단히 버스를 해제하십시오.

TTL (Transistor Transistor Logic)은 프로토콜이 아닙니다. 디지털 로직의 오래된 기술이지만 5 V 공급 전압을 나타내는 데 종종 사용되며 종종 UART라고 불리는 것을 잘못 지칭합니다.


이것들 각각에 대해 당신은 책을 쓸 수 있습니다. 이것은 매우 간단한 개요입니다. 설명이 필요한 경우 알려주십시오.


TTL에서만 +1, OP는 직렬 TTL을 의미하며 내 경험상 RS232 트랜시버 / 버스 드라이버 이전의 UART 신호를 설명합니다.
kenny

4
@ 케니- "직렬 TTL"과 같은 것은 없습니다. UART입니다. 전압이 3.3V이면 어떻게 되나요? TTL은 5V 만 나타냅니다.
stevenvh

그것이 제가 말하는 것입니다. UART의 I / O는 종종 제 경험 TTL Serial에서 호출됩니다.
kenny

놀라운 반응! 몇 번 더 읽어보고 질문이 있으면 알려 드리겠습니다. 고마워, 스티븐
capcom

8
더 나은 내기는 다음 Uart 시대에 낚시하는 것입니다 :-)
Vaibhav Garg

11

이것은 사용자 정의 응답에 대한 질문을하는 것보다 기사를 더 잘 읽을 수있는 영역의 영역에 매우 가깝지만 제조업체가 때때로 모호하게하는 한 가지 주요 사항을 해결합니다.

직렬 인터페이스에는 동기 및 비동기의 두 가지 기본 유형이 있습니다.

동기식 인터페이스는 명시 적 클럭에 대한 타이밍으로 데이터를 전송하며,이 클럭도 제공됩니다. 전형적인 예는 SPI이지만 오디오 변환기 용 I2S, JTAG, FPGA 구성 인터페이스 등과 같은 특수한 형태도 있습니다. 많은 병렬 통신 채널은이 아이디어를 한 번에 더 많은 비트로 이동시키는 것으로 확장되었습니다. 종종 항상 그런 것은 아니지만 가장 중요한 비트를 먼저 보냅니다.

비동기 인터페이스는 데이터 스트림 자체에 타이밍이 인코딩되어 있습니다. "직렬 포트"및 RS232와 같은 관련 표준의 경우, 워드의 타이밍은 시작 비트와 관련이 있으며, 수신기는 그 후 올바른 간격으로 라인을 샘플링하기 만합니다. 다른 인터페이스는 좀 더 복잡 할 수 있으며 위상 고정 루프 및 알고리즘을 사용하여 더 빠른 클럭 복구가 필요합니다. UART는 "Universal Asynchronous Receiver Transmitter"입니다. 실제로 단어 길이, 속도 및 시작 / 종료 조건에 유연성이있는 "직렬 포트"를 구현하는 데 주로 사용되는 기능 블록의 이름입니다. RS232, RS422 등과 같은 것은 전압, 단일 종단 또는 차동, 1이 높거나 낮은 경우 등에서 얻을 수있는 데이터의 보드 외부 전기 신호 표준입니다.

"USART"는 일종의 하이브리드 장치 인 "Unversal Synchronous / Asynchronous Receiver Transmitter"이기 때문에 합법적 인 혼란의 원천이 될 수 있습니다. 본질적으로 이것은 UART로 가장 많이 사용되며 UART로도 사용될 수 있습니다. 데이터에 동기화 된 별도의 클록을 생성 (또는 고려)하고 비트 순서를 역전시킬 수있다. 일반적으로 SPI와 상호 운용되도록 구성 할 수 있지만 시작 / 중지 비트 전용 시간을 제거하지 못할 수 있으므로 단어 사이에 간격없이 데이터가 계속 흐를 것으로 예상 할 수있는 I2S와 같은 기능으로는 작동하지 않을 수 있습니다.


아주 좋은 설명 (Y) 간결함을 좋아했습니다. 감사합니다 @ chris
Avi Mehenwal

8

RS-232 는 원래 모뎀 및 텔레타이프에 사용 된 매우 간단한 직렬 프로토콜입니다. 일반적으로 직렬 포트 (또는 MS-Windows의 COM 포트)라고합니다. 라인에서 공칭 적으로 ± 12V 레벨을 사용하지만 검출이 ± 3V로 지정 될 때 레벨이 크게 달라질 수 있습니다. 이러한 레벨을 컴퓨터 나 마이크로 컨트롤러의 내부 디지털 신호 레벨로 변환하거나 변환하는 라인 드라이버 (현재는 일반적으로 MAX232 제품군)가 있습니다.

TTL 은 Transistor-Transistor-Logic을 의미하며 0V에 가까운 논리 0과 5V에 가까운 논리 1에 대한 레벨을 갖습니다. 오늘날 대부분의 회로는 CMOS로 구축되지만 5V 로직은 종종 TTL이라고합니다. 오늘날 3.3V에서 작동하는 많은 회로가 있으며 더 이상 TTL이 아닙니다.

내부 레벨과 관련하여 RS-232 라인의 레벨은 반전되고 + 12V는 논리적 로우에 해당하고 -12V는 논리적 하이에 해당하므로 혼동 될 수 있습니다.

데이터 형식을 설명하기 위해 일반적으로 논리 신호를 보여줍니다. 회선이 유휴 상태이면 회선이 높습니다. 전송은 로우 스타트 비트로 시작하고, 데이터 비트는 가장 중요도가 낮은 비트부터, 선택적 패리티 비트 및 1에서 2 개의 정지 비트 (논리 1)로 시작합니다. 시작 및 중지 비트가 각 바이트의 데이터를 개별적으로 동기화하기 때문에이를 비동기 전송이라고합니다.

UART (Universal Asynchronous Receiver Transmitter)는 이러한 종류의 비동기 통신을 수행하는 컴퓨터 또는 마이크로 컨트롤러의 장치입니다.

USART (Universal Asynchronous Synchronous Receiver Transmitter)는 일종의 동기식 전송을 수행 할 수있는 장치이므로 추가 S가 있습니다.

SPI, I²C 및 USB는 다릅니다 (USB의 경우 매우 길다).


1

SPI 및 CAN 프로토콜에 대해 언급 한 내용에 동의합니다. 더 나은 성능을 향상시키기 위해 CAN 프로토콜이 설계되었습니다. 이 중재 개념에서는 두 장치가 통신 할 준비가 된 상태에서 사용되며, 우선 순위에 따라 전송 또는 수신이 발생합니다. CAN은 많은 산업 분야에서 널리 사용됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.