200 likes | 536 Views
AVR UART Serial I/O. UART (U niversal A synchronous R eceiver/ T ransmitter. DTE(Data Terminal Equipment) DCE(Data Communication Equipment). Serial I/O Communication. DCE. DTE. Interface. UART. UART. USART and Asynchronous Communication Serial frame format.
E N D
UART(Universal Asynchronous Receiver/Transmitter. • DTE(Data Terminal Equipment) • DCE(Data Communication Equipment) • Serial I/O Communication DCE DTE Interface UART UART
USART and Asynchronous Communication • Serial frame format • Every frame will have at least • 1 start bit • data bits (5,6,7,8 or 9) • 1-2 stop bit • Parity is optional
USART and Asynchronous Communication • Start Bit 를 Sampling 하기 위하여 16배 속도의 내부 Clock를 사용 한다. • .
Error detection : Parity • Data bits의 XOR에 의하여 Parity Bit를 생성 한다. • Parity는 Even 과 Odd Parity 로 구분 한다. • Peven= dn XOR dn-1 XOR dn-2 ........ XOR d0 • Podd= dn XOR dn-1 XOR dn-2 ........ XOR d0 XOR 1 data bits Parity Bit
Error detection : Frame error • Frame Error : Stop Bit 가 발견 되지 않는 경우 • 첫 번째 Stop bit가 0으로 검출되는 경우 • Data Overrun Error : • 수신 버퍼에 현재 읽지 않은 데이터가 들어있는 상태에서 새로운 데이터가 수신 완료되고, 그 다음 수신 데이터인 Startbit가 검출된 경유 Stop bits
USART and Asynchronous Communication • Logic(0,1)의 전압 • TTL Logic : 0V, 5V • RS-232 : -12V, +12V
USART and Asynchronous Communication • USART Electrical path • MAX232 : Negative와 Positive 전압을 발생 시키는 Charge pump 기능을 포함 함. • DB9 connector : PC serial connector와 mating.
Serial Communication에 사용하는 Connector 예 • 간단한 RS232 Cable 연결 예
ATmega128 USART • UART : Universal Asynchronous Receiver and Transmitter • Asynchronous: 두 장치간에 clock 을 공유 하지 않는다. • Synchronous: clock 을 공유 한다. • USART : UART 의 기능과 Synchronous Communication을 포함 하고 있다. • Baud rate : 매 초간 전달(수신, 송신)되는 Symbol의 수 • Data rate : 매 초간 전달(수신, 송신)되는 Data 수 • Data rate = Baud rate / FrameBits(Data Bits + Start,Stop, Parity Bits)
ATmega128 USART • USART0 : Port E 사용 • PE0: Receive Pin • PE1: Transmit Pin • PE2: External Clock • USART1 : Port D 사용 • PD2: Receive Pin • PD3: Transmit Pin • PD5: External Clock
USART Programming Interface • UDRn: 8-bit Data Register • UBRRnH and UBRRnL: Baud Rate Registers • ( n은 0 또는 1) • 2개의 8-bit registers • UCSRnA, UCSRnB, UCSRnC: Control and • Status Registers
USART Data Registers • UDRn(Usart 0,1 I/O Data Register) • UDRn 레지스터는 송/수신되는 데이터 값을 저장하는 버퍼 역활을 하게 된다. • UDRn은 TXBn(송신버퍼)/RXBn(수신버퍼) 레지스터로 구성되고, 같은 I/O 주소를 갖는다. • 송신할 때는 TXBn에 데이터를 Write 하고, • 수신할 때는 RXBn의 테이터를 Read 한다.
Baud Rate Registers • USART internal clock 은 the UBRR register에 의하여 설정 된다. • 12 bits Baud Rate Rg UBRR의 값은 • UBRR = (System Clock / 16XBaud Rate) – 1 • 주의 :UBBRnH Write 후 UBBRnL를 나중에 Write 하여야 한다.
UCSRnA(USART Control and Status Register A) • Bit 7 – RXCn(USART Receive Complete) • Bit 6 – TXCn(USART Transmit Complete) • Bit 5 – UDREn(USART Data Register Empty) • Bit 4 – FEn(USART Frame Error) • Bit 3 – DORn(USART Data Overrun Error) • Bit 2 – UPEn(USART Parity Error) • Bit 1 – U2Xn(Double the USART Transmission Speed) • U2Xn = 1 : 비동기 모드에서 클럭의 분주비를 16에서 8로 낮추어 전송속도를 2배 높이는 기능. • Bit 0 – MPCMn(USART Multi-Processer Communication Mode)
UCSRnB(USART Control and Status Register B) • Bit 7 – RXCIEn(USART RX Complete Interrupt Enable) • Bit 6 – TXCIEn(USART TX Complete Interrupt Enable) • Bit 5 – UDRIEn(USART Data Register Empty Interrupt Enable) • Bit 4 – RXENn(USART Receiver Enable) • Bit 3 – TXENn(USART Transmitter Enable) • Bit 2 – UCSZn2(USART Character Size) • Bit 1 – RXB8n(USART Receive Data Bit 8) • Bit 0 – TXB8n(USART Transmit Data Bit 8)
UCSRnC(USART Control and Register C) • Bit 6 – USMSELn(USART Mode Select) • USMSELn = 1 : 동기전송모드 • USMSELn = 0 : 비동기전송모드 • Bit 5, 4 – UPMn1, UPMn0(USART Parity Mode)
UCSRnC(USART Control and Register C) • Bit 3 – USBSn(USART Stop Bit Select) • USBSn = 0 : 1 Stop bits • USBSn = 1 : 2 Stop bits • Bit 2, 1 – UCSZn1, UCSZn0(USART Character Size) • USBSnB의 UCSZn2, UCSZn1, UCSZn0의 설정에 따라 Character Size가 5-9Bits 로 결정 된다. • Bit 0 – UCPOLn(USART Clock Polarity) • 동기 전동 모드에서만 사용. • UCPOLn = 1 : 송신데이터는 XCKn Clock Falling Edge에서, 출력 수신데이터는 XCKn Clock Rising Edge 에서 검출 • UCPOLn = 0 : 송신데이터는 XCKn Clock Rising Edge 에서, 출력 수신데이터는 XCKn Clock Falling Edge에서 검출
ATmega128 USART 프로그램 예 • cho_uart_basic_i_o 참고 요