본문 바로가기

개발환경/Keil

UART 설정 - NUC029SGE

MCU는 NUC029SGE를 사용하였고 관련 데이터 시트는 아래 첨부했습니다.

TRM_NUC029xGE_Series_EN_Rev1.04.pdf
9.91MB

 

코드 분석

SYS_ResetModule(UART0_RST);

/* Enable UART module clock */
CLK_EnableModuleClock(UART0_MODULE);

/* Select HXT as the clock source of UART0 */
CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UARTSEL_HIRC, CLK_CLKDIV0_UART(1));

/* Set multi-function pins for UART0 RXD and TXD */
SYS->GPD_MFPL &= ~(SYS_GPD_MFPL_PD1MFP_Msk      );
SYS->GPD_MFPL |=  (SYS_GPD_MFPL_PD1MFP_UART0_TXD);	/*!< GPD_MFPL PD1 setting for UART0_TXD      */
SYS->GPD_MFPH &= ~(SYS_GPD_MFPH_PD9MFP_Msk      );
SYS->GPD_MFPH |=  (SYS_GPD_MFPH_PD9MFP_UART0_RXD);	/*!< GPD_MFPH PD9 setting for UART0_RXD      */

pUart = UART0;

pUart->BAUD = UART_BAUD_MODE2 | UART_BAUD_MODE2_DIVIDER(__HIRC, ulBps);
pUart->LINE = usPri | usStop | usDLen;

UART_EnableInt(pUart, UART_INTEN_RDAIEN_Msk);

 

1) SYS_ResetModule(UART0_RST);

UART0_RST 모듈을 Reset 하겠다.

 

2) CLK_EnableModuleClock(UART0_MODULE);

UART0_MODULE 모듈의 Clock을 활성화시키겠다.

 

3) CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UARTSEL_HIRC, CLK_CLKDIV0_UART(1));

CLK_SetModuleClock(Module index, Clock source, Divider);

UART0 모듈을 HIRC Clock source로 설정하고, clock divider0으로 설정하겠다.

 

4) 핀 설정

PD1UART0_TXD, PD9UART0_RXD로 설정하겠다.

 

5) pUart = UART0;

UART0(UART_T*)UART0_BASEUART 시작주소가 담긴 구조체 포인터

 

6) pUart->BAUD = UART_BAUD_MODE2 | UART_BAUD_MODE2_DIVIDER(__HIRC, ulBps);

TRM_NUC029xGE_Series_EN_Rev1.04(p905)

① UART_BAUD_MODE2

BAUDM1, BAUDM01,1로 각각 설정하여 전송 속도 계산 모드를 Mode2로 설정하겠다.

 

② UART_BAUD_MODE2_DIVIDER(_HIRC, ulBps)

UART Clock FrequencyHIRC, BaudRateulBps(ex 9600)로 하겠다.

 

결론적으로 UART Baud Rate Divider Register는 데이터를 주고 받는 속도, BaudRate을 설정하는 곳이다.

 

7) pUart->LINE = usPri | usStop | usDLen;

parity

오류를 검출하기 위해서 사용하는 비트

 

Stop Bits

끝났다는 bit를 몇 bit로 할 것인가

 

Word Length

한번에 보내는 데이터 단위

 

8) UART_EnableInt(pUart, UART_INTEN_RDAIEN_Msk);

수신 인터럽트 설정

 

결론

UART0의 모듈을 HIRC Clock source로 설정하고, clock divider0으로 설정하겠다.

UART0의 핀 설정 및 Baud rate, Parity, Stop Bits, Word Length을 설정하겠다.

UART0의 수신 인터럽트를 활성화하겠다.

'개발환경 > Keil' 카테고리의 다른 글

ADC 설정 - NUC029SGE  (1) 2023.11.18
타이머 설정 - NUC029SGE  (1) 2023.11.18
Clock 설정 - NUC029SGE  (0) 2023.11.18