UART 통신

살캉쿠·2023년 4월 19일
0

UART 통신


  • UART(Universal asynchronous receiver/transmitter)

    • 범용 비동기화 송수신기이며 Serial(직렬) 통신의 일종임.
    • 일반적으로 RS-232, RS-422, RS-485 통신 프로토콜과 함께 사용함.
    • 비동기 통신이므로 동기 신호가 전달되지 않아 수신 쪽에서 동기신호를 찾아내 데이터의 시작과 끝을 시간적으로 알아 처리할 수 있도록 약속되어 있음.
    • UART 통신은 전이중 방식(Full duplx) 통신으로 송신과 수신을 동시에 할 수 있으며, 2개의 범용 입출력핀이 필요함.
    • 1개의 입출력 핀을 통해 8개이 비트를 한번에 전송하는 방식임.
    • 전이중 방식 통신의 특징이 Master 와 Slave 양쪽에 송신 및 수신 핀 모두 가지고 있음.
    • Start bit(1bit) + Data bit(8bit) + Stop bit(1bit)하여 보통 10bit를 보내는 것이 일반적임.

  • UART 통신 Parameter

    • Buad Rate
      • TX 에서 RX로 데이터를 보낼 때의 속도
      • 115200bit/s 라면 1초당 115200bit를 보낼 수 있는 속도
    • Parity Bit
      • 송/수신되는 데이터의 오류를 검출하기 위해 사용하는 식별 비트
    • Start Bit
      • 'Data 송신을 시작하겠다'라는 것을 수신측에 알리기 위해 bit를 를 보냄.(보통 '0'임)
    • Stop bit
      - Data 송신이 다 끝났음을 알리는 bit를 보냄.(보통 '1'임)

  • STM32F103C8T6 UART 송신하기

    • 연결 구성

      • MCU <----> FTDI(FT232RL Driver) <---> PC
      • Tera Term으로 PC에서 데이터 확인함.
      • FTDI (UART to Serial Module)

    • STM32CubeIDE에서 UART 핀 설정

      • PA10핀 : TX (FTDI의 RX핀에 연결)
        PA9핀 : RX (FTDI의 TX핀에 연결)
      • Parameter 셋팅


    • 코드 구성

      • 위 상태로 Code Generation을 하면 main.c에 USART1핀을 초기화하는 코드가 생성된다.
      • huart1이라는 구조체 변수도 선언된다.(나중에 자세하게 분석 하기로....;;)

      • 코드
           int main()
           {
           	MX_USART1_UART_Init();  // UART1를 Parameter 설정한 대로 초기화
               char senddata[20] = "hello world\r\n"; // hello world 문구를 COM3 Port로 송신
               	while(1)
                   {
                   	HAL_UART_Transmit(&huart1, senddata, strlen(senddata), 1000); // uar1 TX로 hello world를 보낸다.
                       HAL_Delay(1000);  // 1초 딜레이
                   }
           }
        • 결과
          : 1초마다 Hello world를 송신한다.

0개의 댓글