ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • UART, SCI, CAN
    Software/RTOS 2024. 7. 12. 17:14
    728x90
    UART (Universal asynchronous receiver/transmitter)

     UART는 병렬 데이터를 직렬 형태(Serial)로 변환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종이다. UART는 일반적으로 RS-232 / RS-422 / RS-483와 같은 통신 표준과 함께 사용된다.

     통신 데이터는 메모리 혹은 레지스터에 박혀있는데 이를 순차대로 읽어 직렬화 하여 보낸다. 최대 8비트 단위 통신이 기본이다. UART는 비동기 통신이므로 송수신 양 측에서 데이터의 시작과 끝을 약속하여 통신하여야 데이터를 올바르게 읽고 쓸 수가 있다. 디지털 통신에서는 자체 클럭 신호를 주기로 시작과 끝을 표현하여 수신 측에서 동기적으로 통신하는 USRT ( Universal synchronous receiver/transmitter) 통신도 구현할 수 있다. 동기식 통신은 비동기에 비해 통신 안정성과 속도가 우세하지만, 클럭을 전달하기 위한 클럭 케이블이 별도로 필요해 비용이 증가한다는 단점이 존재한다.

     

    UART 데이터 프레임의 예시. SOF와 EOF가 명시되어 있는 것이 특징이다.

     

     

     

     

    SCI (Serial Communication Interface)

     SCI는 직렬 통신을 통칭해서 일컫는 용어이다. 하지만 주로 비동기식 통신을 하므로 UART를 대체하는 용어로 사용하기도 한다. 같은 개념으로 TI DSP에서는 SCI핀이 전부 UART 통신을 위한 핀이라고 생각하면 편하다.

     SCI는 일반적으로 TX, RX 두개의 선을 사용하며 Full-duplex 통신을 지원한다. 주로 장거리 통신에 사용되므로 약한 신호를 보강하기 위해 트랜시버를 사용해 신호를 증폭한다 (Rs232,RS422 등이 트랜시버)

    SCI모듈 Baud Rate 레지스터 입력식
    $$Baud Rate = \frac{LSPCLK}{((BRR+1) * 8 )}$$

    SCI모듈은 Interrupt를 다루는 레지스터도 존재하기 때문에 Polling 방식 이외에도 Interrupt 방식을 통한 송수신도 가능하다. 기본적으로 16비트 송수신 FIFO체제로 작동한다.

     

     

     

     

    CAN ( Controller Area Network )

    비동기식 직렬 통신의 다른 방식이다. 초기에는 차량내에서 호스트 컴퓨터 없이 MUC들이 서로 통신하기 위해 설계된 표준 통신 규격이었다. 현재에는 항공,우주,선박,방산 등 산업 분야 전반에 폭넓게 사용되고 있다.

     

    CAN BUS는 한 채널에 여러 장치들이 함께 물려있는 구조로 연결되어있다.

     

     CAN 통신의 가장 큰 특징은 한 채널의 통신을 모든 유닛들이 전달받는 것이다. 한 유닛이 자신의 메세지를 라인에 띄우기 위해서는 먼저 라인이 사용중인지 여부를 체크하여야한다. 그 후에 메세지를 라인에 송신하는 데 이때 보내지는 메세지는 송수신측의 정보를 포함하지 않는 것이 특징이다. 각각 채널에 물린 유닛들은 떠도는 데이터를 자신의 것이면 받아서 처리하고, 아니면 무시한다. 또한 메세지에는 우선순위(Priority)가 있어서 우선 순위에 따라 각 개체들의 CAN BUS 사용 권한 순서가 부여된다. 이 우선순위는 메세지의 맨 첫 단에 CANID라는 이름으로 부여되고, 해당 메세지의 식별자 임과 동시에 우선순위를 판별하는 역할을 하게된다.

     

    CAN Message 예시. ID로 메세지 식별과 우선순위 판단을 한다.

     

     

    ● CAN Message는 식별자에 따라 다음 두 종류로 구분된다.

    - Standard CAN Message => 11비트 식별자
    - Extended CAN Messgae => 29비트 식별자

     현재 실무에서는 Extended Msg를 더 많이 사용하는 것 같다.

     

     

    ● CAN_H / CAN_L

     

     

    CAN 메세지는 저렴한 한 쌍의 Twisted pair로 통신이 이루어지는 경우가 많은 데, TX / RX라인으로 데이터를 주고 받았던 SCI와는 다르게, 각각의 두 선을 Low와 High 정보를 나타내는 CAN_Low / CAN_High로 구분하여 데이터를 송수신한다. 이 방식은 버스 상에서 노이즈를 줄이는 효과도 기대할 수 있다.

     

     

     

     

    728x90