1、UART原理简介
在介绍2440的UART操控器之前,咱们首要来了解一下UART的原理
UART:Universal Asynchronous Receiver/Transmitter(通用异步收发送器),用来传输串行数据,发送数据时,CPU将并行数据写入UART,UART依照必定格局在TxD线上串行宣布;接纳数据时,UART检测到RxD线上的信号,将串行搜集放到缓冲区中,CPU即可读取UART取得的这些数据。
UART最精简的连线方法只要3根线,TXD用于发送,RXD用于接纳,GND用于供给参阅电平。UART之间以帧作为数据传输单位,帧由具有完好含义的若干位组成,它包括开端位、数据位、校验位和中止位。发送数据之前,相互通讯的UART之间要约定好数据传输速率(波特率的倒数)、数据的传输格局(多少个数据位、是否运用校验位、奇校验仍是偶校验、多少个中止位)。
2、S3C2440 UART的特性
S3C2440的通用异步收发器(UART)配有3个独立异步串行I/O(SIO)端口,每个都能够经过产生中止或DMA恳求来进行CPU和UART之间的数据传输。如图1所示:每个UART包括一个波特率产生器、发送器、接纳器和一个操控单元,
图1 2440UART方框图(带FIFO)
波特率产生器能够由PCLK、FCLK/n或UEXTCLK(外部输入时钟)时钟驱动。UART经过运用体系时钟能够支撑最高115.2Kbps的比特率。假如是运用外部器材供给UEXTCLK的UART,则UART能够运行在更高的速度。发送器和接纳器各包括一个64字节的FIFO和数据移位器。要发送数据时,先将数据写入到FIFO接着在发送前复制到发送移位器中,随后将数据从发送数据引脚(TXDn)移出;接纳数据时,从接纳数据引脚(RXDn)移入收到的数据,接着从移位器复制到FIFO。
3、S3C2440 UART的运用
关于S3C2440,运用UART之前,首选需求对2440的UART模块进行初始化,需求设置波特率、传输格局(多少个数据位、是否运用校验位、奇校验或偶校验、多少个中止位、是否运用流量操控)、挑选所触及的管脚为UART功用、挑选UART通道的作业形式为中止形式或DMA形式。设置好之后,往相关寄存器写入数据即可发送,读取相关寄存器即可接纳到数据,还能够经过查询状况寄存器或设置中止来获悉数据是否发送结束、是否接纳到数据。
我用的开发板是天嵌的TQ2440,该开发板用SP3232EEN扩展了一个RS232串口,电路衔接如图2 所示:
图2 RS232原理图
波特率产生器
每个UART的波特率产生器为发送器和接纳器供给串行时钟,波特率产生器的时钟源能够挑选S3C2440A的内部时钟体系或许UEXTCLK。波特率时钟是经过16和由UART波特率分频寄存器(UBRDIVn)指定的16位分频系数来分频源时钟(PCLK,FCLK/n或许UEXTCLK)产生的,UBRDIVn由下列表达式确认:
UBRDIVn=(int)(UART时钟/(波特率*16))-1
UART时钟:PCLK,FCLK/n或许UEXTCLK,例如,假如波特率为115200bps而且UART时钟为40MHz,则UBRDIVn为:
UBRDIVn=(int)(40000000/(115200*16))-1=(int)(21.7)-1(取最接近的整数)=22-1=21
介绍发送和接纳操作之前,先介绍几个重要的寄存器
UBRDIVn寄存器:设置波特率,S3C2440 UART的时钟源有两种挑选:PCLK、UEXTCLK、FCLK/n,其间n的值经过UCON0-UCON2联合设置
ULCONn寄存器:设置传输格局
UCONn寄存器:它用于挑选UART时钟源、设置UART中止方法
UFCONn寄存器、UFSTATn寄存器,UFCONn寄存器用于设置是否运用FIFO,设置各FIFO的触发阙值,即发送FIFO中有多少个数据时产生中止、接纳FIFO中有多少个数据时产生中止。并能够经过设置UFCONn寄存器来复位各个FIFO。读取UFSTATn寄存器能够知道各个FIFO是否现已满,其间有多少个数据。
UMCONn寄存器、UMSTATn寄存器,这两类寄存器用于流量操控,详细看数据手册
UTRSTATn寄存器,它用来标明数据是否现已发送结束、是否现已接纳到数据
UERSTATn寄存器,用来表明各种过错是否产生
UTXHn寄存器,CPU将数据写入这个寄存器,UART即会将它保存到缓冲区中,并主动发送出去
URXHn寄存器,当UART接纳到数据时,CPU读取这个寄存器,即可取得数据。
下面经过实践的代码来了解2440的UART
首选是UART的初始化,TQ2440将UART0引了一个接口出来,就介绍UART0吧
2440的UART引脚是挂接在GPH上的,所以运用UART之前需求先对GPH的引脚功用进行装备。