User manual

Table Of Contents
Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 598
UG585 (v1.11) September 27, 2016
Chapter 19: UART Controller
c. Enables the Tx path: [TXEN] = 1 and [TXDIS] = 0.
d. Restarts the Receiver Timeout Counter: [RSTTO] = 1.
e. Does not start to transmit a break: [STTBRK] = 0.
f. Stop Break transmitter: [STPBRK] = 1
5. Program the Receiver Timeout Mechanism. Write the timeout value into the
uart.Rcvr_timeout_reg0 register. Refer to Receiver Timeout Mechanism, page 589.
a. To enable the timeout mechanism, write a value of 1 to 255 into the [RSTTO] bit field.
b. To disable the timeout mechanism, write a 0 into the [RSTTO] bit field.
19.3.3 Transmit Data
Software can used polling or interrupts to control the flow of data to the TxFIFO and RxFIFO.
Note: When the TxFIFO Empty status is true, software can write 64 bytes (the size of the TxFIFO)
without checking the TxFIFO status. In reality, software can write more than 64 bytes when the
transmitter is active because while the software is writing data to the TxFIFO, the controller is
removing data and serializing it onto the TxD signal.
Example: Transmit Data using the Polling Method
In this example, the software can choose to fill the TxFIFO until the Full status bit is set or wait for the
TxFIFO to be empty (and write up to 64 bytes). The software can always write a byte when the TxFIFO
is nearly full.
1. Check to see if the TxFIFO is empty. Wait until uart.Channel_sts_reg0[TEMPTY] = 1.
2. Fill the TxFIFO with data. Write 64 bytes of data to the uart.TX_RX_FIFO0 register.
3. Write more data to the TxFIFO. There are two methods:
Option A: Check to see if the TxFIFO has room to another byte of data (i.e., the TxFIFO is not
full): Read uart.Channel_sts_reg0 [TFUL] until it equals 0. When [TFUL] = 0, write a single byte of
data into the TxFIFO and then read [TFUL] again.
Option B: Wait until the TxFIFO goes empty. Read uart.Channel_sts_reg0 [TEMPTY] until it
equals 1, then go to step 2 to fill the TxFIFO with 64 bytes of data.
Example: Transmit Data using the Interrupt Method
This example initially fills the TxFIFO in a similar way as the polling method. Then, software enables
the TxFIFO Empty interrupt to alert the software to fill-up the TxFIFO again.
1. Disable the TxFIFO Empty interrupt. Write a 1 to uart.Intrpt_dis_reg0 [TEMPTY].
2. Fill the TxFIFO with data. Write 64 bytes of data to the uart.TX_RX_FIFO0 register.
3. Check to see if the TxFIFO has room to another byte of data (i.e., the TxFIFO is not full): read
uart.Channel_sts_reg0 [TFUL] until it equals 0. When [TFUL] = 0, write a single byte of data into
the TxFIFO and then read [TFUL] again.
4. Repeat step 2 and 3. Repeat until uart.Channel_sts_reg0 [TFUL] is not set.