PSoC UART 예제

Scott Schmit 작성, 2013년 11월 13일 마지막 수정

image

목적

UART(Universal Asynchronous Receiver/Transmitter, 범용 비동기 송수신기)는 임베디드 응용 분야에서 가장 일반적인 통신 형태 중 하나입니다. 본 게시글의 목적은 PSoC 소자를 위한 간단한 UART 예제를 제공하는 것입니다. 본 프로젝트의 펌웨어 개발에는 PSoC 3, 4, 5 및 5LP 소자를 위한 싸이프러스(현재는 인피니언)의 무료 개발 툴인 PSoC Creator가 사용되었습니다. 본 시연의 플랫폼으로는 PSoC4 Pioneer Kit이 사용되었지만, 본 프로젝트의 코드는 모든 PSoC 소자가 사용할 수 있습니다.

프로젝트 목표

본 프로젝트에서는 다음과 같은 목표를 달성할 것입니다. 단순히 본 프로젝트의 예제 코드만 살펴 보고 싶다면, 건너뛰셔도 됩니다.

  • PSoC Creator에서 프로젝트 기초부터 시작
  • 설계에 UART (SCB) 컴포넌트를 추가 및 설정
  • UART 통신에 사용할 핀 선택
  • UART 예제 코드 제공 및 설명
  • PC와의 UART 통신을 위한 하드웨어 연결 설정
  • PC에서 사용하는 단말 소프트웨어 설정

프로젝트 요구사항

PSoC4 Pioneer Kit에는 PSoC5 소자도 기판에 장착되어 있어서 본 프로젝트에서 UART/USB 브리지로 사용할 수 있습니다. 이를 통해 PC의 USB 포트를 사용하여 PSoC4 소자의 UART 포트와 통신할 수 있습니다. 제품이 배송될 때 PSoC5 소자의 펌웨어는 미리 프로그래밍되어 있기 때문에 우리가 추가 작업을 하지 않아도 됩니다. PSoC4와 PSoC5 소자를 2개의 점퍼 와이어를 사용하여 기판 헤더를 통해 연결해야 합니다. 아래 도구들이 본 프로젝트에 사용되었습니다:

  • PSoC Creator - 인피니언에서 제공하는 무료 펌웨어 개발 소프트웨어, 본 프로젝트에는 버전 2.2, 서비스 팩 1이 사용되었습니다.
  • PSoC4 Pioneer Kit - PSoC4 소자용 개발 플랫폼
  • Tera Term - PC용 무료 단말 에뮬레이터 소프트웨어

절차

PSoC Creator에서 프로젝트 기초부터 시작

image

  1. PSoC Creator를 실행
  2. File → New → Project 순으로 이동
  3. "Empty PSoC 4 (CY8C42*) Design"를 선택
  4. 프로젝트 이름을 "UART_Example"로 정하고 프로젝트를 저장할 위치를 선택한 후 “Ok” 클릭
  5. 이렇게 하면 프로젝트의 회로 화면으로 이동할 것이며 원하는 부품을 클릭하여 설계에 드래그할 수 있습니다. 빈 회로 페이지가 보이지 않으면, Workspace Explorer 창에서 "TopDesign.cysch"를 더블 클릭합니다.

UART (SCB) 컴포넌트를 추가 및 설정

image

  1. Component Catalog 창의 Communications 폴더에서 “UART (SCB Mode)” 컴포넌트를 클릭하여 페이지로 드래그합니다.
  2. 컴포넌트의 이름은 자동으로 "UART_1"이 될 것입니다. 컴포넌트를 더블 클릭하면 Configuration 창이 나타납니다. 이름을 "UART_1"에서 "PC_PSoC_UART"으로 바꿉니다. UART Basic 탭에서 다음 설정들을 확인합니다:
  • Mode: Standard
  • Direction: TX + RX
  • Baud Rate (kbps): 115200
  • Data bits: 8 bits
  • Parity: None
  • Stop bits: 1 bit
  • Oversampling 12
  1. 변경 사항 적용을 위해 "Apply"를 클릭한 후 "Ok"를 클릭하여 Configuration 창을 닫습니다.

