串口UART及编程.ppt
《串口UART及编程.ppt》由会员分享,可在线阅读,更多相关《串口UART及编程.ppt(33页珍藏版)》请在三一办公上搜索。
1、第六章 S3C2410的串口UART及编程,6.1 S3C2410的串口UART概述,6.1.1 S3C2410串行通信(UART)单元S3C2410 UART单元提供3个独立的异步串行通信接口,皆可工作于中断和DMA模式。使用系统时钟最高波特率达230.4 kb/s,如果使用外部设备提供的时钟,可以达到更高的速率。每一个UART单元包含一个16字节的FIFO发送缓冲器和一个16字节的FIFO接收缓冲器,用于数据的接收和发送。S3C2410X UART支持可编程波特率、红外发送/接收(只UART2)、1个或2个停止位、5位/6位/7位/8位数据宽度和奇偶校验。,6.1.2 波特率的产生,波特率
2、由一个专用的UART波特率分频寄存器(UBRDIVn)(n=02)控制,计算公式如下 UBRDIVn=(int)ULK/(波特率 16)1或者 UBRDIVn=(int)PLK/(波特率 16)1,6.1.3 UART通信操作,下面简略介绍UART操作,关于数据发送、数据接收、中断产生、波特率产生、查询检测模式、红外模式和自动流控制的详细介绍,请参照相关教材和数据手册。发送数据帧是可编程的。一个数据帧包含1个起始位、58个数据位、1个可选的奇偶校验位和12位停止位,停止位位数通过行控制寄存器ULCONn配置。,6.2 UART的控制寄存器,6.2.1 UART线路控制寄存器ULCONn该寄存器
3、的位6决定是否使用红外模式,位5、位4和位3决定校验方式,位2决定停止位长度,位1和位0决定每帧的数据位数。具体如表6-1所示:,6.2.2 UART控制寄存器UCONn该寄存器决定UART的各种模式,见表6-2所示:,6.2.3 UART FIFO控制寄存器UFCONn,S3C2410 UART每通道有16个字节的先入先出(FIFO)接收缓冲器和16个字节的先入先出(FIFO)发送缓冲器,如果在程序中使用它们,必须要对UART FIFO控制寄存器UFCONn进行定义,UFCONn的配置如表6-3所示:,6.2.4 UART 调制解调器控制寄存器UMCONn(n=0或1),发送寄存器UTXH和
4、接收寄存器URXH,这两个寄存器存放发送和接收的数据,当然只有1字节(8位数据)。需要注意的是,在发生溢出错误时,接收的数据必须被读出来,否则会引发下次溢出错误。,6.2.6 UART TX/RX 状态寄存器UTRSTATUART TX/RX状态寄存器UTRSTAT配置见表6-5:,6.3 UART通信程序例子,UART通信电平可有三种形式,TTL电平,RS232或RS485。嵌入式控制系统大多具有小、巧、轻、灵、薄的特点,许多传感器和S3C2410一体或距离很近,没有干扰,例如多参数监护仪等医疗设备,为简化电路,可采用TTL电平直接与S3C2410相连。如果通信距离在几十米左右并是点对点通信
5、可采用RS232接口,否则只能采用RS485通信。在工程上UART通信大多采用三线制(发送连对方接收、接收连对方发送,双方共地)。本节在介绍RS232接口电路的同时给出了一个UART通信程序实例。,6.3.1 RS232接口电路,本实验平台的电路中,UART0与S3C2410连接电路如图6-1所示,UART0只采用两根接线RXD0和TXD0(RS232只能实现点对点通信,且两点要共地),因此只能进行简单的数据传输及接收。UART0采用美信332电平转换器(MAX332)做电平转换,图6-1 UART0X与S3C2410的连接电路图,6.3.2 UART实验程序,/-/头文件uart0.h/-#
6、define TX_INTTYPE 1/1:发送中断电平触发标志#define RX_INTTYPE 1/1:接收中断电平触发标志extern void Uart_Port_Set(void);/保存本程序使用的端口原状态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实验程序,/-
7、#include#include#include 2410addr.h#include 2410lib.h#include 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
8、_rGPHDAT,save_rGPHUP;volatile U32 save_ULCON0,save_UCON0,save_UFCON0,save_UMCON0;,/*定义一些变量,做临时保存端口数据和状态的缓冲区,通信结束,端口数据和状态要恢复*/Volatile U32 isTxint isRxint;/定义二个变量,分别做发送和接收中断结束与否标志volatile static char*uart0TxStr;/UART0发送字串地址volatile static char*uart0RxStr;/UART0接收字串地址/-/保存UART实验使用的端口和寄存器/-void Uart_Po
9、rt_Set(void)/保存H口控制寄存器 save_rGPHCON=rGPHCON;save_rGPHDAT=rGPHDAT;save_rGPHUP=rGPHUP;/配置UART口 rGPHCON,rGPHCON|=0 x2faaa;/H口控制寄存器nRTS1,nCTS1功能使能 rGPHUP|=0 x1ff;/Uart 口上拉禁止/rINTSUBMSK=0 x7ff;/屏蔽全部子中断 save_ULCON0=rULCON0;/保存UART控制寄存器 save_UCON0=rUCON0;save_UFCON0=rUFCON0;save_UMCON0=rUMCON0;/Initialize
10、UART0,port/-/恢复UART实验使用的端口和寄存器/-void Uart_Port_Return(void),/Pop UART GPIO port configuration rGPHCON=save_rGPHCON;rGPHDAT=save_rGPHDAT;rGPHUP=save_rGPHUP;/Pop Uart control registers rULCON0=save_ULCON0;rUCON0=save_UCON0;rUFCON0=save_UFCON0;rUMCON0=save_UMCON0;/-/UART通信使用UCLK做波特率发生器,void Uart_Uclk_E
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 串口 UART 编程
链接地址:https://www.31ppt.com/p-5027507.html