"); //-->
五、S3C2410内置的UART控制器 S3C2410内部具有3个独立的UART控制器,每个控制器都可以工作在Interrupt(中断)模式或DMA(直接内存访问)模式,也就是说UART控制器可以CPU与UART控制器传送资料的时候产生中断或DMA请求。并且每个UART均具有16字节的FIFO(先入先出寄存器),支持的最高波特率可达到230.4Kbps 图5-11是S3C2410内部UART控制器的结构图 |
图5-11 |
UART的操作 UART的操作分为以下几个部分,分别是:资料发送、资料接收、产生中断、产生波特率、Loopback模式、红外模式以及自动流控模式。 资料发送 发送的资料帧格式是可以编程设置的。它包含了起始位、5~8个资料位、可选的奇偶校验位以及1~2位停止位。这些都是通过UART的控制寄存器 ULCONn 来设置的。 资料接收 同发送一样,接收的资料帧格式也是可以进行编程设置的。此外,还具备了检测溢出出错、奇偶校验出错、帧出错等出错检测,并且每种错误都可以置相应的错误标志。 自动流控模式 S3C2410的UART0和UART1都可以通过各自的nRTS和nCTS信号来实现自动流控。 在自动流控(AFC)模式下nRTS取决于接收端的状态,而nCTS控制了发送断的操作。具体地说:只有当nCTS有效时(表明接收方的FIFO已经准备就绪来接收资料了),UART才会将FIFO中的资料发送出去。在UART接收资料之前,只要当接收FIFO有至少2-byte空余的时候,nRTS就会被置为有效。图5-12是UART 自动流控模式的连接方式 |
图5-12
|
中断/DMA请求产生 S3C2410的每个UART都有7种状态,分别是:溢出覆盖(Overrun)错误、奇偶校验错误、帧出错、断线错误、接收就绪、发送缓冲空闲、发送移位器空闲。它们在UART状态寄存器 UTRSTATn / UERSTATn 中有相应的标志位。 波特率发生器 ULCONn (UART Line Control Register)见图5-13 |
图5-13
|
Word Length :资料位长度
Number of Stop Bit :停止位数 Parity Mode :奇偶校验位类型 Infra-Red Mode :UART/红外模式选择(当以UART模式工作时,需设为“0”) UCONn (UART Control Register)见图5-14 |
选择1:Level(电平模式中断。非FIFO模式时,只要接收缓冲区中有资料,即产生中断;为FIFO模式时,只要FIFO中的资料达到触发水平后,即产生中断) Tx Interrupt Type :类同于Rx Interrupt Type Clock Selection :选择UART波特率发生器的时钟源。 |
图5-14
|
UFCONn (UART FIFO Conrtol Register)见图5-15 FIFO Enable :FIFO使能选择。 Rx FIFO Reset :选择当复位接收FIFO时是否自动清除FIFO中的内容。 Tx FIFO Reset :选择当复位发送FIFO时是否自动清除FIFO中的内容。 Rx FIFO Trigger Level :选择接收FIFO的触发水平。 Tx FIFO Trigger Level :选择发送FIFO的触发水平。 |
图5-15
|
UMCONn (UART Modem Control Register)见图5-16 Request to Send :如果在AFC模式下,该位将由UART控制器自动设置;否则的话就必须由用户的软件来控制。 Auto Flow Control :选择是否使能自动流控(AFC)。 |
图5-16
|
UTRSTATn (UART TX/RX Status Register)见图5-17 Receive buffer data ready :当接收缓冲寄存器从UART接收端口接收到有效资料时将自动置“1”。反之为“0”则表示缓冲器中没有资料。 Transmit buffer empty :当发送缓冲寄存器中为空,自动置“1”;反之表明缓冲器中正有资料等待发送。 Transmitter empty :当发送缓冲器中已经没有有效资料时,自动置“1”;反之表明尚有资料未发送。 |
图5-17
|
UERSTATn (UART Error Status Register)见图5-18 Overrun Error :为“1”,表明发生Overrun错误。 Frame Error :为“1”。表明发生Frame(帧)错误。 |
图5-18
|
UFSTATn :(UART FIFO Status Register)见图5-19 Rx FIFO Count :接收FIFO中当前存放的字节数。 Tx FIFO Count :发送FIFO中当前存放的字节数。 Rx FIFO Full :为“1“表明接收FIFO已满。 Tx FIFO Full :为“1“表明发送FIFO已满。 |
图5-19 |
UMSTATn :(UART FIFO Status Register)见图5-20 Clear to Send :为“0”表示CTS无效;为“1”表示CTS有效。 Delta CTS :指示自从上次CPU访问该位后,nCTS的状态有无发生改变。 为“0”则说明不曾改变;反之表明nCTS信号已经变化了。 |
图5-20 |
UTXHn 和 URXHn 分别是UART发送和接收资料寄存器 UBRDIVn :(UART Baud Rate Divisor Register)见图5-21 |
图5-21
|
关于UART波特率的计算方法,在前面的内容中已经有详细的阐述,此处不做多余说明。
小结:读写状态寄存器UTRSTAT 以及错误状态寄存UERSTAT,可以反映芯片目前的读写状态以及错误类型。FIFO 状态寄存器UFSTAT 和MODEM 状态寄存器UMSTAT,通过前者可以读出目前FIFO 是否满以及其中的字节数;通过后者可以读出目前MODEM 的CTS状态。 |
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。