Section 21. UART HIGHLIGHTS 매뉴얼의이번장은아래의주제를포함한다 : 21.1 소개... 21-2 21.2 제어레지스터 (Control Registers)...21-3 21.3 UART 보레이트발생기 (Baud Rate Generator(BRG))... 21-9 21.4 UART 구성... 21-13 21.5 UART 전송기 (Transmitter)... 21-14 21.6 UART 수신기 (Receiver)... 21-18 21.7 9비트커뮤니케이션을위한 UART 사용하기... 21-21 21.8 정지캐릭터 (Break Characters) 수신하기... 21-23 21.9 초기화 (Initialization)... 21-23 21.10 UART의다른특징들... 21-25 21.11 CPU Sleep 과 Idle Modes 동안 UART의동작... 21-27 21.12 UxCTS 와 UxRTS 제어핀의동작... 21-29 21.13 Infrared Support... 21-31 21.14 UART Module과관련된레지스터... 21-34 21.15 전기적설명서 (Electrical Specifications)... 21-35 21.16 설계팁 (Tips)... 21-36 21.17 Related Application Notes... 21-37 21.18 Revision History... 21-38 2007 Microchip Technology Inc. Advance Information DS39708B-page 1
21.1 Introduction 일반적인비동기성수신기전송기 <Universal Asynchronous Receiver Transmitter (UART)> 모듈은 PIC24F 장치계열에서사용가능한시리얼 I/O 모듈들중하나이다. UART 는 RS-232, RS-485, LIN 1.2 및 IrDA 와같은프로토콜을사용하는주변장치및개인용컴퓨터와연락하는전양방향, 비동기성통신채널이다. 이모듈은또한와핀들과함께하드웨어흐름제어옵션 (hardware flow control option) 을지원하고또한 IrDA 인코더와엔코더를포함한다. UART 모듈의주요특징 : 풀 - 듀플렉스 (Full-Duplex), UxTX, UxRX 핀을통해 8 또는 9 비트데이터전송 짝, 홀또는패리티 (Parity) 옵션없음 (for 8-bit data) 1 또는 2 개스톱비트 하드웨어자동 - 보드특징 (Hardware Auto-Baud Feature) 와핀을가진하드웨어흐름제어옵션 (Flow Control Option) 16 비트 Prescaler 을가진완전집적화된보레이트발생기 (Fully Integrated Baud Rate Generator) 16 MIPS 에서 1 Mbps 에서 15 bps 까지의영역을가진보드율 (Baud Rates) 4-Deep First-In-First-Out (FIFO) Transmit Data Buffer 4-Deep FIFO Receive Data Buffer 패리티, 프레밍 (Framing), 버퍼오버런에러검출 (Overrun Error Detection) 주소검출 (9 번째비트 =1) 과함께 9- 비트데이터모드를지원한다. 인터럽트를수신하거나전송한다. 진단상의지원 (for Diagnostic Support) 을위한루프백 (Loop back) 모드 IrDA 인코더와디코더논리 (Logic) LIN 1.2 프로토콜지원 외부 IrDA 인코더 / 디코더지원을위한 16x 보드클럭출력 (Baud Clock Output) Note: 각 PIC24F 장치변형은하나이상의 UART 모듈을가진고있을것이다. 핀의이름으로사용된 x 와제어 / 상태 (status) 비트와레지스터는특정한모듈을표시한다. 자세한사항에대해서는특정한장치데이터시트를참조하시오 2007 Microchip Technology Inc. Advance Information DS39718A-page 2
21.2 CONTROL REGISTERS Register 21-1: UxMODE: UARTx Mode Register 해설 : R = 읽기가능한비트 W = 쓰기가능한비트 U = 수행불가능한비트, 0 으로인식 -n = POR에서의값 1 = 비트 set 0 = 비트 clear x = 알수없는비트 bit 15 bit 14 bit bit 12 UARTEN: UARTx 인에이블 (Enable) 비트 1 = UARTx 는인에이블됨 ; UARTx 핀들은 UEN<1:0> 와 UTXEN 제어비트에의해서정의될때 UARTx 에의해서제어된다. 0 = UARTx 는사용불능 (disabled); UARTx 핀들은 PORT, LAT 와 TRIS 비트들에의해서제어된다. UFRZ: 디버그 (Debug) 모드비트에서프리즈 (Freeze) 1 = 에뮬레이터 (emulator) 가디버그모드일때, 모듈은동작을정지시킨다. 0 = 에뮬레이터 (emulator) 가디버그모드일때, 모듈은동작을유지시킨다. 13 USIDL: 아이들 (Idle) 모드비트에서정지 1 = 장치가아이들모드에진입할때동작을중지시킨다. 0 = 아이들모드에서동작을유지시킨다. IREN: IrDA 엔코더와디코더인에이블비트 (Encoder and Decoder Enable bit. 1 = IrDA 엔코더와디코더인에이블 (enabled) 0 = IrDA 엔코더와디코더디스에이블 (disabled) bit 11 RTSMD: 핀비트를위한모드선택 (Selection) 1 = 단신 (Simplex) 모드에서 0 = 플로우제어 (Flow Control) 모드에서 bit 10 bit 9-8 bit 7 ALTIO: UARTx Alternate I/O 선택비트 1 = UARTx 는 UxATX 와 UxARX I/O 핀들을이용하여통신한다. 0 = UARTx 는 UxTX 와 UxRX I/O 핀들을이용하여통신한다. UEN<1:0>: UARTx 인에이블 (Enable) 비트 11 = UxTX, UxRX 와 BCLKx 핀들은인에이블되며사용된다 ; 핀은포트래치 (port latches) 에의해통제된다. 10 = UxTX, UxRX, 와핀들은인에이블되며사용된다. 01 = UxTX, UxRX 와 UxRTS 핀들은인에이블되며사용된다 ; 핀은포트래치 (port latches) 에의해통제된다. 00 = UxTX and UxRX 핀들은인에이블되며사용된다 ;, UxRTS 와 BCLKx 핀은포트래치 (port latches) 에의해통제된다. WAKE: Enable Wake-up on Start bit Detect During Sleep Mode bit 1 = Wake-up 인에이블 0 = Wake-up 사용불능 2007 Microchip Technology Inc. Advance Information DS39718A-page 3
Register 21-1: UxMODE: UARTx Mode Register ( 이어지는 ) bit 6 bit 5 bit 4 bit 3 bit 2-1 bit 0 LPBACK: UARTx 루프백모드선택비트 (Loopback Mode Select bit) 1 = Loopback 모드인에이블 0 = Loopback 모드사용불능 ABAUD: 자동 - 보드인에이블비트 (Auto-Baud Enable bit) 1 = 다음캐릭터에서보레이트측정을인에이블시킨다. Sync field (55h) 의수신을요구한다 ; 완료되자마자하드웨어에서클리어된다. 0 = 보레이트측정을사용불능시키거나종결시킨다 RXINV: 수신극성반전비트 (Receive Polarity Inversion bit) 1 = UxRX 아이들 (Idle) 상태는 0 이다. 0 = UxRX 아이들 (Idle) 상태는 1 이다. BRGH: 하이보레이트선택비트 (High Baud Rate Select bit) 1 = High speed 0 = Low speed PDSEL<1:0>: 패리티 (Parity) 와데이터선택비트 11 = 9-bit data, no parity 10 = 8-bit data, odd parity 01 = 8-bit data, even parity 00 = 8-bit data, no parity STSEL: 정지선택비트 1 = 2 정지비트 0 = 1 정지비트 Note 1: 이러한특징은오직 16x BRG 모드 (BRGH =.0.) 에서만이용가능하다. 2: The alternate UART I/O 핀은모든장치에서사용가능한것이아니다. 자세한사항은구체적인장치데이터시트를참조하시오. 2007 Microchip Technology Inc. Advance Information DS39718A-page 4
Register 21-2: UxSTA: UARTx Status and Control Register 해설 : R = 읽기가능한비트 W = 쓰기가능한비트 U = 수행불가능한비트, 0 으로인식 -n = POR에서의값 1 = 비트 set 0 = 비트 clear x = 알수없는비트 bit 15,13 UTXISEL<1:0> Transmission Interrupt Mode Selection bits 11 = 예약됨 10 = 캐릭터가전송시프트레지스터에전달되고전송버퍼가비게될때인터럽트가발생된다. 01 = 마지막전송이끝나고 ( 마지막캐릭터가전송시프트레지스터에서나옴 ) 모든전송동작이완료될때인터럽트가발생한다. 00 = 어떤캐릭터가전송시프트레지스터에전송될때 ( 이것은전송버퍼에적어도 1개의위치가비어있다는것을암시한다 ) bit 14 UTXINV: Transmit Polarity Inversion bit IREN = 0: 1 = UxTX 아이들상태는 0 이다. 0 = UxTX 아이들상태는 1 이다. IREN = 1: 1 = IrDA encoded UxTX Idle state is 1 0 = IrDA encoded UxTX Idle state is 0 bit 12 Unimplemented: 0 으로읽음. bit 11 UTXBRK: Transmit Break bit 1 = 전송기상태에관계없이 ( 싱크브레이크전송-12번째 0 과정지비트에의해뒤따라온다 ) UxTX 핀은 low로간다. 0 = 싱크브레이크전송은불능되고완료된다. bit 10 UTXEN: Transmit Enable bit 1 = UARTx 전송기는인에이블되고 UxTX 핀은 UARTx에의해제어된다. ( UARTEN = 1인경우 ) 0 = UARTx 전송기는불능되고, 어떤대기중인전송은취소되며버퍼는리셋된다. UxTX 핀은포트에의해제어된다. bit 9 UTXBF: Transmit Buffer Full Status bit (read-only) 1 = 전송버퍼는 full 이다. 0 = 전송버퍼는 full이아니다. 적어도하나이상의데이터워드가쓰여질것이다. bit 8 TRMT: Transmit Shift Register is Empty bit (read-only) 1 = 전송시프트레지스터는비게되고전송버퍼도비게된다. ( 마지막전송은완료된다.) 0 = 전송시프트레지스터는비어있지않으며, 전송은진행중이거나전송버퍼에쌓여있게된다. bit 7-6 URXISEL<1:0>: Receive Interrupt Mode Selection bits 11 = 수신버퍼가 full 이면인터럽트플래그발생한다. ( 즉, 4 데이터캐릭터를가지고있다 ) 10 = 수신버퍼가 3/4 차있으면인터럽트플래그가발생한다 ( 즉, 3 데이터캐릭터를가지고있다 ) 0x = 캐릭터가수신될때인터럽트플래그는 set 된다. 2007 Microchip Technology Inc. Advance Information DS39718A-page 5
Register 21-2: UxSTA: UARTx Status and Control Register (Continued) bit 5 ADDEN: Address Character Detect bit (bit 8 of received data = 1) 1 = 주소검출모드인에이블. 만약 9 비트모드가선택되지않으면이제어비트는영향을미치지않는다. 0 = 주소검출모드는불능이다. bit 4 RIDLE: Receiver Idle bit (read-only) 1 = 수신기아이들 (idle) 0 = 데이터가수신되는중 bit 3 PERR: Parity Error Status bit (read-only) 1 = 패래티에러는현재캐릭터를위해검출된다. 0 = 패리티에러는검출되지않는다. bit 2 FERR: Framing Error Status bit (read-only) 1 = 프레밍에러는현재캐릭터를위해검출된다. 0 = 프레밍에러는검출되지않는다. bit 1 OERR: Receive Buffer Overrun Error Status bit (clear/read-only) 1 = 수신기버퍼는오버플로우를가지고있다. 0 = 수신기버퍼는오버플로우를가지고있지않다. (clearing a previously set OERR bit will reset the receiver buffer and RSR to empty state) bit 0 URXDA: Receive Buffer Data Available bit (read-only) 1 = 수신버퍼는데이터를가지고있고, 적어도하나이상의캐릭터가읽힐수있다. 0 = 수신버퍼는비어있다. 2007 Microchip Technology Inc. Advance Information DS39718A-page 6
Register 21-3: UxRXREG: UARTx Receive Register 해설 : R = 읽기가능한비트 W = 쓰기가능한비트 U = 수행불가능한비트, 0 으로인식 -n = POR에서의값 1 = 비트 set 0 = 비트 clear x = 알수없는비트 bit 15-9 Unimplemented: 0 으로읽기 bit 8 URX8: 수신된캐릭터의데이터비트 8 (9-비트모드에서 ) bit 7-0 URX<7:0>: 수신된캐릭터의데이터비트 7-0 Register 21-4: UxTXREG: UARTx Transmit Register ( 읽기만 ) 해설 : R = 읽기가능한비트 W = 쓰기가능한비트 U = 수행불가능한비트, 0 으로인식 -n = POR에서의값 1 = 비트 set 0 = 비트 clear x = 알수없는비트 bit 15-9 Unimplemented: 0 으로읽기 bit 8 URX8: 수신된캐릭터의데이터비트 8 (9-비트모드에서 ) bit 7-0 URX<7:0>: 수신된캐릭터의데이터비트 7-0 2007 Microchip Technology Inc. Advance Information DS39718A-page 7
Register 21-5: UxBRG: UARTx Baud Rate Generator Register 해설 : R = 읽기가능한비트 W = 쓰기가능한비트 U = 수행불가능한비트, 0 으로인식 -n = POR에서의값 1 = 비트 set 0 = 비트 clear x = 알수없는비트 bit 15-0 BRG<15:0>: bits 보레이트발생기약수비트 (Baud Rate Generator Divisor) 2007 Microchip Technology Inc. Advance Information DS39718A-page 8
21.3 UART BAUD RATE GENERATOR (BRG) UART 모듈은전용의 16- 비트보레이트발생기 (Baud Rate Generator) 를포함한다. UxBRG 레지스터는프리 - 러닝 (free-running) 과 16- 비트타이머의주기를제어한다. 표 21-1 은 BRGH = 0 에서의보레이트의계산을위한공식을보여준다. Equation 21-1: UART Baud Rate with BRGH = 0 Note: FCY 는명령사이클클럭주파수 (instruction cycle clock frequency) 를나타낸다 <FOSC/2> Example 21-1 는다음의상태에서보레이트에러계산을보여준다 :. FCY = 4 MHz. Desired Baud Rate = 9600 Example 21-1: Baud Rate Error Calculation (BRGH = 0) 최대보레이트 (BRGH = 0) 는 FCY/16 (UxBRG = 0 동안 ) 이가능하고최소보레이트는 FCY/16 * 65536 이가능하다. 식 21-2 는 BRGH = 1 인보레이트계산공식을보여준다. Equation 21-2: UART Baud Rate with BRGH = 1 Note: FCY 는명령사이클클럭주파수 (the instruction cycle clock frequency) 를나타낸다. 낸 최대보레이트 (BRGH = 1) 는 FCY/4 (UxBRG = 0 동안 ) 이가능하고최소보레이트는 FCY/(4 * 65536) 이가능하다. UxBRG 레지스터에새로운값을쓰는것은 BRG 타이머가리셋 (cleared) 되는것을야기한다. 이것은 BRG가새로운보레이트를발생하기전에는타이머오버플로우를기다리지않는다는것을보장한다. 2007 Microchip Technology Inc. Advance Information DS39718A-page 9
21.3.1 BCLKx 출력 UARTx 와 BCLKx 출력이가능하게되는경우 (UEN<1:0> = 11), BCLKx 핀은 16x 보레이트클럭을출력할것이다. 이특징은외부 IrDA 인코더 / 디코더서포트 (support) 를위해사용된다. ( 표 21-2 참조 ) BCLKx 출력은슬립모드동안 low 로지속된다. UARTx 가이모드 (UEN<1:0> = 11) 로유지되어있는한 PORTx 와 TRISx 래치 (latch) 비트에관계없이 BCLKx 는출력으로강요된다. Figure 21-2: BCLKx Output vs. UxBRG Programming 2007 Microchip Technology Inc. Advance Information DS39718A-page 10
21.3.2 Baud Rate Tables UART 보레이트는일반적인장치명령주기주파수 (FCY) 를위한표 21-1 와 21-2 에서제공된다. 각주파수를위한최소, 최대보레이트는또한보여진다. Table 21-1: UART Baud Rates (BRGH = 0) 2007 Microchip Technology Inc. Advance Information DS39718A-page 11
Table 21-2: UART Baud Rates (BRGH = 1) 2007 Microchip Technology Inc. Advance Information DS39718A-page 12
21.4 UART CONFIGURATION UART 는표준 Non-Return-to-Zero (NRZ) 포맷을사용한다. (1 개시작비트, 8 또는 9 개의데이터비트와 2 개스톱비트 ). 패리티 (Parity) 는하드웨어에의해지원되고 even, odd 또는정지패리티와같은사용자에의해형성가능하다. 가장공통적인데이터포맷은 8 비트, no parity 와 one Stop bit 이며이것은디폴트 <default(por)> 설정이다. 데이터비트와정지비트그리고패리티 (parity) 는 PDSEL<1:0> (UxMODE<2:1>) 와 STSEL (UxMODE<0>) 비트에서지정된다. 16- 비트보레이트발생기는오실레이터로부터표준보레이트주파수를끌어내는데이용될수있다. 있다. UART 는 LSb 를첫째로전달하고받는다. UART 모듈의전송기와수신기는기능적으로독립적이지만같은데이터포맷과보레이트를사용한다. 21.4.1 Enabling the UART UART 단위는 UARTEN (UxMODE<15>) 비트와 UTXEN (UxSTA<10>) 비트를설정함으로이용된다. 사용됨에따라즉시 UxTX 와 UxRX 핀은되며개별적으로통신 I/O 포트핀을위한 TRIS 와 PORT 레지시터를무시하는입력과출력으로구성된다. 어떤전송도발생하지않을때 UxTX 핀은논리 1 이다. Note: UTXEN 비트는 UARTEN 비트가설정될때까지설정되지말아야한다. 그렇지않으면 UART 전송이사용가능하지않을것이다. 21.4.2 Disabling the UART UART 모듈은 UARTEN (UxMODE<15>) 비트를클리어하여사용불능된다. 어떤리셋후에이것은디폴트 (default) 상태이다. UART 가불능인경우, 모든 UART 핀은핀들이대응하는 PORT 와 TRIS 비트의통제하에서포트핀으로서작동한다. UART 모듈을불능으로하는것은버퍼를비어있는상태로리셋시킨다. 버퍼들에있는어떤데이터캐릭터들은손실되며보레이트카운터도리셋된다. 모듈이불능일때 UART 모듈과관련된모든에러와상태플래그 (status flags) 는리셋된다. URXDA, OERR, FERR, PERR, UTXEN, UTXBRK, UTXBF 비트는클리어되며반면에 RIDLE 와 TRMT 는 set 된다. UxMODE 와 UxBRG 레지스터뿐만아니라 ADDEN, URXISEL<1:0>, UTXISEL<1:0> 을포함하는다른제어비트들은영향받지않는다. UART 가 active 인동안 UARTEN 비트를클리어하는것은모든대기중인전송과수신을중지하고상기정의된대대로모듈을리셋한다. UART 를재작동시키는것은동일한구성에있는 UART 을재시작할것이다. 21.4.3 Alternate UART I/O Pins 어떤 PIC24F 장치는통신을위해사용될수있는 UART 전송과수신핀들의대체구성을가지고있다. 주요 UART 핀이다른주변장치에의해공유될때대체 UART 핀은유용하다. 대체 I/O 핀은 ALTIO 비트 (UxMODE<10>) 을설정하여가능하게된다. ALTIO=1 인경우, UxATX 와 UxARX 핀 ( 각각의대체전송과대체수신핀들 ) 은 UxTX 와 UxRX 대신에 UART 모듈에의해사용된다. ALTIO= 0 경우, UxTX 와 UxRX 핀들은 UART 모듈에의해사용된다. 2007 Microchip Technology Inc. Advance Information DS39718A-page 13
21.5 UART TRANSMITTER UART 전송기블록다이어그램은표 21-3 에나타난다. 전송기의핵심은전송시프트레지스터 (UxTSR) 이다. 시프트레지스터는데이터를전달 FIFO 버퍼와 UxTXRE 에서얻는다. UxTXREG 레지스터는데이터와함께소프트웨어에적재된다. UxTSR 레지스터는정지비트가이전의적재 (load) 로부터전송될때까지적재되지않는다. 정지비트가전송되자마자 UxTSR 는 UxTXREG 레지스터로부터새로운데이터와함께적재된다 ( 사용가능하다면 ). Note: UxTSR 레지스터는데이터메모리에서표시되지않는다. 그래서사용자는이용할수없다. Figure 21-3: UARTx Transmitter Block Diagram 전송은 UTXEN 인에이블비트 (UxSTA<10>) 를설정함으로이용가능하다. UxTXREG 레지스터가데이터와함께적재되고보레이트발생기 (UxBRG) 가시프트클럭 (clock) 를발생시킬때까지 ( 표 21-3) 적재될때까지실제적인전송은일어나지않을것이다. 전송은또한 UxTXREG 레지스터를처음적재함으로그리고그후 UTXEN 인에이블비트를설정함으로서시작할수있다. 정상적으로전송이처음시작할때 UxTSR 레지스터는비어있다. 그래서 UxTXREG 레지스터로의전송은 UxTSR 로의즉각적인 (immediate) 전송이될것이다. 전송동안 UTXEN 비트를클리어하는것은전송이중지되지것을야기하며전송은리셋 (reset) 될것이다. 그결과 UxTX 핀은 high-impedance 상태로바뀔것이다. Note: UARTEN 비트를설정하는것과 UxTXREG 비트를설정하는것사이에최소 1 클럭사이클지연이있다. 이것은전송라인이전송이시작되기전에적절한시간동안 idle 로유지되지것을알린다. 9 비트전송을선택하기위해, PDSEL<1:0> 비트 (UxMODE<2:1>) 는반드시 11 로 set 되어야한다. 그리고 9 번째비트는 UTX8 bit (UxTXREG<8>) 에반드시쓰여져야한다. 워드읽기는모든 9 번째비트가같은시각에쓰여지기위해서 UxTXREG 에서수행되어야한다 Note: 9 비트데이터전송인경우어떤패리티도없다. 2007 Microchip Technology Inc. Advance Information DS39718A-page 14
21.5.1 Transmit Buffer (UxTXREG) 전송버퍼는 9 bit 의폭 (wide) 와 5 단계의깊이 (levels deep) 이다. 전송쉬프트레지스터들 (UxTSR) 과함께사용자는효과적으로 5- 단계깊이 (deep) 의버퍼를가지고있다. 이것은 First-In-First-Out (FIFO) 로구성된다. 일단 UxTXREG 내용들이 UxTSR 레지스터로옮겨지면, 현재버퍼위치는쓰여진새로운데이터를위해유효하게되고다음버퍼위치는 UxTSR 레지스터에명시된다. UTXBF (UxSTA<9>) 상태비트는버퍼가가득찰때마다 set 된다. 사용자가가득차있는버퍼에쓰는것을시도하는경우에, 새로운데이터는 FIFO 로허용되지않을것이다. 어떤장치리셋동안 FIFO 는리셋된다. 그러나장치가 Power-Saving mode 에들어가거나나올때에는영향받지않는다. 21.5.2 Transmit Interrupt 전송인터럽트플래그 <Transmit Interrupt Flag (UxTXIF)> 는대응인터럽트플래그상태 (IFSx) 레지스터에위치한다. UTXISEL<1:0> 제어비트 (UxSTA<15,13>) 는 UART 가전송인터럽트를발생하는시기를결정한다. 1. UTXISEL<1:0> = 00, UxTXIF 는캐릭터가전송버퍼로부터전송시프트레지스터 (UxTSR) 에전송될때 set 된다. 이것은전송버퍼에적어도 1 개의위치가비어있다는것을나타낸다. 2. UTXISEL<1:0>= 01, UxTXIF 는마지막캐릭터가전송시프트레지스터 (UxTSR) 의안에서이동될때 set 된다. 이것은모든전송동작이완료된것을나타낸다. 3. UTXISEL<1:0>= 10, UxTXIF 는캐릭터가전송시프트레지스터 (UxTSR) 에전송될때 set 되며전송버퍼는비어진다. UxTXIF 비트는모듈이처음사용가능될때 set 될것이다. 사용자는 ISR 에있는 UxTXIF 비트를클리어해야한다. 동작도중 2 개의인터럽트모드를스위칭 (switching) 하는것은가능하다. Note: UTXEN 비트가 set 일때, 2 cycles 후에 UxTXIF 플래그비트는또한 set 되며, 만약 UTXISEL<1:0> = 00, 전송버퍼가아직 full 이아니다 ( 전송데이터를 UxTXREG 레지스터에이동가능하다 ). UxTXIF 플래그비트가 UxTXREG 레지스터의상태를나타내는동안, TRMT 비트 (UxSTA<8>) 는 UxTSR 의상태를보여준다. TRMT 상태비트는 UxTSR 가비어있을때 set 되는읽기전용비트이다. 어떤인터럽트로직도이비트에관여받지않는다. 그래서사용자는 UxTSR 가비어있는지를결정하기위하여이비트를폴링해야한다. 2007 Microchip Technology Inc. Advance Information DS39718A-page 15
21.5.3 Setup for UART Transmit 전송을설정하는할때다음을따르시오 : 1. 적절한보레이트를위해 UxBRG 레지스터를초기화하십시오 ( 표 21.3.UART 보레이트발생기 (BRG) 를보십시오 ) 2. PDSEL<1:0> (UxMODE<2:1>) 와 STSEL (UxMODE<0>) 비트를쓰기하여자료비트의수, 스톱비트의수및패리티선택 (parity selection) 을설정하십시오. 3. 전송인터럽트가요구되는경우, 대응인터럽트인에이블제어레지스터 (IECx) 에있는 UxTXIE 제어비트를설정하시오. 대응인터럽트우선제어레지스터 < corresponding Interrupt Priority Control register (IPCx)> 에있는 UxTXIP<2:0> 제어비트를사용하는전송인터럽트를위한인터럽트우선권을지정하십시오. 또한, UTXISEL<1:0> (UxSTA<15,13>) 비트를쓰기하여전송인터럽트모드를선택하시오. 4. UARTEN (UxMODE<15>) 비트를설정하여 UART 모듈을인에이블하시오. 5. UxTXIF 비트를또한설정하는 UTXEN (UxSTA<10>) 비트를설정하여전송을인에이블하시오. UxTXIF 비트는 UART 전송인터럽트를서비스하는소프트웨어루틴에서반드시클리어되어야한다. UxTXIF 비트의동작은 UTXISEL<1:0> 제어비트에의해제어된다. 6. 데이터를 UxTXREG 레지스터 ( 전송을시작한다 ) 에적재한다. 만약 9- 비트전송이선정되면워드를적재하시오. 8 비트전송이사용되는경우에, 바이트를적재하십시오. UTXBF 상태비트 (UxSTA<9>) 가설정될때까지데이터는버퍼로적재될수있다. Note: UTXEN 비트는 UARTEN 비트가설정될때까지설정되지말아야한다 ; 그렇지않으면, UART 전송은가능하게되지않을것이다 Figure 21-4: Transmission (8-Bit or 9-Bit Data) Figure 21-5: Transmission (Back-to-Back) 2007 Microchip Technology Inc. Advance Information DS39718A-page 16
21.5.4 Transmission of Break Characters 브레이크캐릭터전송은 0 의 12 비트와정지비트에의한시작비트로이루어져있다. 프레임 (frame) 브레이크캐릭터는전송시프트레지스터가데이터와같이적재되는동안 UTXBRK 와 UTXEN 비트가 set 될때마다보내진다. UxTXREG 레지스터에가상쓰기는브레이크캐릭터전송을시작하기위해필요하다. 브레이크캐릭터를위한 UxTXREG 에쓰여진데이터값이무시됨을주의하시오. 쓰기는간단하게적절한순서를초기화시키는목적에도움이된다. 모든 0 는전달될것이다. UTXBRK 비트는대응정지비트가보내진후하드웨어에의해자동적으로리셋된다. 이것은사용자가브레이트캐릭터 ( 전형적으로, LIN 설명에서는 Sync 캐릭터 ) 에이어서다음전송바이트와함께전송 FIFO 을미리적재하는것을허용한다. Note: 사용자는 UTXBRK 을설정하기전에반드시전송이아이들 (idle) (TRMT = 1) 되는것을기다려야한다. UTXBRK 는다른어떤전송기활동을무시한다. 사용자가순서 (sequence) 완료이전에 UTXBRK 비트를클리어하는경우, 예상외의모듈동작이일어날수있다. 브레이크캐릭터를보내는것은전송인터럽트를생성하지않는다. TRMT 비트는정상동작동안하는것처럼전달시프트레지스터가비어있거나풀 (full) 일때를나타낸다. 브레이크캐릭터순서의타이밍을위해표 21-6 를보십시오. Figure 21-6: Send Break Character Sequence 21.5.4.1 BREAK AND SYNC TRANSMIT SEQUENCE 뒤에오는순서는브레이크로구성된메시지프레임헤더를보내고그다음에자동 - 보드싱크바이트를보낼것이다. 이순서는 LIN 버스마스터의전형이다. 1. 요구된모드를위한 UART 를구성하십시오. 2. UTXEN 와 UTXBRK 를설정하시오 - 브레이크캐릭터를설치하시오. 3. 전송을개시하기위해가상캐릭터에 UxTXREG 를적재하십시오 ( 값은무시된다 ). 4. UxTXREG 에 55h 를쓰시오 - 전송 FIFO 로 Sync 캐릭터를적재하시오. 브레이크가보내진후에, UTXBRK 비트는하드웨어에의해리셋된다. Sync 캐릭터는이제전송된다. 2007 Microchip Technology Inc. Advance Information DS39718A-page 17
21.6 UART RECEIVER UART 전송기블록다이어그램은표 21-7 에나타난다. 수신기의핵심은수신 (Serial) 시프트레지스터 (UxRSR) 이다. 데이터는 UxRX 핀에서수신되고데이터복구블록으로보내진다. 메인수신시리얼시프터가보레이트로동작하는반면에데이터복구다이어그램은보레이트의 16 배로동작한다. 정지비트를위한 UxRX 핀을샘플링 (sampling) 한후에, UxRSR 에있는수신된데이터는수신 FIFO ( 비어있는경우 ) 로전송된다. Note: UxRSR 레지스터는데이터메모리에나타나지않는다. 그래서사용자에게는사용가능하지않다 21.6.1 Receive Buffer (UxRXREG) UART 수신기는 9-bit 폭 (wide) FIFO 수신데이터버퍼, 4 깊이 (deep) 를가지고있다. UxRXREG 는 FIFO 의출력에접근을제공하는레지스터에의해맵 (mapped) 되어있는메모리이다. 데이터의 4 워드가 FIFO 로수신되고전송되는것은가능하다. 5 번째워드가버퍼오버런 (overrun) 이발생하기전에 UxRSR 레지스터로시프팅 (shifting) 하는것이가능하다. 21.6.2 Receiver Error Handling 만약 FIFO 가가득차있고 (4 캐릭터 ) 그리고 5 번째캐릭터가 UxRSR 레지스터로완전히받아지는는경우, 오버런 (Overrun) 에러비트, OERR (UxSTA<1>), 는 set 된다. UxRSR 에있는워드는유지될것이다. 그러나 OERR 비트가 set 되는동안수신 FIFO 로의더앞의전송은금지될것이다. 더앞의전송이수신되게하기위해사용자는소프트웨어에있는 OERR 비트를반드시클리어해야한다. 만약오버런이전에수신된데이터를유지시키는것이요청된다면사용자는모든 5 캐릭터를처음으로읽어야하며그후 OERR 비트클리어해야한다. 만약 5 개의캐릭터가버려지는경우에, 사용자는간단히 OERR 비트르클리어할수있다. 이것은효과적으로수신 FIFO 를 reset 하고모든이전수신된데이터는손실된다. Note: 수신 FIFO 에있는데이터는 OERR 비트를클리어하기이전에반드시읽혀야한다. 버퍼에있는모든데이터가손실되는것을야기하는 OERR 이클리어될때 FIFO 는 reset 된다 스톱비트가 logic low level 에서검출되는경우에프레밍 (Framing) 에러비트는, FERR (UxSTA<2>), set 된다. 만약패리티에러가버퍼의최상의데이터워드에서서검출되는경우 ( 즉, 현재워드 ) 패리티에러비트는, PERR (UxSTA<2>), set 된다. 예를들면, 패리티에러는패리티가짝 (even) 으로놓이는경우에발생한다. 그러나데이터안의전체수는홀 (odd) 로검출된다. PERR 비트는 9- 비트모드에서무관하다. FERR 와 PERR 비트는대응하는워드와함께버퍼되고데이터워드를읽기전에반드시읽혀야한다. 만약이것들중하나의에러가 (OERR, FERR 및 PERR) 발생하면인터럽트가발생된다. 이발생된인터럽트는오직 1 주기동안만유효하다. 사용자는대응하는인터럽트벡터위치로이동하기위해대응인터럽트인에이블제어비트 (IEC4<UxERIE>) 를인에이블해야할것이다. 21.6.3 Receive Interrupt UARTx 수신인터럽트플래그 (UxRXIF) 는대응인터럽트플래그상태 (IFSx) 레지스터에위치해있다. URXISEL<1:0> (UxSTA<7:6>) 제어비트는 UART 수신기의인터럽트발생시기를결정한다. a) URXISEL<1:0> = 00 또는 01, 인터럽트는데이터워드가수신시프트레지스터 (UxRSR) 에서수신버퍼로전송되는매시기를발생시킨다. 수신버퍼에는한개또는그이상이있을것이다. b) URXISEL<1:0> = 10, 워드가수신시프트레지스터 (UxRSR) 에서수신버퍼로전송될때인터럽트가발생된다. 그결과수신버퍼는 3 또는 4 캐릭터를포함한다. c) URXISEL<1:0> = 11, 워드가수신시프트레지스터 (UxRSR) 에서수신버퍼로전송될때인터럽트가발생된다. 그결과수신버퍼는 4 캐릭터터를포함한다 ( 즉. full 이됨 ). 동작도중 3 개의인터럽트모드를바꾸는것은가능하다. 2007 Microchip Technology Inc. Advance Information DS39718A-page 18
URXDA 와 UxRXIF 플래그비트가 UxRXREG 레지스터의상태를나타내는동안, RIDLE 비트 (UxSTA<4>) 는 UxRSR 레지스터의상태를보여준다. RIDLE 상태비트는수신기가아이들 (idle) 때 set 되는읽기전용비트이다 ( 즉, UxRSR 레지스터는비어진다 ). 인터럽트로직은이비트에통제받지않는다. 그래서사용자는이 UxRSR 가아이들 (idle) 인지를결정하기위하여이비트를폴 (poll) 해야한다. URXDA 비트 (UxSTA<0>) 는수신버퍼가데이터를가지고있는지또는버퍼가비어있는지를가리킨다. 수신버퍼로부터적어도한개의캐릭터가읽히는동안이비트는 set 된다. URXDA 는읽기전용비트이다. 표 21-7 은 UARTx 수신기의블록다이어그램을보여준다. Figure 21-7: UARTx Receiver Block Diagram 2007 Microchip Technology Inc. Advance Information DS39718A-page 19
21.6.4 Setup for UART Reception 수신을설정할때다음을따르시오. 1. 적합한보레이트를위한 UxBRG 레지스터를초기화하십시오 (Section 21.3 UART 보레이트발생기 (BRG) 를보십시오 ). 2. PDSEL<1:0> (UxMODE<2:1>) 와 STSEL (UxMODE<0>) 비트에쓰기하여데이터비트의수, 스톱비트그리고패리티선택을 set 하십시오. 3. 인터럽트가요구되는경우, 그후대응인터럽트인에이블제어 (IECx) 레지스터에있는 UxRXIE 비트를 set 하시오. 대응인터럽트우선권제어레지스터 (IPCx) 에있는 UxRXIP<2:0> 제어비트를사용하는인터럽트를위한인터럽트르우선권을지정하십시오. 또한, URXISEL<1:0> (UxSTA<7:6>) 비트에쓰기하여수신인터럽트모드를선택하시오. 4. UARTEN (UxMODE<15>) 비트를 set 하여 UART 모듈을인에이블하십시오. 5. 수신인터럽트는 URXISEL<1:0> 제어비트설정에의존한다. 만야수신인터럽트가인에이블되지않으면, 사용자는 URXDA 비트를폴 (poll) 할수있다. UxRXIF 비트는 UART 수신인터럽트를서비스하는소프트웨어루틴 (routine) 안에서클리어되어야한다. 6. 버퍼에서데이터를읽으십시오. 9- 비트전송이선택되는경우에, 워드를읽으십시오. 그렇지않으면, 바이트를읽으십시오. URXDA 상태비트 (UxSTA<0>) 는버퍼에서데이터가유효할때마다 set 될것이다. Figure 21-8: UARTx Reception Figure 21-9: UARTx Reception with Receive Overrun 2007 Microchip Technology Inc. Advance Information DS39718A-page 20
21.7 USING THE UART FOR 9-BIT COMMUNICATION 9 비트데이터모드안의 UART 수신기는다중처리기커뮤니케이션을위해사용될수있다. 9- 비트데이터모드안의 ADDEN 비트가 set 됨에따라데이터의 9 비트가 0 이될때데이터를무시할수있다. 이특징은다중처리기환경에서이용될수있다. 21.7.1 Multiprocessor Communications 일반적인다중처리기통신프로토콜은바이트자료및주소 / 제어바이트사이에서식별할것이다. 데이터바이트가주소인지또는데이터정보인지확인하기위해서일반적인설계는 9 번째데이터비트를이용하는것이다. 9 번째비트가 set 인경우에, 데이터는주소또는제어정보로처리된다. 9 번째비트가클리어되는경우에, 수신된데이터워드는이전의주소 / 제어바이트와연관된데이터로처리된다. 프로토콜다음과같이동작한다 : 마스터장치는데이터워드를 9 번째비트 set 으로전송한다. 데이터워드는슬레이브장치의주소를포함한다. 통신체인 (chain) 안에있는모든슬레이브장치는주소워드를수신받고슬레이브주소값을검사한다. 전달된슬레이브장치는마스터장치에의해보내진다음의데이터바이트를수신하고처리할것이다. 모든다른슬레이브장치는새로운주소워드 (9 번째비트 set) 가수신될때까지다음의데이터바이트를버릴것이다. 21.7.2 ADDEN Control Bit UART 수신기는 9 비트를가진데이터워드가클리어되는것을무시하는것을허락하는주소검출모드 (Address Detect mode) 를가지고있다. 클리어된 9 비트의데이터워드가버퍼되지않았기때문에이것은인터럽트오버헤드 (overhead) 를감소시킨다. 이특징은 ADDEN 비트 (UxSTA<5>) 을설정하여인에이블된다. 주소검출모드를사용하기위해 UART 는 9- 비트데이터모드를위해구성되어야한다. 수신기가 8- 비트데이터모드에서형성될때 ADDEN 비트는전혀효력이없다. 21.7.3 Setup for 9-Bit Transmit 9- 비트전송을위한설치절차는 PDSEL<1:0> 비트 (UxMODE<2:1) 가 11 로설정되는것을제외하고 8- 비트전송모드와동일하다. (Section 21.5.3.UART 전송을위한설치를참조하시오 ) 워드쓰기는 UxTXREG 레지스터 ( 전송시작 ) 에서수행되어야한다. 2007 Microchip Technology Inc. Advance Information DS39718A-page 21
21.7.4 Setup for 9-Bit Reception Using Address Detect Mode 9- 비트전송을위한설치절차는 PDSEL<1:0> 비트 (UxMODE<2:1) 가 11 로설정되는것을제외하고 8- 비트전송모드와동일하다. (Section 21.6.4.UART 전송수신을위한설치를참조하시오 ). 수신인터럽트모드는 URXISEL<1:0> (UxSTA<7:6>) 비트에쓰기하여구성되어야한다. Note: 주소검출모드가인에이블 (ADDEN 는 = 1) 되는경우, 인터럽트가모든수신된워드후에발생하게하기위해 URXISEL<1:0> 제어비트는반드시구성되어야한다. 각수신된데이터워드는수신후즉각적인주소일치를위해반드시소프트웨어에서검사되어야한다. 주소검출모드사용하기위한절차는다음과같다 : 1. 주소검출을인에이블하기위해 ADDEN (UxSTA<5>) 비트를 set 하시오. 각수신된워드후인터럽트를발생시키기위해 URXISEL 제어비트를구성되는것을확인하십시오. 2. 장치가전달되는지를결정하기위해서 UxRXREG 레지스터를읽기하여각 8- 비트주소를검사하십시오. 3. 이장치가전달되지않는경우, 수신된워드를버리십시오. 4. 이장치가전달되는경우, 이후의데이터바이트가수신버퍼에서읽히는것을허용하기위해그리고 CPU 를인터럽트하는것을허용하기위해서 ADDEN 비트를클리어하시오. 롱데이터패킷이예상되는경우, 그후수신인터럽트모드는인터럽트사이에서하나이상의데이터바이트를버퍼 (buffer) 하기위해바뀔수있다. 5. 마지막데이터바이트가수신될때, 오직주소바이트가수신되게하기위해 ADDEN 비트를 set 하시오. 또한각수신된워드후에인터럽트를발생시키기위해 URXISEL 제어비트가구성되는것을확인하십시오. Figure 21-10: Reception with Address Detect (ADDEN = 1) 2007 Microchip Technology Inc. Advance Information DS39718A-page 22
21.8 RECEIVING BREAK CHARACTERS Wake-up 특징은 WAKE 비트 (UxMODE<7>) = 1 을설정하여인에이블된다. 이모드에서모듈은시작비트, 데이터와유효스톱비트 (FERR 를 set 하는 ) 를수신한다. 그러나수신기는다음시작시트를찾기전에유효스톱비트를기다릴것이다. 라인 (line) 에서브레이크 (break) 상태는다음시작비트라고추정되지않을것이다. 브레이크는 FERR 비트 set 과함께모든 0 를포함하는캐릭터로간주된다. 브레이크캐릭터는버퍼로적재된다. 스톱비트가수신될때까지더이상의수신은발생하지않을것이다. 13- 비트브레이크캐릭터후스톱비트가수신되자마자 WAKE 비트는자동적으로클리어될것이다. 스톱비트가수신될때 RIDLE 비트가 high 로이동하는것을유의하시오. 수신기는 PDSEL<1:0> (UxMODE<2:1>) 와 STSEL (UxMODE<0>) 비트에에서프로그램된값에근거한특정한많은비트타임을카운트하고예상할것이다. 브레이크가 13 비트타임보다길경우, 수신은 PDSEL 와 STSEL 비트에의해지정된비트타임의갯수후에완성됐다고여겨진다. URXDA 비트는 set, FERR 는 set, 제로들 (zeros) 은수신 FIFO 로적재되고인터럽트는발생된다. Wake-up 특장이 set 되지않는경우, WAKE (UxMODE<7>) = 0, 브레이크수신은특별하지않다. 브레이크는캐릭터가 FERR set 과함께버퍼 ( 모든 0 비트 ) 로적재된후카운트될것이다. 21.9 INITIALIZATION 8- 비트모드에서전송기 / 수신기를위해보기 21-2 은초기화루틴 (routine) 이다. 보기 21-3 는 9- 비트주소검출모드에서전달가능한 UART 의초기화를보여준다. 두보기에서, UxBRG 레지스터는구성된보레이트와장치주파수에의존한다. Note: UARTEN 비트가 set 될때까지 UTXEN 비트는 set 되지않는다. 그렇지않으면 UART 전송은인에이블되지않는다. Example 21-2: 8-Bit Transmit/Receive (UART1) 2007 Microchip Technology Inc. Advance Information DS39718A-page 23
Example 21-3: 8-Bit Transmit/Receive (UART1), Address Detect Enabled 2007 Microchip Technology Inc. Advance Information DS39718A-page 24
21.10 OTHER FEATURES OF THE UART 21.10.1 UART in Loopback Mode LPBACK 비트를설정하는것은 UxTX 출력이 UxRX 입력에내부에연결되는이특별한모드를가능하게한다. 루프백형태를위해구성될때, UxRX 핀은내부 UART 에서연결이끊기긴다. 그러나, UxTX 핀은여전히일반적으로동작한다. 이모드를설정하기위하여 : 1. 동작의요구된모드를위한위한 UART 를형성하십시오. 2. Section 21.5 UART 전송기에서정의된대로전송을인에이블하십시오. 3. 루프백모드를인에이블하기위해 LPBACK = 1 (UxMODE<6>) 을설정하시오. 표 21-3 에서보이는것처럼 UEN<1:0> 비트에루프백모드는의존한다. Table 21-3: Loopback Mode Pin Function Note 1: LPBACK = 1 는반드시 UART 모듈관관련된다른비트를인에이블한후에 set 되어야한다. 21.10.2 Auto-Baud Support 시스템이수신된캐릭터의보레이트를결정하는것을허용하기위해, ABAUD 비트는인에이블되어야한다. UART 는자동보레이트가인에이블될때 (ABAUD = 1) 시작비트가수신될때마다자동저긴보레이트측정순서를시작할것이다. 이계산은자동평균이다. 이특징은 auto-wake-up 이불능인동안 (WAKE = 0) 활동적이다. 게다가, LPBACK 은반드시자동 - 보드동작동안 0 과같아야한다. 일단 ABAUD 비트가 set 되면 BRG 카운터값은클리어될것이고 low-to-high 전송에의해따라오는 high-to-low 전송으로정의되며이경우시작비트를찾게된다. 시작비트뒤에나오는, 자동보드는적절한비트레이트를계산하기위해서 ASCII U ( 55h ) 를수신하기를예상한다. 다가오는신호의불균형에의해야기된어떤효과를최소화하기위해낮고높은비트시간에서측정은 2 곳다받아들인다. 시작비트 ( 올라가는에지 ) 의마지막에서 BRG 카운터는 TCY/8 클럭을사용하는것은위로세는것을시작한다. UxRX 핀의 5 번째솟아오르는지점에서, 적절한 BRG 주기를합친축적된 BRG 카운터값은 UxBRG 레지스터로옮겨진다. ABAUD 비트는자동적으로클리어된다. 사용자가순서완료이전에 ABAUD 비트를클리어하는경우, 예상치못한모듈동작이발생할수있다. ABD 순서를위해표 21-11 를참조하십시오. 2007 Microchip Technology Inc. Advance Information DS39718A-page 25
Figure 21-11: Automatic Baud Rate Calculation 자동보드순서가진행중인동안, UART 상태머신은아이들 (idle) 로유지된다. UxRXIF 인터럽트는 5 번째 UxRX 솟구치는에지에서 set 된다. URXISEL<1:0> 설정에의존하는수신기 FIFO 는업데이트되지않는다. 21.10.2.1 BREAK DETECT SEQUENCE 사용자는브레이크검출을즉각적으로뒤따르게발생하기위해자동보드를구성할수있다. 이것은 ABAUD 비트를 WAKE 비트로설정하여행해진다. 자동보드순서에의해오는브레이크검출은표 21-12 에서보여진다. WAKE 비트는 ABAUD 비트설정에관해우선권을가진다. Note: WAKE 비트는 ABAUD 와같이 set 되는경우, 자동보드레이트검출은브레이크캐릭터를뒤따르는바이트에서발생한다. 주어진클럭안에서가능한보드레이트를고려하면사용자는들어오는보드레이트가선택된 UxBRG 클럭소스범위안에있다는것을확인해야한다. UART 전송기는자동보드순서도중이용될수없다. 게다가, 사용자는전송순서가이미진행중인동안 ABAUD 비트가 set 되지않는것을확인해야한다. UART 는예측할수없는동작을달리보여줄수있다. Figure 21-12: Break Detect Followed by Auto-Baud Sequence 2007 Microchip Technology Inc. Advance Information DS39718A-page 26
21.11 UART OPERATION DURING CPU SLEEP AND IDLE MODES UART 는슬립모드에서동작하지않는다. 전송이진행중인동안슬립모드로입장이일어나는경우에, 전송은취소되고 UxTX 핀은논리 1 로간다. 유사하게수신이진행중인동안슬립모드로입장이일어나는경우에그후에수신은취소된다. UART 는슬립모드동안리셋될것이다. 핀은 0 로간다. 파워 - 다운모드인경우, 달리말하면, 그것은 Section 21.12 UxMODE 와 UxSTA 제어비트의동작에서나와있는대로의값으로간다. BCLKx 핀은 0 으로간다 ( 인에이블되는경우 ). 다음의레지스터는슬립모드로들어가는경우또는나오는경우에따라영향을받지않는다.. UxMODE and UxSTA registers. Transmit and Receive registers and buffers. UxBRG register 전송또는수신이팬딩되어있는경우, 슬립으로입장을금지하는자동적인방법은없다. 사용자는수신실패를피하기위하여 RIDLE 비트를검사를할수있다. 사용자는전송기를관리한다. 그래서사용자소프트웨어는전송이취소되지않는것을확인하기위해 UART 와잠동작과슬립입장을반드시동기화해야한다. UART 를위해, USIDL 비트는모듈이아이들에서정지할것인지지속할것인지를결정한다. USIDL = 0 인경우, 모듈은아이들에서동작을지속할것이다. USIDL = 1 인경우, 모듈은아이들에서정지할것이다. UART 모듈은아이들모드에서정지할때 (USIDL = 1) 같은절차를수행할것이다. 21.11.1 Auto-Wake-up on Sync Break Character Auto-wake-up 특징은 WAKE 비트 (UxMODE<7>) 와같이인에이블된다. WAKE 가활동적일때 UxRX 에있는전형적인수신순서는불능된다. Wake-up 이벤트를따르는모듈은 UxRXIF 인터럽트를생성한다. LPBACK 비트 (UxMODE<6>) 는동작하기위하여 0 과반드시같아야한다. Wake-up 이벤트는 UxRX 라인의 high-to-low 전송을구성한다. 이것은 LIN 프로토콜을위해싱크브레이크또는 wake-up 신호캐릭터와시작을동시에한다. Wake 가활동적일때 UxRX 선은 CPU 모드로부터독립적으로감시된다. UxRXIF 는정상적인사용자모드에서 Q 클럭으로비동기적으로발생될것이다. 그리고슬립또는아이들모드에서모듈이불능인경우도마찬가지이다. 어떤실제적인데이터의손실을확인하기위해 WAKE 비트는반드시 UART 모듈이아이들인동안슬립모드로입장하기위해반드시 set 되어야한다. WAKE 비트는 wake-up 이벤트를뒤따르는 UxRX 라인에서 low-to-high 전송이관찰되자마자자동적으로클리어된다. 이시점에서, UART 모듈은아이들모드이거나정상적인동작으로돌아간다. 이것은사용자에게 Sync 브레이크이벤트가끝난것을신호한다. 사용자가순서완료이전에 wake-up 비트를클리어하는경우예상치못한모듈동작이발생할수도있다. Wakeup 이벤트는 UxRXIF 비트를설정하여수신인터럽트를야기한다. 수신인터럽트선택모드비트 (URXISEL<1:0>) 은이기능을위해무시된다. UxRXIF 인터럽트가인에이블되는경우, 그후이것은장치를발생시킨다. Note: Sync 브레이크 ( 또는 wake-up 신호 ) 특성은선택된오실레이터가 UART 의적당한초기설정을제공하고시작하는것을허용하기위해반드시충분한길이를가지고있어야한다. 파트 (part) 가정각에일어나는것을확인하기위해사용자는반드시 WAKE 비트의값을읽어야한다. 만약이것이클리어되는경우, 다음캐릭터를수신하기위해 UART 가정시에준비되지않는것을가능하게하며모듈은버스에재비동기화를원할것이다 2007 Microchip Technology Inc. Advance Information DS39718A-page 27
Figure 21-13: Auto-Wake-up Bit (WAKE) Timings During Normal Operation Figure 21-14: Auto-Wake-up Bit (WAKE) Timings During Sleep 2007 Microchip Technology Inc. Advance Information DS39718A-page 28
21.12 OPERATION OF AND CONTROL PINS ( 전송을클리어시킴 ) 와 ( 전송요청 ) 은 UART 모듈과연관된핀들의제어를받는 2 개하드웨어이다. 이 2 핀은 Section 21.12.2. 플로우제어모드의기능과 Section 21.12.3. 간단모드에서의기능에나타난상세사항에설명된것처럼심플과플로우제어모드에서 UART 가개별적으로동작하는것을허락한다. 이것들은 DTE ( 데이터터미널장비 ) 사이에서전송과수신을제어하기위해실행된다. 21.12.1 Function UART 동작에서, 는전송을제어할수있는입력으로동작한다. 이핀은또다른장치 ( 전형적으로 PC) 에의해통제된다. 핀은 UEN<1:0> 를사용하여구성된다. UEN<1:0> = 10 일때, 는입력으로구성된다. = 1 인경우, 그후전송기는전송시프트레지스터에있는자료를적재하는것만큼나아간다. 그러나전송을초기화시키지는않을것이다. 이것은 DTE 가그것의요구마다제어기로부터데이터를수신하고제어하는것을허락한다. 전송데이터가변할때 ( 즉, 16 보트클럭의시작에서 ) 핀은같은시각에서추출된다. 가낮게추출될때오직전송이시작할것이다. 는내부적으로에 1 TCY 의최소펄스폭이있다는것을나타내는 Q 클럭과같이추출된다. 그러나이것은 TCY 가사용된클럭에의존하는것을변화시킬때규격이된다. 사용자는연관된포트핀을읽어서의상태를또한읽을수있다. 21.12.2 Function in Flow Control Mode 플로우제어모드에서, 표 21-15 에서보이는것처럼 1 DTE 의는 PIC24F 의에연결되고, DTE 의는 PIC24F 의 UxRTS 에연결된다. UxRTS 신호는장치가데이터를수신할준비가되었다는것을가르킨다. UEN<1:0> = 01 또는 10 일때마다 UxRTS 핀은출력으로가게된다. 수신기가데이터를수신할준비가될때마다 UxRTS 핀은주장된다 (low 로 ). RTSMD 비트 = 0 일때 ( 장치가플로우제어모드에있을때 ), 수신버퍼가가득차있지않을때또는 OERR 비트가 set 이아닐때마다 UxRTS 핀은 high 로간다. RTSMD 비트 = 0 일때, 장치가수신할준비가되어있지않을때마다 UxRTS 핀은 high 로간다 ( 즉, 수신버퍼는 full 이거나시프팅 (shifting) 을진행중 ). DTE 의 UxRTS 가 PIC24F 의에연결되었기때문에, UxRTS 는그것이자료를받을준비가되어있을때마다를 low 로몬다. 데이터의전송은 Section 21.12.1. 기능에서나와있는대로가 low 로갈때시작할것이다. 21.12.3 Function in Simplex Mode 단방향모드에서, 표 21-16 에서보이는것처럼각각 DCE 의는 PIC24F 의에연결되고, DCE 의는 PIC24F 의에연결된다. 단방향모드에서는, 신호는 DTE 가전송할준비가되었다는것을지시한다. DCE 는전송을수신할준비가될때마다이것은신호를유효한 UxCTS 에답변할것이다. DTE 가유효한를수신할때, 그것은전송을시작할것이다. 표 21-17 에서보이는것처럼, 단방향모드는또한 IEEE-485 시스템에서전송기를인에이블하기위하여이용된다. 가 DTE 가전송할준비가되었다는것을지시할때신호는드라이버를인에이블시킬것이다. 핀은출력으로구성되고 UEN<1:0> = 01 또는 10 일때마다몰아진다. RTSMD = 1 일때, 데이터가전송하기위해이용가능할때 (TRMT = 0) 는주장된다 (low 로 ). RTSMD = 1 일때, 전송기가비어있을때 (TRMT = 1), 는주장되지않는다 (high 로 ). 2007 Microchip Technology Inc. Advance Information DS39718A-page 29
Figure 21-15: / Flow Control for DTE-DTE (RTSMD = 0, Flow Control Mode) Figure 21-16: : / Handshake for DTE-DCE (RTSMD = 1, Simplex Mode) Figure 21-17: : / Bus Enable for IEEE-485 Systems (RTSMD = 1) 2007 Microchip Technology Inc. Advance Information DS39718A-page 30
21.13 INFRARED SUPPORT UART 모듈은적외선 UART 지원의 2 가지의유형을제공한다 : 하나는외부 IrDA 인코더와디코더장치 (legacy module support) 를지원하기위해서 IrDA 클럭출력이고다른것들은 IrDA 인코더와디코더의완벽한실행이다. 21.13.1 External IrDA Support. IrDA Clock Output 외부 IrDA 인코더와디코더장치를지원하기위해서, BCLKx 핀은 16x 보드클럭을생성하도록구성될수있다. UEN<1:0> = 11 일때, UART 모듈이인에이블되는경우 BCLKx 핀은 16x 보드클럭을출력할것이다 ; 그것은 IrDA 코덱칩을지원하기위하여이용될수있다. 21.13.2 Built-In IrDA Encoder and Decoder UART 는 UART 모듈의부분으로서 IrDA 인코더및디코더의완전한실행을가지고있다. 내장된 IrDA 인코더와디코더기능은 IREN 비트 (UxMODE<12>) 를사용하여인에이블된다. 인에이블할때 (IREN = 1), 수신핀 (UxRX) 는적외선수신기로부터입력으로동작한다. 전송핀 (UxTX) 는적외선전송기에출력으로작동한다. 이모드는오직 UART 보레이트발생기가 16x 보드클럭모드에있어야만유효하다. 이것은 BRGH 비트 (UxMODE) 가 0 인때이다. 21.13.2.1 IrDA ENCODER FUNCTION UART 로부터시리얼데이터를취하여그리고그것을아래설명된것으로대체하여인코더는동작한다. 16x 보드클럭의전체 16 주기동안 1 의전송비트데이터는 0 으로인코드된다. 16x 보드클럭의 1 번째 7 주기동안 0 의전송비트데이터는 0 으로인코드된다. 다음 3 주기동안은 1 그리고남은 6 주기동안은 0 이된다. 세부사항을위해표 21-18 와표 21-20 을보시오. 21.13.2.2 IrDA TRANSMIT POLARITY IrDA 전송극성은 UTXINV 비트 (UxSTA<14>) 를사용하여선택된다. 이비트는 IrDA 인코더및디코더가인에이블될때 (IREN = 1), 오직모듈에만영향을미친다. 이비트는정상적인전송과수신동안수신기또는모듈에영향을미치지않는다. UTXINV = 0 일때, UxTX 라인의아이들상태는 0 이다. ( 표 21-18 참조 ). UTXINV = 1 일때, UxTX 라인의아이들상태는 1 이다 ( 표 21-19 참조 ). Figure 21-18: IrDA Encode Scheme Figure 21-19: IrDA Encode Scheme for.0. Bit Data 2007 Microchip Technology Inc. Advance Information DS39718A-page 31
Figure 21-20: IrDA Encode Scheme for.0. Bit Data with Respect to 16x Baud Clock 21.13.2.3 IrDA DECODER FUNCTION 디코더는 UxRX 핀에서시리얼데이터를가지고가고그것을해독된데이터스트림 (stream) 으로교환하여작동한다. 스트림는 UxRX 입력의떨어지는가장자리검출에기초를두고해독된다. UxRX 의각떨어지는에지는해독된데이터가 16x 보드클럭의 16 주기동안 low 로가는것을야기한다. 16 주기가끝날때때까지다른떨어지는에지가검출되는경우, 해독된데이터는또다른 16 주기동안 low 로남아있게된다. 장치의데이터스트림이실제메시지소스로부터 16x 보드클럭의 7 에서 8 주기어느곳으로든지이동된다는것을주의하시오. 1 클럭의불확실성은클럭에지분해능때문이다 ( 표 21-21 를참조 ). 21.13.2.4 IrDA RECEIVE POLARITY IrDA 신호의입력은반대의극성을가질수있다. 동일한논리는신호트레인 (train) 을해석할수있다, 그러나이경우에는, 해석된데이터스트림 (steam) 은본래의메시지소스로부터 16x 보드클럭의 10 에서 11 주기까지이동된다. 또다시, 1 클럭불확실성은클럭에지분해능때문이다. ( 세부사항을위해표 21-22 를보십시오 ). 21.13.2.5 CLOCK JITTER 지터 (jitter) 또는장치에서약간의주파수차이때문에다음의떨어지는비트에지가 16x 주기의 1 동안손실될수있다. 이경우, 1 클럭폭펄스는디코드된데어터스트림에서나타난다. UART 가비트주의에서대다수검출을수행하기때문에이것은잘못된데이터를야기하지않는다. ( 세부사항을위해표 21-23 를보십시오 ). Figure 21-21: Macro View of IrDA Decoding Scheme 2007 Microchip Technology Inc. Advance Information DS39718A-page 32
Figure 21-22: Inverted Polarity Decoding Results Figure 21-23: Clock Jitter Causing a Pulse Between Consecutive Zeros 2007 Microchip Technology Inc. Advance Information DS39718A-page 33
2007 Microchip Technology Inc. Advance Information DS39718A-page 34
21.15 ELECTRICAL SPECIFICATIONS 21.15.1 Timing Diagrams Figure 21-24: Baud Rate Generator Output Timing Figure 21-25: Start Bit Edge Detection Table 21-5: AC Specifications 2007 Microchip Technology Inc. Advance Information DS39718A-page 35
21.16 DESIGN TIPS 질문 1: 사용자가 UART 와함께전송한데이터는정확하게수신되지않는다. 어떤것이이것을야기하는가? 답변 : 수신에러의가장공통적인이유는 UART 보레이트발생기에부정확한값이계산되었기때문이다. UxBRG 레지스터에쓰여진값이정확한것인지를확실시하시오. 질문 2: 비록 UART 수신핀의신호가정확하게보일지라도사용자는에러를프레밍 (framing) 한다. 이러한것이가능한원인은무엇인가? 답변 : 다음의제어비트가올바르게설치되었는지확인하시오. UxBRG: UART Baud Rate register PDSEL<1:0>: Parity and Data Size Selection bits STSEL: Stop bit Selection 2007 Microchip Technology Inc. Advance Information DS39718A-page 36
21.17 RELATED APPLICATION NOTES 이장은매뉴얼의이장과관련된어플리케이션노트를보여준다. 이러한어플리케이션노트는 PIC24F Family of devices 을위해구체적으로표기되지않을지도모르지만, 이개념은적절하며수정과가능한제한과함께사용될수있었다. UART 모듈과관련있는현재어플리케이션노트는 : Title Application Note # No related application notes at this time. NOTE: 추가적인어플리케이션을위해 Microchip web site (www.microchip.com) 를방문해주세요. PIC24F Family of devices 의예를필기하고코딩하시오. 2007 Microchip Technology Inc. Advance Information DS39718A-page 37
21.18 REVISION HISTORY Revision A (April 2006) 이것은이문서의최초발간된개정이다. Revision B (September 2007) 수정된레지스터 21-1 와레지스터 21-2, UARTx 모드와 UARTx 상태와제어 l; 표 21-1 와표 21-2, UART 보레이트 ; Section 21.5. UART Transmitter 와 Section 21.13.Infrared Support.. 2007 Microchip Technology Inc. Advance Information DS39718A-page 38