22.0 UART Modules

The CP3BT26 provides four UART modules. Each UART module is a full-duplex Universal Asynchronous Receiver/ Transmitter that supports a wide range of software-pro- grammable baud rates and data formats. It handles auto- matic parity generation and several error detection schemes.

All UART modules offer the following features:

„Full-duplex double-buffered receiver/transmitter

„Asynchronous operation

„Programmable baud rate

„Programmable framing formats: 7, 8, or 9 data bits; even, odd, or no parity; one or two stop bits (mark or space)

„Hardware parity generation for data transmission and parity check for data reception

„Interrupts on “transmit ready” and “receive ready” condi- tions, separately enabled

„Software-controlled break transmission and detection

„Internal diagnostic capability

„Automatic detection of parity, framing, and overrun errors

One module, UART0, offers the following additional fea- tures:

„Synchronous operation using the CKX external clock pin

„Hardware flow control (CTS and RTS signals)

„DMA capability

22.1FUNCTIONAL OVERVIEW

Figure 76 is a block diagram of the UART module showing the basic functional units in the UART:

„Transmitter

„Receiver

„Baud Rate Generator

„Control and Error Detection

The Transmitter block consists of an 8-bit transmit shift reg- ister and an 8-bit transmit buffer. Data bytes are loaded in parallel from the buffer into the shift register and then shifted out serially on the TXD pin.

The Receiver block consists of an 8-bit receive shift register and an 8-bit receive buffer. Data is received serially on the RXD pin and shifted into the shift register. Once eight bits have been received, the contents of the shift register are transferred in parallel to the receive buffer.

The Transmitter and Receiver blocks both contain exten- sions for 9-bit data transfers, as required by the 9-bit and loopback operating modes.

The Baud Rate Generator generates the clock for the syn- chronous and asynchronous operating modes. It consists of two registers and a two-stage counter. The registers are used to specify a prescaler value and a baud rate divisor. The first stage of the counter divides the UART clock based on the value of the programmed prescaler to create a slower clock. The second stage of the counter creates the baud rate clock by dividing the output of the first stage based on the programmed baud rate divisor.

The Control and Error Detection block contains the UART control registers, control logic, error detection circuit, parity generator/checker, and interrupt generation logic. The con- trol registers and control logic determine the data format,

mode of operation, clock source, and type of parity used. The error detection circuit generates parity bits and checks for parity, framing, and overrun errors.

The Flow Control Logic block provides the capability for hardware handshaking between the UART and a peripheral device. When the peripheral device needs to stop the flow of data from the UART, it de-asserts the clear-to-send (CTS) signal which causes the UART to pause after sending the current frame (if any). The UART asserts the ready-to-send (RTS) signal to the peripheral when it is ready to send a character.

22.2UART OPERATION

The UART has two basic modes of operation: synchronous and asynchronous. Synchronous mode is only supported for the UART0 module. In addition, there are two special- purpose modes, called attention and diagnostic. This sec- tion describes the operating modes of the UART.

22.2.1Asynchronous Mode

The asynchronous mode of the UART enables the device to communicate with other devices using just two communica- tion signals: transmit and receive.

In asynchronous mode, the transmit shift register (TSFT) and the transmit buffer (UnTBUF) double-buffer the data for transmission. To transmit a character, a data byte is loaded in the UnTBUF register. The data is then transferred to the TSFT register. While the TSFT register is shifting out the current character (LSB first) on the TXD pin, the UnTBUF register is loaded by software with the next byte to be trans- mitted. When TSFT finishes transmission of the last stop bit of the current frame, the contents of UnTBUF are trans- ferred to the TSFT register and the Transmit Buffer Empty bit (UTBE) is set. The UTBE bit is automatically cleared by the UART when software loads a new character into the UnTBUF register. During transmission, the UXMIP bit is set high by the UART. This bit is reset only after the UART has sent the last stop bit of the current character and the UnT- BUF register is empty. The UnTBUF register is a read/write register. The TSFT register is not software accessible.

In asynchronous mode, the input frequency to the UART is 16 times the baud rate. In other words, there are 16 clock cycles per bit time. In asynchronous mode, the baud rate generator is always the UART clock source.

The receive shift register (RSFT) and the receive buffer (Un- RBUF) double buffer the data being received. The UART re- ceiver continuously monitors the signal on the RXD pin for a low level to detect the beginning of a start bit. On sensing this low level, the UART waits for seven input clock cycles and samples again three times. If all three samples still in- dicate a valid low, then the receiver considers this to be a valid start bit, and the remaining bits in the character frame are each sampled three times, around the mid-bit position. For any bit following the start bit, the logic value is found by majority voting, i.e. the two samples with the same value de- fine the value of the data bit. Figure 77 illustrates the pro- cess of start bit detection and bit sampling.

CP3BT26

163

www.national.com

Page 163
Image 163
National CP3BT26 manual Uart Modules, Functional Overview, Uart Operation