UART 2440

    首先分析一下UART的组成,4个模块:波特率发生器,接收模块,发送模块,控制模块.

    接着看一下UART的功能特性。

    1是串行通信,因此需要一定的通信格式,所以这里需要对每个FRAME的格式进行设置,并与通信部件保持一致,包括开始位、数据位、校验位和停止位,这部分在ULCON线形控制器中进行设置。

    2是异步通信,时钟信号可以选择,并且设置相应的频率,这在UCON控制器中进行设置。可以是PCLK、UEXTCLK或者FCLK/n,其中如果选择FCLK/n,那么特殊的是需要根据3个UCON控制器联合设置时钟频率。特别的在2440中:NOTE: You should add following codes     after selecting or deselecting the FCLK/n.
        rGPHCON = rGPHCON & ~(3<<16); //GPH8(UEXTCLK) input
        Delay(1); // about 100us
        rGPHCON = rGPHCON & ~(3<<16) | (1<<17); //GPH8(UEXTCLK) UEXTCLK

    3是波特率,在UBRDIV中设置波特率分频值。时钟频率有了,但是信号码元的传送是以波特率进行衡量的,所以需要设置UART的波特率来和外接设备保持一致,具体的计算办法是UBRDIVn = (int)( UART clock / ( buad rate x 16) ) –1计算得到波特率的控制参数。

    4是通信方式的实现,这在UCON中进行设置。发送和接收以怎么样的方式通知控制器(不能总是占着资源),有DMA和INTERRUPT两种选择。并且在不同的方式中,有不一样的通知办法以及结果:Interrupt Type,Time Out,Error Status Interrupt 。其他还有Loopback Mode,Send Break Signal。

    5FIFO的控制,通过UFCON实现。通信方式确定了,在进行通信过程中的数据转移还有具体的操作,比如这里有FIFO这个部分,包括FIFO的除法级别,以及FIFO的清除等。

    6MODEM控制,通过UMCON实现。因为在以上的条件都设置好后,基本可以实现通信了,但是由于通信双方可能在状态上并不完全匹配,比如一个处于已经准备发送的状态,而对方并未准备好接受,所以需要一个协调控制。有两种办法:一种是自动流控制,将相应位置位,另一种办法是通过软件来控制Request to Send位(要求对方发送),具体如下:

    Example of Non Auto-Flow Control (Controlling nRTS and nCTS by Software)
    Rx Operation with FIFO
    1. Select receive mode (Interrupt or DMA mode).
    2. Check the value of Rx FIFO count in UFSTATn register. If the value is less than 32, users have to set the value of
    UMCONn[0] to '1' (activating nRTS), and if it is equal or larger than 32 users have to set the value to '0'
    (inactivating nRTS).
    3. Repeat the Step 2.
    Tx Operation with FIFO
    1. Select transmit mode (Interrupt or DMA mode).
    2. Check the value of UMSTATn[0]. If the value is '1' (activating nCTS), users write the data to Tx FIFO register.

    另外由于AFC并不支持RS232接口,所以对于RS232:If the user wants to connect the UART to modem interface (instead of null modem), nRTS, nCTS, nDSR, nDTR, DCD and nRI signals are needed. In this case, the users can control these signals with general I/O ports by software because the AFC does not support the RS-232C interface.

 

    7其他是一些状态寄存器:TX/RX STATUS REGISTER、ERROR STATUS REGISTER、FIFO STATUS REGISTER、MODEM STATUS REGISTER,在SOFTWARE进行流控制等操作的时候可以参考。还有就是RECEIVE BUFFER REGISTER、TRANSMIT BUFFER REGISTER,不同模式下对应着FIFO和HOLDIGN寄存器,用来读写8BIT的待传输的数据,注意大小端对应不同的寄存器。

 

    当然2440的UART模块还支持infrared (IR),这在ULCON中可以选择。

 

    总结一下常用的设置应该有:格式的设置,时钟的选择,DMA和INTERRUPT的选择,波特率的设置、FIFO等。

你可能感兴趣的:(less,buffer,input,interface,Signal,delay)