第六章-S3C2410的串口UART及编程ppt课件(全)_第1页
第六章-S3C2410的串口UART及编程ppt课件(全)_第2页
第六章-S3C2410的串口UART及编程ppt课件(全)_第3页
第六章-S3C2410的串口UART及编程ppt课件(全)_第4页
第六章-S3C2410的串口UART及编程ppt课件(全)_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第六章 S3C2410的串口UART及编程 第六章 S3C2410的串口UART及编程ppt课件(全)主要内容:6.1 S3C2410的串口UART概述6.2 UART的控制寄存器6.3 UART通信程序例子第六章 S3C2410的串口UART及编程ppt课件(全)6.1 S3C2410的串口UART概述6.1.1 S3C2410串行通信(UART)单元S3C2410 UART单元提供3个独立的异步串行通信接口,皆可工作于中断和DMA模式。使用系统时钟最高波特率达230. 4 kb/s,如果使用外部设备提供的时钟,可以达到更高的速率。每一个UART单元包含一个16字节的FIFO发送缓冲器和一个

2、16字节的FIFO接收缓冲器,用于数据的接收和发送。S3C2410X UART支持可编程波特率、红外发送/接收( 只UART2 )、1个或2个停止位、5位/6位/7位/8位数据宽度和奇偶校验。第六章 S3C2410的串口UART及编程ppt课件(全)6.1.2 波特率的产生波特率由一个专用的UART波特率分频寄存器(UBRDIVn)(n=02)控制,计算公式如下 UBRDIVn=(int)ULK/(波特率 16)1或者 UBRDIVn=(int) PLK/(波特率 16)1第六章 S3C2410的串口UART及编程ppt课件(全)6.1.3 UART通信操作下面简略介绍UART操作,关于数据发

3、送、数据接收、中断产生、波特率产生、查询检测模式、红外模式和自动流控制的详细介绍,请参照相关教材和数据手册。发送数据帧是可编程的。一个数据帧包含1个起始位、58个数据位、1个可选的奇偶校验位和12位停止位,停止位位数通过行控制寄存器ULCONn配置。第六章 S3C2410的串口UART及编程ppt课件(全)6.2 UART的控制寄存器6.2.1 UART线路控制寄存器ULCONn该寄存器的位6决定是否使用红外模式,位5、位4和位3决定校验方式,位2决定停止位长度,位1和位0决定每帧的数据位数。具体如表6-1所示:第六章 S3C2410的串口UART及编程ppt课件(全)第六章 S3C2410的

4、串口UART及编程ppt课件(全)6.2.2 UART控制寄存器UCONn该寄存器决定UART的各种模式,见表6-2所示:第六章 S3C2410的串口UART及编程ppt课件(全)6.2.3 UART FIFO控制寄存器UFCONnS3C2410 UART每通道有16个字节的先入先出(FIFO)接收缓冲器和16个字节的先入先出(FIFO)发送缓冲器,如果在程序中使用它们,必须要对UART FIFO控制寄存器UFCONn进行定义,UFCONn的配置如表6-3所示:第六章 S3C2410的串口UART及编程ppt课件(全)第六章 S3C2410的串口UART及编程ppt课件(全)6.2.4 UAR

5、T 调制解调器控制寄存器UMCONn(n=0或1)第六章 S3C2410的串口UART及编程ppt课件(全)发送寄存器UTXH和接收寄存器URXH这两个寄存器存放发送和接收的数据,当然只有1字节(8位数据)。需要注意的是,在发生溢出错误时,接收的数据必须被读出来,否则会引发下次溢出错误。第六章 S3C2410的串口UART及编程ppt课件(全)6.2.6 UART TX/RX 状态寄存器UTRSTATUART TX/RX状态寄存器UTRSTAT配置见表6-5:第六章 S3C2410的串口UART及编程ppt课件(全)6.3 UART通信程序例子UART通信电平可有三种形式,TTL电平,RS23