UART 통신에 사용할 핀 선택

  1. Workspace Explorer 창에서 "UART_Example.cydwr"을 클릭합니다. PSoC 소자의 어떤 핀을 UART 통신에 사용할지 정의할 수 있는 곳입니다.
  2. 드롭다운 화살표가 있는 "PC_PSoC_UART:rx"와 "PC_PSoC_UART:tx"라는 2개의 신호가 있을 것입니다. 드롭다운 화살표를 사용하여 각 신호의 Port/Pin을 선택할 수 있습니다. "PC_PSoC_UART:rx"의 경우 P4[0]을 선택하고 "PC_PSoC_UART:tx"의 경우 P4[1]을 선택합니다.
  3. “UART_Example.cydwr” 탭을 저장하고 닫습니다.
  4. 프로젝트를 빌드합니다. 이렇게 하면 예제 코드에서 실행할 수 있는 UART 컴포넌트에 대한 함수를 자동으로 생성합니다.

UART 예제 코드

  1. Workspace Explorer 창에서 프로젝트의 “main.c” 파일을 엽니다.
  2. 다음 코드를 복사하여 “main.c” 파일에 붙여넣습니다:
#include <device.h>
 
void sys_init();
 
void main() {
    uint32 rxData;
    char test_string[] = "Hello World\n\r";
 
    sys_init();
 
    PC_PSoC_UART_UartPutString(test_string); // print test_string
 
    for(;;) // endless loop
    {
        rxData = PC_PSoC_UART_UartGetChar(); // store received characters in temporary variable
 
        if(rxData) { // make sure data is non-zero
            PC_PSoC_UART_UartPutChar(rxData); // echo characters in terminal window
 
            // Handle received characters
        }
    }
}
void sys_init (void) {
    PC_PSoC_UART_Start();
 
    // Add additional initialization code as desired
}
  1. 프로젝트를 저장하고 빌드합니다.

하드웨어 연결 설정

  1. Pioneer 보드에서 J3의 Pin10을 J8의 Pin10에 연결합니다.
  2. Pioneer 보드에서 J3의 Pin9를 J8의 Pin9에 연결합니다.
  • 이제 PSoC4 소자는 UART 신호를 USB 신호로 변환해 줄 PSoC5 소자에 연결되었습니다.
  1. USB 미니 B 케이블을 사용하여 PC의 비어 있는 USB 포트에 보드를 연결합니다.

PC 단말 소프트웨어 설정

image

  1. Tera Term을 엽니다.
  2. Setup → Serial Port 순으로 이동합니다.
  3. Pioneer 기판과 통신하는 COM Port를 선택합니다.
  4. 다음 설정을 확인합니다:
  • Baud rate: 115200
  • Data: 8 bit
  • Parity: none
  • Stop bits: 1 bit
  • Flow control: none
  • Transmit delay는 0이어야 합니다.
  1. "OK"를 클릭하여 Serial Port 설정 창을 닫습니다.

프로젝트 테스트 및 프로그램

  1. PSoC Creater에서 소자를 프로그래밍합니다(기판이 PC에 연결되어 있어야 합니다).
  2. Tera Term 창에서 "Hello World"가 출력되는 것을 볼 수 있습니다.
  3. 아래 처럼 단말에 문자를 입력하면 문자가 화면에 표시되는 것을 볼 수 있습니다.
    image

질문/코멘트

UART는 임베디드 응용 분야에서 가장 일반적인 통신 유형 중 하나입니다. 이 예제가 도움이 되었기를 바랍니다. UART 컴포넌트의 다른 설정들도 수정해서 PSoC Creator가 해당 컴포넌트용으로 생성한 사용 가능한 함수들을 통해 읽어보시기 바랍니다. 일종의 명령 프롬프트를 설정하고 해당 명령에 기반한 다양한 함수를 실행해 보시기 바랍니다. 이 페이지나 다른 페이지의 정보에 대한 질문이나 피드백은 해당하는 TechForum 카테고리에 질문을 게시해 주시기 바랍니다.



영문 원본: PSoC UART Example