본문 바로가기

[ATMEL]/SAMD21

Arduino Zero - Serial 어디에 정의 되어 있을까?

Arduino Zero - Serial 어디에 정의 되어 있을까?




Arduino Zero는 SAMD21 MCU이므로 6채널의 SERCOM 있다. UART 채널을 추가 하거나 변경하려고 보니 어디에 Serial 설정이 되어 있는지 정리할 필요가 있을것 같다.


Uart.h 에  Serial 관련 클래스가 할당되어 있다.

extern Uart Serial;

extern Uart Serial5;



기본은 PA10, PA11에 설정되어 있다.

typedef enum

{

UART_TX_PAD_0 = 0x0ul, // Only for UART

UART_TX_PAD_2 = 0x1ul, // Only for UART

UART_TX_RTS_CTS_PAD_0_2_3 = 0x2ul, // Only for UART with TX on PAD0, RTS on PAD2 and CTS on PAD3

} SercomUartTXPad;




void Uart::begin(unsigned long baudrate, uint8_t config)

{

  pinPeripheral(uc_pinRX, g_APinDescription[uc_pinRX].ulPinType);

  pinPeripheral(uc_pinTX, g_APinDescription[uc_pinTX].ulPinType);


sercom->initUART(UART_INT_CLOCK, SAMPLE_RATE_x16, baudrate);

sercom->initFrame(extractCharSize(config), LSB_FIRST, extractParity(config), extractNbStopBit(config));

sercom->initPads(UART_TX_PAD_2, SERCOM_RX_PAD_3);

sercom->enableUART();

}



Arduino Zero는 PA10, PA11에 UART가 설정되어 있다. 추가나 수정은 UART클래스를 이용하면 쉽게 설정 가능하다.

PA11 D0 SERCOM0.3 SERCOM2.3

PA10 D1 SERCOM0.2 SERCOM2.2






반응형