6、2或RS485。嵌入式控制系统大多具有小、巧、轻、灵、薄的特点,许多传感器和S3C2410一体或距离很近,没有干扰,例如多参数监护仪等医疗设备,为简化电路,可采用TTL电平直接与S3C2410相连。如果通信距离在几十米左右并是点对点通信可采用RS232接口,否则只能采用RS485通信。在工程上UART通信大多采用三线制(发送连对方接收、接收连对方发送,双方共地)。本节在介绍RS232接口电路的同时给出了一个UART通信程序实例。第六章 S3C2410的串口UART及编程ppt课件(全)6.3.1 RS232接口电路本实验平台的电路中,UART0与S3C2410连接电路如图6-1所示,UART0

7、只采用两根接线RXD0和TXD0 (RS232只能实现点对点通信,且两点要共地),因此只能进行简单的数据传输及接收。UART0采用美信332电平转换器(MAX332)做电平转换 第六章 S3C2410的串口UART及编程ppt课件(全)图6-1 UART0X与S3C2410的连接电路图第六章 S3C2410的串口UART及编程ppt课件(全) 6.3.2 UART实验程序/-/ 头文件uart0.h/-#define TX_INTTYPE 1 /1:发送中断电平触发标志#define RX_INTTYPE 1 /1:接收中断电平触发标志extern void Uart_Port_Set(voi

8、d); /保存本程序使用的端口原状态extern void Uart_Port_Return(void); /恢复本程序使用的端口原状态extern void Uart_Uclk_En(int, int); /串行通信使用UCLKextern void Uart_Pclk_En(int, int); / 串行通信使用PCLK void Test_Uart0_Int(void); /UART0初始化/-/ UART实验程序第六章 S3C2410的串口UART及编程ppt课件(全)/-#include #include #include 2410addr.h#include 2410lib.h#i

9、nclude def.h#include uart0.hvoid Uart_Port_Set(void);void Uart_Port_Return(void);void _irq Uart0_TxInt(void) ; /发送中断服务程序void _irq Uart0_RxIntOrErr(void); /接收字符和错误代码中断服务程序void _sub_Uart0_RxInt(void); /接收字符子中断服务程序,从上面程序分出volatile U32 save_rGPHCON,save_rGPHDAT,save_rGPHUP;volatile U32 save_ULCON0,save_

10、UCON0,save_UFCON0,save_UMCON0;第六章 S3C2410的串口UART及编程ppt课件(全)/* 定义一些变量,做临时保存端口数据和状态的缓冲区,通信结束,端口数据和状态要恢复*/Volatile U32 isTxint isRxint; /定义二个变量,分别做发送和接收中断结束与否标志volatile static char *uart0TxStr;/ UART0发送字串地址volatile static char *uart0RxStr;/ UART0接收字串地址/-/ 保存UART实验使用的端口和寄存器/-void Uart_Port_Set(void) /保存

11、H口控制寄存器 save_rGPHCON=rGPHCON; save_rGPHDAT=rGPHDAT; save_rGPHUP=rGPHUP; /配置UART口 rGPHCON&=0 x3c0000;第六章 S3C2410的串口UART及编程ppt课件(全) rGPHCON|=0 x2faaa; /H口控制寄存器nRTS1,nCTS1功能使能 rGPHUP|=0 x1ff; /Uart 口上拉禁止 /rINTSUBMSK=0 x7ff; /屏蔽全部子中断 save_ULCON0=rULCON0; /保存UART控制寄存器 save_UCON0=rUCON0; save_UFCON0=rUFCO

12、N0; save_UMCON0=rUMCON0; /Initialize UART0, port /-/ 恢复UART实验使用的端口和寄存器/-void Uart_Port_Return(void) 第六章 S3C2410的串口UART及编程ppt课件(全) /Pop UART GPIO port configuration rGPHCON=save_rGPHCON; rGPHDAT=save_rGPHDAT; rGPHUP=save_rGPHUP; /Pop Uart control registers rULCON0=save_ULCON0; rUCON0 =save_UCON0; rUF

