728x90

UART 7

FPGA - STM32 UART 이용한 DC Motor 제어 및 신호 확인

https://insoobaik.tistory.com/652 통신 프로토콜 UART 동작 원리보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.com기본적인 UART 이론은 위 글을 참고한다. * 전체 실행 관련 코드는 글 아래 첨부되어 있다.UART 통신 규칙 설정Baud_Rate9600Data Bit8ParityxStop Bit1 FPGA Clock50MHz FPGA Board의 Clock은 50MHz(20ns)다.Baud Rate 9600은 104166ns에 해당한다.Clock Count를 5208번으로 설정하게 되면 Baud Rate와 1bit당 속도를 맞출 수 있다.Clock이 5208번 반복하게 되면 104160ns를 소요하게 되고 6ns의 차이는 ..

Semiconductor/FPGA 2024.07.30

통신 프로토콜 UART 동작 원리

UART란UART(Universal asynchronous receiver/transmitter)는 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종이다.통신 데이터는 메모리 또는 레지스터에 들어 있어 이것을 차례대로 읽어 직렬화 하여 통신한다. 최대 8비트가 기본 단위이다.UART는 일반적으로 컴퓨터나 주변 기기의 일종으로 병렬 데이터를 직렬화 하여 통신하는 개별 집적 회로다.비동기 통신이므로 동기 신호가 전달되지 않는다. 따라서 수신 쪽에서 동기신호를 찾아내어 데이터의 시작과 끝을 시잔적으로 알아 처리할 수 있도록 약속되어 있다. 비트수1234567891011 시작 비트(Start bit)5~8 데이터 비트패리티 비트(Parity bit)종료 비트(Stop bit(..

Clock Configuration, UART 글자 깨짐 현상 해결 방법

MPU/MCU Select를 통해 생성했을 때 Board Select을 했을 때 문제가 없었던 UART 통신에서 문자가 깨지는 현상이 발생하였다. 문제점UART를 통해 Console 창에 문자는 출력되지만 문자가 깨져서 나오는 상황 처음 문제가 발생했을 때 생각한 원인들은 이랬다.1. 인코딩이 잘못되고 있다.2. baud rate가 맞지 않아서 글자 깨짐3. 그 외 Port가 잘못되거나 ST-Link와의 통신에서 문제가 있을 것이다. 1. 에 대한 해결책으로 인코딩과 관련된 모든 설정을 변경해보았지만 결과가 같았다.3. 에 대한 해결책으로 USART 1,2,3 등 많은 USART 포트를 사용해봤지만 결과가 동일했다. 2. 에 대한 해결책으로일반적으로 우측 부분에 관한 Clock만 생각했기 때문에 우측 부..

STM32 - UART 구현 - (3) (Interrupt, 코드 상세 구현)

https://insoobaik.tistory.com/615  STM32 - UART 구현 - (2) (Echo, Polling 코드 상세 분석)https://insoobaik.tistory.com/614 STM32 - UART 구현 - (1)보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.comUART 통신은 기본적으로 8bit 데이터를 전송하기 때문에 char, uint8_tinsoobaik.tistory.comecho, polling 모드에 이어 interrupt 모드에 대해 알아볼 것이다.Interrupt 모드 Polling 모드의 경우 CPU가 주기적으로 상태를 확인하고 데이터를 처리해야 하기 때문에 사용량이 높은 반면 Interrupt 모드의 경우..

STM32 - UART 구현 - (2) (Echo, Polling 코드 상세 분석)

https://insoobaik.tistory.com/614 STM32 - UART 구현 - (1)보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.comUART 통신은 기본적으로 8bit 데이터를 전송하기 때문에 char, uint8_t와 같이 8bit 이하 데이터 전송만 가능하다.__io_putchar __io_putchar는 printf문을 출력하기 위한 가장 기본적인 함수다.putchar는 printf에 입력된 문자열의 문자 하나하나마다 함수가 실행된다. Transmit() 함수를 이용하여 전달받은 ch값을 UART 통신을 통해 출력한다. echo 모드 Uart의 echo 모드는 송신한 데이터를 수신 측에서 다시 그대로 송신 측으로 되돌려 보내는 모드를..

STM32 - UART 구현 - (1)

https://insoobaik.tistory.com/613 STM32 - UART 이론 - (2)보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.com이론 내용을 바탕으로 UART를 구현해보겠다. Nucleo board에 MCU파트와 ST-Link 파트가 있는데 MCU의 PD8, 9는 ST-Link와 송수신을 담당하는 Pin인 것을 확인할 수 있다.기본적으로 USART3을 사용하며 비동기식 방식을 사용한다. UART 통신에 필요한 Buad Rate, Word Length 등 값을 설정할 수 있다. UART를 Polling mode로 사용할지 Interrupt로 사용할지에 따라 체크를 해주면 된다.DataSheet를 보게되면 USART3은 APB1 Bus를 ..

STM32 - UART 이론 - (2)

https://insoobaik.tistory.com/612 STM32 - UART 이론 - (1)보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.comUART에 대한 기본적인 이론에 이어서 STM32를 통해 UART에 대해 조금 더 자세히 알아보겠다.UART (Universal Asynchronous Receiver/Transmitter) 범용 비동기식 직렬 통신 컨트롤러PC와 타겟 보드가 통신할 때 가장 기본으로 사용하는 통신 포트다. UART는 CPU와 PC등에 기본 장착되어 있어 호환성이 좋지만 1대 1 통신등의 제한이 있어 확장성이 떨어진다. UART는 RS-232형식을 따라 총 9개의 신호선으로 구성되어 있다.그 중 2 - Received Data..

728x90