S3C2410x 提供3个独立的异步串行I/O接口,每一个都可以工作在中断或是 DMA 模式。UART 最高可以支持230.
4K bps波特率,通过使用系统时钟。如果有外部设备给 UART 提供 UCLK, 那么 UART 可以达到更高的速度。每个 UART 通道包含2个16个字节的 FIFO 用于接收和发送数据。
S3C2410 的 UART 包括 可编程波特率,infra-red 发送/接收, 1~2个停止位, 5~8位数据位和奇偶校验。
每个 UART 由波特率发生器、发送器、接收器和控制单元组成,如图11-1所示。波特率发生器可以由 PCLK 或是 UCLK 提供时钟。数据发送器和接收器包含16字节的 FIFO 和数据缓冲器。数据首先被写入 FIFO 中,然后在发送前被拷贝到发送数据缓冲器中。这些数据之后被数据发送引脚(TxDn)发送。同时从接收引脚接收数据,然后将数据从缓冲器复制到 FIFO。
FeatruesRxD0, TxD0, RxD1, TxD1, RxD2 和 TxD2 带有 DMA 和中断操作。
UART 通道 0,1和2,带有 IrDA 1.0 & 16-byte FIFO
UART 通道 0和1,带有 nRTS0,nCTS0,nRTS1 和 nCTS1
支持硬件握手发送/接收
UART Operation接下来的章节描述了 UART 的操作,包括数据发送、数据接收、中断产生、波特率产生,回环模式,红外模式和自动流控制。
Data Transmission传送的数据结构是可编程的。它包括一位起始位、5~8位数据位、一位可选的奇偶校验位和1~2位停止位,这些都可以通过线性控制寄存器(ULCONn)来指定。发送器也可以通过强制串行口在一帧发送数据时间里输出逻辑0来产生中止条件。这块发送中止信号出现在发送字发送完之后。在发送中止信号之后,将继续发送数据到 Tx 的 FIFO 中(Tx 将保持寄存器对于 Non-FIFO 模式来说)。
Data Reception与发送一样,接收到的数据结构同样是可编程的。它包括一位起始位、5~8位数据位、一位可选的奇偶校验位和1~2位停止位在线性控制寄存器中(ULCONn)。接收器可以探测 overrun error,parity error,frame error和break condition,每种错误都有相应的错误标志位。
overrun error 代表在旧数据被读取前新数据已经将旧数据重写。
parity error 代表接收器已经探测到不期望的奇偶校验值。
frame error 代表接收到的数据没有默认的停止位。
break condition 代表 RxDn 输入保持在逻辑0的时间比一帧发送数据的时间长
当在3个字长时间内没有接收到任何数据并且 Rx FIFO 在 FIFO 模式下非空,将会产生接收超时(Receive time-out condition)。
Auto Flow Control(AFC)S3C2410X 的串口0和串口1支持自动流控制,并带有 nRTS 和 nCTS信号。如果用户想连接串口到终端,那么需要在 UMCONn 寄存器中取消自动流控制位并且用软件控制 nRTS 信号。
在 AFC 模式中, nRTS 根据接收器的状态和 nCTS 信号来控制发送器的操作。当 nCTS 信号被激活时(在 AFC 中,nCTS 代表其他串口的 FIFO 已经准备好接收数据),串口的发送器发送 FIFO 中的数据。在接收数据前,如果接收器的 FIFO 有超过两个字节的空闲,那么 nRTS 信号将被激活;如果接收器的 FIFO 中空闲少于一个字节时, nRTS 信号将停止激活(在 AFC 模式中, nRTS 代表它本身的接收FIFO 已经准备好接收数据)。
NOTE: 串口2不支持 AFC 功能,因为 S3C2410X 没有 nRTS2 和 nCTS2。
Example of Non Auto-Flow control(controlling nRTS and nCTS by software)
Rx operation with FIFO
选择接收模式(Interrupt or DMA mode)。
在 UFSTATn 寄存器中检查 Rx FIFO 中当前的字节数。如果数值少于15,用户需要将 UMCONna[0] 的值设为1(激活 nRTS);如果大于等于15,用户应把值设为0(取消 nRTS)。
重复执行第二步。
Tx operation with FIFO
选择发送模式(Interrupt or DMA mode)。
检查 UMSTATn[0] 的值。如果值为1(激活 nCTS),用户可以将数据写到 Tx FIFO 寄存器中。
RS-232C interface如果用户想把串口连接到终端上, nRTS, nCTS, nDSR, nDTR, DCD 和 nRI 信号是必须的。由于 AFC 不支持 RS-232C 接口,如果用户要使用这种接口,需要通过软件控制通用 I/O 接口来控制这些信号。
Interrupt/DMA Request GenrationS3C2410X 的每个串口有7种状态:Overrun error, Parity error, Frame error, Break, Receive buffer data ready, Transmit buffer empty 和 Transmit shifter empty。所有这些状态都通过相应的串口状态寄存器(UTRSTATn/UERSTATn)表现出来。