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