Figure 35-31 – Rainbow Electronics AT91CAP9S250A User Manual

Page 552

Advertising
background image

552

6264A–CAP–21-May-07

AT91CAP9S500A/AT91CAP9S250A

If a parity error is detected by the receiver, it drives the I/O line at 0 during the guard time, as
shown in

Figure 35-32

. This error bit is also named NACK, for Non Acknowledge. In this case,

the character lasts 1 bit time more, as the guard time length is the same and is added to the
error bit time which lasts 1 bit time.

When the USART is the receiver and it detects an error, it does not load the erroneous character
in the Receive Holding Register (US_RHR). It appropriately sets the PARE bit in the Status Reg-
ister (US_SR) so that the software can handle the error.

Figure 35-31. T = 0 Protocol without Parity Error

Figure 35-32. T = 0 Protocol with Parity Error

Receive Error Counter

The USART receiver also records the total number of errors. This can be read in the Number of
Error (US_NER) register. The NB_ERRORS field can record up to 255 errors. Reading US_NER
automatically clears the NB_ERRORS field.

Receive NACK Inhibit

The USART can also be configured to inhibit an error. This can be achieved by setting the
INACK bit in the Mode Register (US_MR). If INACK is at 1, no error signal is driven on the I/O
line even if a parity bit is detected, but the INACK bit is set in the Status Register (US_SR). The
INACK bit can be cleared by writing the Control Register (US_CR) with the RSTNACK bit at 1.

Moreover, if INACK is set, the erroneous received character is stored in the Receive Holding
Register, as if no error occurred. However, the RXRDY bit does not raise.

Transmit Character Repetition

When the USART is transmitting a character and gets a NACK, it can automatically repeat the
character before m oving on to the next one. Repetition is en abled by writin g the
MAX_ITERATION field in the Mode Register (US_MR) at a value higher than 0. Each character
can be transmitted up to eight times; the first transmission plus seven repetitions.

If MAX_ITERATION does not equal zero, the USART repeats the character as many times as
the value loaded in MAX_ITERATION.

D0

D1

D2

D3

D4

D5

D6

D7

RXD

Parity

Bit

Baud Rate

Clock

Start

Bit

Guard

Time 1

Next
Start

Bit

Guard

Time 2

D0

D1

D2

D3

D4

D5

D6

D7

I/O

Parity

Bit

Baud Rate

Clock

Start

Bit

Guard

Time 1

Start

Bit

Guard

Time 2

D0

D1

Error

Repetition

Advertising