13、CON0=save_UFCON0; rUMCON0=save_UMCON0; /-/ UART通信使用UCLK做波特率发生器第六章 S3C2410的串口UART及编程ppt课件(全)void Uart_Uclk_En(int ch,int baud) int ch, baud; Uart_Printf(nSelect UART channel0:UART0;1:UART1;2:UART2:n); ch=Uart_GetIntNum(); /从键盘读通道号 Uart_Printf(nSelect baud rate :n); baud=Uart_GetIntNum(); /从键盘读波特率 if(

14、ch = 0) /选UART0 Uart_Select(0); rUCON0|=0 x400; /选UCLK rUBRDIV0=( (int)(UCLK/16./baud) -1 );/波特率因子寄存器 Uart_Printf(UCLK is enabled by UART0.n); for(i=0;i100;i+ 第六章 S3C2410的串口UART及编程ppt课件(全) UART实验使用PCLK/-void Uart_Pclk_En(int ch, int baud) int ch, baud;Uart_Printf(nSelect UART channel0:UART0/1:UART1/

15、2:UART2:n); ch=Uart_GetIntNum(); Uart_Printf(nSelect baud rate :n); baud=Uart_GetIntNum(); if(ch = 0) 选UART0 Uart_Select(0);第六章 S3C2410的串口UART及编程ppt课件(全)rUCON0&=0 x3ff;/ Select PCLK rUBRDIV0=( (int)(PCLK/16./baud) -1 );/Baud rate divisior register Uart_Printf(PCLK is enabled by UART0.n); for(i=0;iUA

16、RT0 Tx interrupt test is good!rn; /发送的实验字串Uart_Printf(Uart channel 0 Tx Interrupt Testn);/在终端上提示pISR_UART0=(unsigned)Uart0_TxInt; /设中断向量,即发送中断服务程序入口rULCON0=(06)|(03)|(02)|(3); /* 正常发送,无效验,一个停止位,8个数据位 选 UCLK */ rUCON0&=0 x400;rUCON0|=(TX_INTTYPE9)|(RX_INTTYPE8)|(07)|(06)|(05)|(04)|(12)|(); /选时钟,发送,接收

17、中断 Uart_TxEmpty(0); /等,直到发送缓冲器空,此时会产生发送中断 rINTMSK=(BIT_UART0); / 总中断屏蔽(UART0位)打开 rINTSUBMSK=(BIT_SUB_TXD0); / 子中断屏蔽(UART0发送位)打开 while(isTxInt);/* 从此处进入中断,中断结束又返回这里等下次中断,直到发送结束 第六章 S3C2410的串口UART及编程ppt课件(全)isTxInt=0跳出,在超级终端上可看到发给它的字符 */ / UART0接收中断实验,UART0接收从键盘上输入的字符,按ENTER键接收结束isRxInt=1;/接收中断标志,接收结束

18、,isRxInt=0 uart0RxStr=(char *)UARTBUFFER;/ 接收字串缓冲区首地址设定Uart_Printf(nUart channel 0 Rx Interrupt Test:n);/提示Uart_Printf(After typing ENTER key, you will see the characters which was typed by you.);Uart_Printf(nTo quit, press ENTER key.!n);Uart_TxEmpty(0) ;/*等,直到发送缓冲器空,(等上面发送的最后一个字符被对方取走,才进行接收实验)*/pIS

19、R_UART0 =(unsigned)Uart0_RxIntOrErr;/ 设中断向量,即接收中断服务程序入口rULCON0=(06)|(03)|(02)|(3); /正常接收,无效验,一个停止位,8个数据位rUCON0 &= 0 x400; /选 UCLKrUCON0|= (TX_INTTYPE9)|(RX_INTTYPE8)|(07)|(16)|(05)|(04)|(12)|(1); /选时钟,发送,接收中断第六章 S3C2410的串口UART及编程ppt课件(全) ClearPending(BIT_UART0); /清UART0中断挂起rINTMSK=(BIT_UART0); /中断打开

20、rSUBSRCPND=(BIT_SUB_TXD0|BIT_SUB_RXD0|BIT_SUB_ERR0); rINTSUBMSK=(BIT_SUB_RXD0|BIT_SUB_ERR0);/ 子中断打开while(isRxInt); /* 从此处进入中断,中断结束又返回这里等下次中断,直到接收结束isRxInt=0跳出 */ rINTSUBMSK|=(BIT_SUB_RXD0|BIT_SUB_ERR0);/ 中断结束,屏蔽子中断(0通道接收位)rINTMSK|=(BIT_UART0); /中断结束,屏蔽总中断(0通道UART位) Uart_Printf(%sn,(char *)UARTBUFFER);/打印接收的字符串,实际就是在终端上显示第六章 S3C2410的串口UAR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论