已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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)-1UART时钟: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的引脚功能进行配置。void uart0_init(void) GPHCON |= 0xaa; / GPH0,GPH1,GPH2,GPH3分别nCTS0,nRTS0,TXD0,RXD0 GPHUP = 0x7ff; /内部上拉被禁止UFCON0 = 0x00; / 不使用FIFO UMCON0 = 0x00; / 不使用流控 ULCON0 = 0x03; / 8N1(8个数据位,无校验,1个停止位) UCON0 = 0x245;/ 查询方式,UART时钟源为PCLK,中断请求方式为Tx-电平,Rx-脉冲rUBRDIV0=( (int)(pclk/16./baud+0.5) -1 ); /设置波特率接下来几个是进行数据的发送和接收的函数/=此函数的作用是向UART发送一个字符,不用FIFO,直接用UART发送void Uart_SendByte(char data)if(data=n)while(!(rUTRSTAT0 & 0x2); 取出rUTRSTAT0(UART0发送/接收寄存器)寄存器中的第2位,含义为Transmit buffer是否为空,为1时表示空。在发送缓冲器为空时,再发送/ Delay(1); /because the slow response of hyper_terminal WrUTXH0(r); /将数据写入到UART0发送缓冲器中while(!(rUTRSTAT0 & 0x2); /Wait until THR is empty./ Delay(1);WrUTXH0(data); /=发送字符串的函数void Uart_SendString(char *pt) while(*pt) Uart_SendByte(*pt+);/C语言的可变参数,为了达到printf的功能/例如:Uart_Printf(“my name is %s”a10);就相当于Uart_SendString(“my name is XX”);XX是a10的内容void Uart_Printf(char *fmt,.) va_list ap; char string256; va_start(ap,fmt); vsprintf(string,fmt,ap); Uart_SendString(string); va_end(ap);/=等待,直到UART的发送器为空,就是发送完毕void Uart0_TxEmpty()while(!(rUTRSTAT0 & 0x4); /Wait until Tx shifter is empty./=从终端上获取敲入的字符,返回值为char类型。RdURXH0有数据时,返回URXH的数据。当URXH没有数据时,总是等待,直到有数据。char Uart_Getch(void) while(!(rUTRSTAT0 & 0x1); /接收缓冲器接收到有效数据return RdURXH0(); /从UART0接收缓冲器(URXH0)接收数据/=Uart_GetKey 这个与Uart_Getch 不同的是,当URXH没有数据时返回0。有数据时,返回数据,这个函数可以用来查看当前URXH中的值。char Uart_GetKey(void)if(rUTRSTAT0 & 0x1) /Receive data readyreturn RdURXH0();elsereturn 0;/=这个函数用于从终端得到一个字符串,并储存到string中void Uart_GetString(char *string) char *string2 = string; char c; while(c = Uart_Getch()!=r)/r是回车键 if(c=b)/b是backspace按键 if(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人员服务采购协议书
- 补偿协议书签好后
- 2025初级商业人像摄影师时间窗口布光规划考核试卷
- 实习协议书最长几年
- 奥迪升降高音协议书
- 什么协议书固态最快
- 2025年制造业工业互联网安全防护人才激励机制考核试卷
- 2025年市政公用工程二级建造师案例分析专项卷(海绵城市设备设计案例)考核试卷
- 2025年互联网行业移动互联网用户行为分析报告
- 2025年健康中国行动实施-老年健康(居家老年健康服务)考核试卷
- DB37∕T 5302-2024 既有城市桥梁现场检测及承载能力评估技术标准
- 安全生产法培训 课件
- 公司行政部费用管理制度
- 中国麻醉医生
- 2024年北京市公安局平谷分局招聘勤务辅警真题
- 快消品公司财务管理制度
- 房建市政安全监管图文口袋书课件
- DB31/T 1333-2021城市供水管网运行安全风险监测技术规范
- 数字普惠金融对农村居民收入增长的影响机制研究
- 12.2.3 趋势图( 分层作业) 七年级数学下册 (人教版2024)
- 中国补习班行业市场发展现状及前景趋势与投资分析研究报告2025-2028版
评论
0/150
提交评论