9 transmit operation, 9 transmit operation -5 – Intel PXA255 User Manual

Page 391

Advertising
background image

Intel® PXA255 Processor Developer’s Manual

11-5

Fast Infrared Communication Port

After 16 preambles are transmitted, the start flag is received. The start flag is eight chips long. If

any portion of the start flag does not match the encoding, the receive logic signals a framing error

and the receive logic returns to hunt mode.

When the correct start flag is recognized, each following group of four chips is decoded into a data

byte and placed in a 5-byte temporary FIFO that is used to prevent the CRC from being placed in

the receive FIFO. When the temporary FIFO is full, data values are transferred to the receive FIFO
one at a time. A frame’s first data byte is the address. If receiver address matching is enabled, the

received address is compared to the address in the address match value field in ICCR1. If the

values match or the incoming address contains all ones, all following data bytes, including the

address byte, are stored in the receive FIFO. If the values do not match, the receiver logic does not
store any data in the receive FIFO, ignores the remainder of the frame, and searches for the next

preamble. If receiver address matching is not enabled, the frame’s first data byte is stored in the

FIFO as normal data. The frame’s second data byte can contain an optional control field and must

be decoded in software.

The IrDA standard limits frames to any amount of data up to a 2047 bytes (including the address

and control bytes). The FICP does not limit frame size. Software must ensure that each incoming

frame does not exceed 2047 bytes.

When the receive FIFO reaches its trigger level, an interrupt (if enabled) and DMA transfer request

(if no errors are detected in the data) are signalled. If the data is not removed quickly enough to

prevent the FIFO from completely filling, the receive logic attempts to place additional data into
the full FIFO and an overrun error is signalled. When the FIFO is full, all subsequent data bytes

received are lost and all FIFO contents remain intact.

If the data field contains any invalid chips (such as 0011, 1010, 1110) the frame aborts and the
oldest byte in the temporary FIFO is moved to the receive FIFO, the remaining temporary FIFO

entries are discarded, the end-of-frame (EOF) tag is set in the FIFO entry that holds the last valid

byte of data, and the receiver logic searches for the preamble.

The receive logic continuously searches for the 8-chip stop flag. When the stop flag is recognized,

the last byte that was placed within the receive FIFO is flagged as the frame’s last byte and the data

in the temporary FIFO is removed and used as the CRC value for the frame. The receive logic

compares the frame’s CRC value to the CRC-32 value, which is continuously calculated from the
incoming data stream. If CRC and CRC-32 values do not match, the last byte that was placed in the

receive FIFO is also tagged with a CRC error. The frame’s CRC value is not placed in the receive

FIFO. If the stop flag is not properly detected, an abort is signalled.

If software disables the FICP’s receiver while it is operating, the data byte being received stops

immediately, the serial shifter and receive FIFO are cleared, the System Integration Unit (SIU)

takes control of the receive data pin, and the clocks used by the receive logic are shut off to

conserve power. The receive data input polarity must be reprogrammed if the receive data pin is
used as a GPIO input.

11.2.9

Transmit Operation

Before it enables the FICP for transmission, the software can either preload the transmit FIFO by

filling it with data or allow service requests to cause the CPU or DMA to fill the FIFO after the

FICP is enabled. When the FICP is enabled, the transmit logic issues a service request if its FIFO
requires more data.

Advertising