상위 수준 애플리케이션에서 UART 사용

Azure Sphere는 직렬 통신을 위해 UART(유니버설 비동기 수신기 송신기)를 지원합니다. UART는 컴퓨터 또는 주변 장치의 직렬 포트를 통해 데이터를 보내고 받는 데 사용되는 통합 회로의 유형입니다. UART는 널리 사용되고 단순함으로 유명합니다. 그러나 SPII2C와 달리 UART는 여러 하위 디바이스를 지원하지 않습니다.

참고

이 항목에서는 상위 수준 애플리케이션에서 UART를 사용하는 방법을 설명합니다. RTApps에서 UART 사용에 대한 자세한 내용은 실시간 지원 애플리케이션에서 주변 장치 사용을 참조하세요.

Azure Sphere 상위 수준 애플리케이션은 Applibs UART API를 호출하여 UART와 통신할 수 있습니다. UART_HighLevelApp 샘플은 MT3620 디바이스에서 UART와 통신하는 방법을 보여 줍니다.

UART 요구 사항

UART와 통신하는 애플리케이션은 적절한 헤더 파일을 포함하고 UART 설정을 애플리케이션 매니페스트에 추가해야 합니다.

모든 애플리케이션은 대상 하드웨어를 설정하고 해당 하드웨어 정의 헤더 파일을 포함해야 합니다.

헤더 파일

 #define UART_STRUCTS_VERSION 1
 #include <applibs/uart.h>
 #include "path-to-your-target-hardware.h"

UART_STRUCTS_VERSION 헤더 파일을 포함하기 전에 전처리기 정의를 선언합니다. 애플리케이션에서 사용하는 구조체 버전을 지정합니다.

"path-to-your-target-hardware.h"를 하드웨어의 헤더 파일 경로로 바꿉니다.

애플리케이션 매니페스트 설정

애플리케이션 매니페스트의 UART 설정에는 애플리케이션에서 액세스하는 UART가 나열됩니다. 한 번에 하나의 애플리케이션만 UART를 사용할 수 있습니다. 이러한 설정을 구성하려면 애플리케이션 매니페스트에 기능을 추가 Uart 한 다음 각 UART를 기능에 추가합니다. Azure Sphere 애플리케이션 매니페스트에는 애플리케이션 매니페스트 에 대한 자세한 내용이 있습니다.

코드에서 하드웨어에 대해 정의된 상수를 사용하여 UART를 식별합니다. 컴파일러는 앱을 빌드할 때 이러한 값을 원시 값으로 변환합니다.

예를 들어 MT3620 RDB(참조 개발 보드)를 대상으로 하고 MT3620 에서 두 개의 UART를 구성하는 애플리케이션 매니페스트에서 발췌한 내용이 여기에 있습니다.

"Uart": [ "$MT3620_RDB_HEADER2_ISU0_UART", "$MT3620_RDB_HEADER4_ISU1_UART" ],

다음 발췌문에서는 Avnet MT3620 시작 키트를 대상으로 하는 애플리케이션에서 동일한 UART를 지정하는 방법을 보여 줍니다.

"Uart": [ "$AVNET_MT3620_SK_ISU0_UART", "$AVNET_MT3620_SK_ISU1_UART" ],

UART 구성 및 열기

UART에서 작업을 수행하기 전에 설정을 구성하고 UART를 열어야 합니다. UART를 열면 UART에서 작업을 수행하는 함수에 전달할 수 있는 파일 설명자가 반환됩니다.

설정을 구성하려면 UART_InitConfig 함수를 호출하여 UART_Config 구조체를 초기화합니다. UART_Config 구조체를 초기화한 후 구조체에서 UART 설정을 변경할 수 있습니다.

UART를 열고 설정을 적용하려면 UART_Open 함수를 호출하고 UART_Config 구조체를 전달합니다.

UART에서 읽기 및 쓰기 작업 수행

POSIX 함수를 사용하여 UART에서 읽기 및 쓰기 작업을 수행할 수 있습니다. UART에서 읽기 작업을 수행하려면 read() 함수를 호출합니다. UART에서 쓰기 작업을 수행하려면 write() 함수를 호출합니다.

UART 닫기

UART를 닫려면 POSIX 함수 close()를 호출합니다.

MT3620 지원

이 섹션에서는 MT3620에서 Azure Sphere를 실행할 때만 적용되는 UART 옵션에 대해 설명합니다.

MT3620의 UART 사양은 MT3620 지원 상태에 나열됩니다. MT3620 개발 보드 사용자 가이드에서는 배선에 대한 핀 레이아웃 및 기능을 설명합니다.

Microsoft Azure Sphere SDK 설치 디렉터리의 HardwareDefinitions 폴더에는 일반적인 Azure Sphere 개발 보드, 모듈 및 칩에 대한 정의가 포함되어 있습니다. 여기에는 다른 MT3620 하드웨어와 함께 MT3620, MT3620 RDB에 대한 master 인터페이스를 정의하는 헤더 및 JSON 파일이 포함되어 있습니다. HardwareDefinitions 폴더의 기본 위치는 C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions Windows 및 /opt/azurespheresdk/HardwareDefinitions Linux에 있습니다.

다음 UART 설정이 지원됩니다. 8N1(데이터 비트 8개, 중지 비트 1개, 패리티 없음)이 기본 설정입니다.

  • MT3620 개발 보드를 구성할 때 모든 ISU 포트를 UART 인터페이스로 사용할 수 있습니다. ISU 포트를 UART 인터페이스로 사용하는 경우 I2C 또는 SPI 인터페이스와 동일한 포트를 사용할 수 없습니다.
  • 전송 속도: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000, 576000, 921600, 1000000, 1152000, 15000000 및 2000000.
  • 데이터 비트: 5, 6, 7 및 8.
  • 중지 비트: 1 및 2.
  • 패리티: 홀수, 짝수 및 없음.
  • 흐름 제어 모드: RTS/CTS, XON/XOFF 및 흐름 제어 없음.
  • 하드웨어 수신 버퍼: 32 바이트.

상위 수준 애플리케이션에서 UART를 사용하는 경우 사용 가능한 5개의 ISU 주변 장치 블록 핀 중 4개만 사용됩니다. 사용하지 않는 핀은 동일한 상위 수준 애플리케이션에서 GPIO 핀으로 사용할 수 있습니다. GPIO에 재사용할 수 있는 사용되지 않는 ISU 핀 목록은 I/O 주변 장치를 참조하세요.