20 GENERAL-PURPOSE SERIAL INTERFACE (FSIO)
20-22
Seiko Epson Corporation
S1C33L26 TECHNICAL MANUAL
The FSIO module sets an error flag (PER/FSIO_STATUS
x
register, FER/FSIO_STATUS
x
register, or OER/
FSIO_STATUS
x
register) to 1 if a parity error, framing error, or overrun error is detected when receiving data.
If receive error interrupts are enabled (RERR_IE = 1), an interrupt request is sent simultaneously to the ITC. If
other interrupt conditions are satisfied, an interrupt occurs. You can inspect the PER, FER, and OER flags in the
interrupt handler routine to determine whether the FSIO interrupt was caused by a receive error. If any of the
error flags has the value 1, the interrupt handler routine will proceed with error recovery.
DMA Transfer
20.9.2
In transmit operations, a DMA trigger will be issued when a cause of transmit buffer empty interrupt occurs.
In receive operations, a DMA trigger will be issued every time the received data is written to the receive data buffer.
These DMA triggers allow continuous data transmission/reception through DMA transfer between memory and
transmit/receive data buffers. DMA transfer can be performed without generating any FSIO interrupt.
The following lists the DMAC channels that allow selection of an FSIO DMA trigger.
FSIO Ch.0 receive buffer full:
DMAC Ch.2
FSIO Ch.0 transmit buffer empty: DMAC Ch.3
FSIO Ch.1 receive buffer full:
DMAC Ch.4
FSIO Ch.1 transmit buffer empty: DMAC Ch.5
For more information on DMA transfer, see the “DMA Controller (DMAC)” chapter.
Control Register Details
20.10
10.1 List of FSIO Registers
Table 20.
Address
Register name
Function
0x300700
FSIO_TXD0
FSIO Ch.0 Transmit Data Register
Transmit data
0x300701
FSIO_RXD0
FSIO Ch.0 Receive Data Register
Receive data
0x300702
FSIO_STATUS0 FSIO Ch.0 Status Register
Indicate transfer/error statuses
0x300703
FSIO_CTL0
FSIO Ch.0 Control Register
Set transfer mode and control data transfer
0x300704
FSIO_IRDA0
FSIO Ch.0 IrDA Register
Set IrDA conditions
0x300705
FSIO_BRTRUN0 FSIO Ch.0 Baud-rate Timer Control Register
Control baud-rate timer
0x300706
FSIO_BRTRDL0 FSIO Ch.0 Baud-rate Timer Reload Data L Register
Baud-rate timer initial count data
0x300707
FSIO_BRTRDH0 FSIO Ch.0 Baud-rate Timer Reload Data H Register
0x300708
FSIO_BRTCDL0 FSIO Ch.0 Baud-rate Timer Count Data L Register
Baud-rate timer count data
0x300709
FSIO_BRTCDH0 FSIO Ch.0 Baud-rate Timer Count Data H Register
0x30070a
FSIO_INTF0
FSIO Ch.0 Interrupt Flag Register
Indicate FSIO interrupt cause status
0x30070b
FSIO_INTE0
FSIO Ch.0 Interrupt Enable Register
Enable/disable FSIO interrupts
0x30070f
FSIO_ADV0
FSIO Ch.0 STD/ADV Mode Select Register
Select standard/advanced mode
0x300710
FSIO_TXD1
FSIO Ch.1 Transmit Data Register
Transmit data
0x300711
FSIO_RXD1
FSIO Ch.1 Receive Data Register
Receive data
0x300712
FSIO_STATUS1 FSIO Ch.1 Status Register
Indicate transfer/error statuses
0x300713
FSIO_CTL1
FSIO Ch.1 Control Register
Set transfer mode and control data transfer
0x300714
FSIO_IRDA1
FSIO Ch.1 IrDA Register
Set IrDA conditions
0x300715
FSIO_BRTRUN1 FSIO Ch.1 Baud-rate Timer Control Register
Control baud-rate timer
0x300716
FSIO_BRTRDL1 FSIO Ch.1 Baud-rate Timer Reload Data L Register
Baud-rate timer initial count data
0x300717
FSIO_BRTRDH1 FSIO Ch.1 Baud-rate Timer Reload Data H Register
0x300718
FSIO_BRTCDL1 FSIO Ch.1 Baud-rate Timer Count Data L Register
Baud-rate timer count data
0x300719
FSIO_BRTCDH1 FSIO Ch.1 Baud-rate Timer Count Data H Register
0x30071a
FSIO_INTF1
FSIO Ch.1 Interrupt Flag Register
Indicate FSIO interrupt cause status
0x30071b
FSIO_INTE1
FSIO Ch.1 Interrupt Enable Register
Enable/disable FSIO interrupts
0x30071f
FSIO_ADV1
FSIO Ch.1 STD/ADV Mode Select Register
Select standard/advanced mode
The FSIO registers are described in detail below. These are 8-bit registers.
Note: When data is written to the registers, the “Reserved” bits must always be written as 0 and not 1.