串口UART及编程.ppt_第1页
串口UART及编程.ppt_第2页
串口UART及编程.ppt_第3页
串口UART及编程.ppt_第4页
串口UART及编程.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

第六章S3C2410的串口UART及编程 6 1S3C2410的串口UART概述 6 1 1S3C2410串行通信 UART 单元S3C2410UART单元提供3个独立的异步串行通信接口 皆可工作于中断和DMA模式 使用系统时钟最高波特率达230 4kb s 如果使用外部设备提供的时钟 可以达到更高的速率 每一个UART单元包含一个16字节的FIFO发送缓冲器和一个16字节的FIFO接收缓冲器 用于数据的接收和发送 S3C2410XUART支持可编程波特率 红外发送 接收 只UART2 1个或2个停止位 5位 6位 7位 8位数据宽度和奇偶校验 6 1 2波特率的产生 波特率由一个专用的UART波特率分频寄存器 UBRDIVn n 0 2 控制 计算公式如下UBRDIVn int ULK 波特率 16 1或者UBRDIVn int PLK 波特率 16 1 6 1 3UART通信操作 下面简略介绍UART操作 关于数据发送 数据接收 中断产生 波特率产生 查询检测模式 红外模式和自动流控制的详细介绍 请参照相关教材和数据手册 发送数据帧是可编程的 一个数据帧包含1个起始位 5 8个数据位 1个可选的奇偶校验位和1 2位停止位 停止位位数通过行控制寄存器ULCONn配置 6 2UART的控制寄存器 6 2 1UART线路控制寄存器ULCONn该寄存器的位6决定是否使用红外模式 位5 位4和位3决定校验方式 位2决定停止位长度 位1和位0决定每帧的数据位数 具体如表6 1所示 6 2 2UART控制寄存器UCONn该寄存器决定UART的各种模式 见表6 2所示 6 2 3UARTFIFO控制寄存器UFCONn S3C2410UART每通道有16个字节的先入先出 FIFO 接收缓冲器和16个字节的先入先出 FIFO 发送缓冲器 如果在程序中使用它们 必须要对UARTFIFO控制寄存器UFCONn进行定义 UFCONn的配置如表6 3所示 6 2 4UART调制解调器控制寄存器UMCONn n 0或1 6 2 5发送寄存器UTXH和接收寄存器URXH 这两个寄存器存放发送和接收的数据 当然只有1字节 8位数据 需要注意的是 在发生溢出错误时 接收的数据必须被读出来 否则会引发下次溢出错误 6 2 6UARTTX RX状态寄存器UTRSTATUARTTX RX状态寄存器UTRSTAT配置见表6 5 6 3UART通信程序例子 UART通信电平可有三种形式 TTL电平 RS232或RS485 嵌入式控制系统大多具有小 巧 轻 灵 薄的特点 许多传感器和S3C2410一体或距离很近 没有干扰 例如多参数监护仪等医疗设备 为简化电路 可采用TTL电平直接与S3C2410相连 如果通信距离在几十米左右并是点对点通信可采用RS232接口 否则只能采用RS485通信 在工程上UART通信大多采用三线制 发送连对方接收 接收连对方发送 双方共地 本节在介绍RS232接口电路的同时给出了一个UART通信程序实例 6 3 1RS232接口电路 本实验平台的电路中 UART0与S3C2410连接电路如图6 1所示 UART0只采用两根接线RXD0和TXD0 RS232只能实现点对点通信 且两点要共地 因此只能进行简单的数据传输及接收 UART0采用美信332电平转换器 MAX332 做电平转换 图6 1UART0X与S3C2410的连接电路图 6 3 2UART实验程序 头文件uart0 h defineTX INTTYPE1 1 发送中断电平触发标志 defineRX INTTYPE1 1 接收中断电平触发标志externvoidUart Port Set void 保存本程序使用的端口原状态externvoidUart Port Return void 恢复本程序使用的端口原状态externvoidUart Uclk En int int 串行通信使用UCLKexternvoidUart Pclk En int int 串行通信使用PCLKvoidTest Uart0 Int void UART0初始化 UART实验程序 include include include 2410addr h include 2410lib h include def h include uart0 h voidUart Port Set void voidUart Port Return void void irqUart0 TxInt void 发送中断服务程序void irqUart0 RxIntOrErr void 接收字符和错误代码中断服务程序void sub Uart0 RxInt void 接收字符子中断服务程序 从上面程序分出volatileU32save rGPHCON save rGPHDAT save rGPHUP volatileU32save ULCON0 save UCON0 save UFCON0 save UMCON0 定义一些变量 做临时保存端口数据和状态的缓冲区 通信结束 端口数据和状态要恢复 VolatileU32isTxintisRxint 定义二个变量 分别做发送和接收中断结束与否标志volatilestaticchar uart0TxStr UART0发送字串地址volatilestaticchar uart0RxStr UART0接收字串地址 保存UART实验使用的端口和寄存器 voidUart Port 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 InitializeUART0 port 恢复UART实验使用的端口和寄存器 voidUart Port Return void PopUARTGPIOportconfigurationrGPHCON save rGPHCON rGPHDAT save rGPHDAT rGPHUP save rGPHUP PopUartcontrolregistersrULCON0 save ULCON0 rUCON0 save UCON0 rUFCON0 save UFCON0 rUMCON0 save UMCON0 UART通信使用UCLK做波特率发生器 voidUart Uclk En intch intbaud intch baud Uart Printf nSelectUARTchannel 0 UART0 1 UART1 2 UART2 n ch Uart GetIntNum 从键盘读通道号Uart Printf nSelectbaudrate n baud Uart GetIntNum 从键盘读波特率if ch 0 选UART0Uart Select 0 rUCON0 0 x400 选UCLKrUBRDIV0 int UCLK 16 baud 1 波特率因子寄存器Uart Printf UCLKisenabledbyUART0 n for i 0 i 100 i UART实验使用PCLK voidUart Pclk En intch intbaud intch baud Uart Printf nSelectUARTchannel 0 UART0 1 UART1 2 UART2 n ch Uart GetIntNum Uart Printf nSelectbaudrate n baud Uart GetIntNum if ch 0 选UART0Uart Select 0 rUCON0 屏蔽接收和发送以及错误子中断 if uart0TxStr 0 判发送字串结束标志 如果没结束 WrUTXH0 uart0TxStr 向发送缓冲器送下一字节ClearPending BIT UART0 清中断挂起寄存器rSUBSRCPND BIT SUB TXD0 清子中断挂起寄存器rINTSUBMSK UART0子中断屏蔽 UART0接收字符和错误代码中断服务程序 void irqUart0 RxIntOrErr void rINTSUBMSK BIT SUB RXD0 BIT SUB TXD0 BIT SUB ERR0 屏蔽接收和发送以及错误子中断 if rSUBSRCPND 打开屏蔽 接收下一数据 UART0正常中断接收子程序 void sub Uart0 RxInt void if RdURXH0 r 判接收缓冲器字符是否结束标志 不是 正常接收 Uart Printf c RdURXH0 在终端上显示接收到的字符 uart0RxStr char RdURXH0 字符放接收缓冲区 else 如结束 isRxInt 0 置接收结束标志 uart0RxStr 0 接收字串后加一个 0 Uart Printf n UART0接收中断错误处理 void sub Uart0 RxErrInt void 根据错误号处理switch rUERSTAT0 toclearandcheckthestatusofregisterbits case 1 Uart Printf Overrunerror n 超时错break case 2 Uart Printf Parityerror n 效验错break case 4 Uart Printf Frameerror n 格式错break case 8 Uart Printf Breakedetect n 中断错break default break UART0发送和接收中断实验 voidTest Uart0 Int void Uart Port Set 保存I O口状态和数据 实验结束恢复Uart Select 0 选UART0 UART0发送中断实验isTxInt 1 置发送中断标志 中断结束 isTxInt 0 uart0TxStr ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 UART0Txinterrupttestisgood r n 发送的实验字串Uart Printf Uartchannel0TxInterruptTest n 在终端上提示pISR UART0 unsigned Uart0 TxInt 设中断向量 即发送中断服务程序入口rULCON0 0 6 0 3 0 2 3 正常发送 无效验 一个停止位 8个数据位选UCLK rUCON0 从此处进入中断 中断结束又返回这里等下次中断 直到发送结束 isTxInt 0跳出 在超级终端上可看到发给它的字符 UART0接收中断实验 UART0接收从键盘上输入的字符 按ENTER键接收结束isRxInt 1 接收中断标志 接收结束 isRxInt 0uart0RxStr char UARTBUFFER 接收字串缓冲区首地址设定Uart Printf n Uartchannel0RxInterruptTest n 提示Uart Printf AftertypingENTERkey youwillseethecharacterswhichwastypedbyyou Uart Printf nToquit pressENTERkey n Uart TxEmpty 0 等 直到发送缓冲器空 等上面发送的最后一个字符被对方取走 才进行接收实验 pISR UART0 unsigned Uart0 RxIntOrErr 设中断向量 即接收中断服务程序入口rULCON0 0 6 0 3 0 2 3 正常接收 无效验 一个停止位 8个数据位rUCON0 选时钟 发送 接收中断 ClearPending BIT UART0 清UART0中断挂起rINTMSK BIT UART0 中断打开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 s n char UARTBUFFER 打印接收的字符串 实际就是在终端上显示 Uart Port Return 恢复口状态 UART初始化 voidUart Init intpclk intbaud inti staticintwhichUart 0 if pclk 0 pclk PCLK UART0rULCON0 0 x3 正常模式 无效验 1个停止位 8个数据位rUCON0 0 x245 10 9 8 7 6 5 4 3 2 1 0 ClockSel TxInt RxInt RxTimeOu

温馨提示

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

评论

0/150

提交评论