MCU와 다른 기기 간 통신에서 가장 많이 사용되는 통신 기법은 무엇입니까?I2C? SPI? UART? 대부분의 사람들은 UART를 기본적으로 사용하잖아요.오늘날 개발 중 가장 많이 사용되는 통신 중 하나인 UART 통신에 대해 다루어 봅시다.
MCU와 다른 기기 간 통신에서 가장 많이 사용되는 통신 기법은 무엇입니까?I2C? SPI? UART? 대부분의 사람들은 UART를 기본적으로 사용하잖아요.오늘날 개발 중 가장 많이 사용되는 통신 중 하나인 UART 통신에 대해 다루어 봅시다.
와이어 테크놀로지 :: UART
UART 범용 비동기 송수신기 UART는 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종입니다.
직렬(Serial) 통신→1개의 입출력 핀을 통해 8개의 비트를 한꺼번에 전송하는 방법 병렬(Parallel) 통신→n비트의 데이터를 전송하기 위해 n개의 입출력 핀을 사용하는 방법 MCU에서는 흔히 직렬(Serial) 통신 방식이며, 그 중 많이 쓰이는 방법 중 하나가 UART입니다. UART는 비동기 통신이므로 동기 신호가 오지 않습니다. 따라서 수신측에서 동기신호를 찾아 데이터의 시작과 종료를 시간적으로 알고 처리할 수 있도록 보내는 측(TX)과 받는 측(RX)에서 약속을 정해야 하는데, 이를 프로토콜(Protocol)이라고 합니다. 비동기 통신 Asynchronous
먼저 동기 통신(Synchronous)은 데이터 동기화를 위해 별도의 클럭 신호가 전송됩니다. 그래서 그 클럭에 맞춰서 데이터 송수신을 진행하게 되는 거죠.그러나 비동기 통신(Asynchronous)은 별도의 클럭 신호가 전송되지 않습니다.데이터의 시작과 종료를 알기 위해 UART에서는 “0”의 시작 비트와 “1”의 정지 비트를 사용합니다.
기동 비트: 통신의 시작을 의미하며, 1비트 시간의 길이만큼 유지한다. 지금부터 정해진 약속에 따라 통신을 개시한다.데이터 비트: 5~8비트의 데이터 전송을 실시한다. 몇 비트를 사용할지는 해당 레지스터 설정에 의해 결정된다.패리티 비트: 에러 검증을 실시하기 위한 패리티 값을 생성하여 송신하고 수신측에 에러 판단한다. 미사용, 짝수, 홀수 패리티 등 3가지 옵션으로 해당 레지스터 설정에 따라 선택할 수 있다. ‘사용 안 함’을 선택하면 이 비트가 삭제된다.정지 비트: 통신 종료를 알린다. 3개의 정해진 비트분을 유지해야 한다. 1, 1.5, 2비트로 해당 레지스터 설정에 의해 결정된다.위와 같은 형태로 데이터를 전송하여 시작과 끝을 알리게 됩니다.하지만 시작과 끝만 안다고 말할 수 있을까요? baud rate
UART에서는, 송신측(TX)과 수신측(RX)으로부터 데이터를 송신하는 속도를 보율(baudrate)로 정하고 있습니다. 초당 어느 정도의 데이터를 전송할지를 의미합니다.예를 들어 신호가 1bit인데 9600Baudrate라고 하면 1초에 9600개의 데이터를 전송하거나 수신할 수 있는 거죠. 즉, 서로의 통신 속도를 일정하게 하여 통신하게 됩니다.동일한 데이터를 전송하더라도 전송 속도에 따라 수신 데이터가 다를 수 있습니다.
실제로 테스트를 해보겠습니다.전송 측에서는 115200의 baud Rate로 ‘a’를 전송했습니다.
위에서 115200 / 57600 / 38400 / 19200 / 9600 입니다.보내는 쪽은 115200으로 똑같이 받는 쪽에서의 속도는 각각 다르게 보았는데요.보율이 달라 1개의 비트를 표현하는 시간(전압을 유지하는 시간)이 바뀌었습니다.
시작 비트와 종료 비트를 제외한 8비트가 데이터입니다.점이 있는 부분을 기준으로 1과 0으로 나눠보겠습니다.115200의 경우 맨 오른쪽에서 01100001, 즉 0x61a가 맞습니다.하지만 57600의 경우 111100로 0xFC가 되어 버려 다른 값이 나와 버렸습니다.위와 같이 송신과 수신은 서로의 방식으로 맞추는 것이 중요합니다. 신호 변환위키백과에 따르면 ‘UART는 일반적으로 EIA RS-232, RS-422, RS-485와 같은 통신 표준과 함께 사용한다.’라고 되어 있습니다. 왜 그럴까요?아래와 같이 MCU 안에는 UART 통신 모듈이 들어 있습니다.출 웹 사이트: https://embeddedchallenge.tistory.com그리고 Tx 라인을 통해 상기와 같은 0~3.3V 또는 0~5V 전압 레벨로 정보를 전달하고, Rx 라인을 통해 동일한 전압 레벨로 정보를 전달합니다.그러나 상기 전압 레벨은 장거리 전송에서 노이즈에 취약합니다.따라서 -12V ~ 12V 전압 레벨을 갖는 RS232 통신 방식으로 전압 레벨을 변경하여 전달합니다.그리고 Tx 라인을 통해 상기와 같은 0~3.3V 또는 0~5V 전압 레벨로 정보를 전달하고, Rx 라인을 통해 동일한 전압 레벨로 정보를 전달합니다.그러나 상기 전압 레벨은 장거리 전송에서 노이즈에 취약합니다.따라서 -12V ~ 12V 전압 레벨을 갖는 RS232 통신 방식으로 전압 레벨을 변경하여 전달합니다.위 신호등이 뭘까요~ 바로 HAPPY입니다. 행복한 하루 되세요~! UART에 대한 설명은 여기까지 하겠습니다.감사합니다。위 신호등이 뭘까요~ 바로 HAPPY입니다. 행복한 하루 되세요~! UART에 대한 설명은 여기까지 하겠습니다.감사합니다。IoT 시제품 제작 | 우리웍스 Uriworks | 부산광역시 부산경남 시제품 제작, PCB제작, 회로설계, IoT시스템 개발, 하드웨어 제작 전문업체 우리웍스 Uriworkswww.uriworks.comIoT 시제품 제작 | 우리웍스 Uriworks | 부산광역시 부산경남 시제품 제작, PCB제작, 회로설계, IoT시스템 개발, 하드웨어 제작 전문업체 우리웍스 Uriworkswww.uriworks.com우리웍스 부산광역시 해운대구 APEC로 173804우리웍스 부산광역시 해운대구 APEC로 173804우리웍스 부산광역시 해운대구 APEC로 173804