实验7 UART串行通信基本方式实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

UART单字符数据串行通信方式相关编程结构
UART单字符数据串行通信方式下的相关编程结构:
异 步 串 口 内 部 总 线 接收缓冲寄存器URXH 线控寄存器ULCON
接收移位寄存器
常规串行输入 RXDn 中断请求信号 INTRQ
控制寄存器UCON
波特率分频器UBRDIV TX/RX状态寄存器UTRSTAT 错误状态寄存器UERSTAT 发送缓冲寄存器UTXH 发送移位寄存器
参考程序内的代码说明
2、清0有关的悬挂寄存器
ldr ldr str ldr ldr str ldr ldr str r0,=pSRCPND r1,=0xffffffff r1,[r0] r0,=pINTPND r1,=0xffffffff r1,[r0] r0,=pSUBSRCPND r1,=0x7ffff r1,[r0] ; ; ; ; ; ; ; ; ; 中断源悬挂寄存器 0=未请求,1=已请求,向对应位写1清0已有的中断请求 清0所有主中断源 中断悬挂寄存器 0=未请求,1=已请求,向对应位写1清除中断请求 清0中断悬挂寄存器所有位 子中断源悬挂寄存器,0~14位有效 0=未请求,1=已请求,向对应位写1清0已有的中断请求 清0所有子中断源
波特率 时钟发 生器
PCLK FCLK/n UEXTCKL
接外设总线
TXDn 常规串行输出
UART单字符数据串行通信方式下的相关编程寄存器
以下是以UART0为例的单字符数据通信方式相关编程寄存器特点:
初始化需要编程设置的寄存器: 线控寄存器ULCON,控制寄存器UCON,波特率分频寄存器UBRDIV 数据收发过程中需要读取的状态寄存器: TX/RX状态寄存器UTRSTAT,(接收)错误状态寄存器UERSTAT 收发数据寄存器: 接收缓冲寄存器URXH,发送缓冲寄存器UTXH
参考程序内的数据区说明
(2)二级向量表(续)
HandleDMA0 HandleDMA1 HandleDMA2 HandleDMA3 HandleMMC HandleSPI0 HandleUART1 HandleNFCON HandleUSBD HandleUSBH HandleIIC HandleUART0 HandleSPI1 HandleRTC HandleADC END # # # # # # # # # # # # # # # 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
4、数据区: 预存的提示信息,数据缓存区,二级中断向量表
参考程序内的数据区说明
数据区定义信息包括:
(1)预存的提示信息及数据缓存区,(2)二级中断向量表
(1)预存的提示信息及数据缓存区
AREA RamData, DATA, READWRITE
string1 DCB 13,10,“-----UART单字符串行通信实验-------” DCB 13,10,“请将UART0与PC串口进行连接,然后启动超级终端程序(115200, 8, N, 1)” DCB 13,10,“从现在开始您从超级中端发送的字符串(回车键结束)将被同时回显至超级终端” DCB 13,10,“注意:本实验采用中断方式接收,查询方式发送数据,其他方式请读者自行实验之。",0 string2 DCB 13,10,"Please input:",0
Y 向UTXH0写字符数据
恢复现场 返回调用点
参考程序总体组成结构
1、数据符号化定义
(1)端口地址及数据符号化定义: (2)存储器数据宽度寄存器BWSCON内各位域需要设置的数据 (3)CPSR中各工作模式的设置位信息 (4)管理模式、IRQ模式及用户模式堆栈指针数据
2、代码区1: 裸机运行环境建立
UART异步串口通信相关程序功能模块
主程序流程框图
开始 裸机板基本功能单元初始化 读取字符数据 进入接收中断处理程序 保存现场信息 读URXH0内字符数据 清0各中断悬挂寄存器 恢复现场 中断返回
查询方式发送子程序
保存现场信息
中断方式接收子程序
中断源判别程序
设置UART0相关功能单元寄存器
设置UART0中断相关寄存器及指针 调用发送子程序发送字符 开启UART0接收中断 UART0接收中断? N Y 检索并进入中断处理程序 返回用户模式 N 查询发送状态位 状态位=1?
参考程序内的代码说明
(Main之前代码因与前章相同不再列出)
1、 初始化串口UART0相关寄存器代码
Main ldr r0,=pGPHCON; GPIO H组控制寄存器 ldr r1,=0x0a0 ; 设置GPH2为串行数据发送端TxD0,GPH3为接收端RxD0, str r1,[r0] ; 其余保留默认值0 ldr r0,=pGPHUP ; GPIO H组上拉电阻寄存器 ldr r1,=0x7f3 ; GPH2和GPH3上拉电阻接通,其余禁止 str r1,[r0] ldr r0,=pINTMOD; 中断模式寄存器设置 ldr r1,=0x0 ; 选择IRQ模式 str r1,[r0] ldr r0,=pULCON0; UART0线控寄存器 ldr r1,=0x3 ; 设置UART0帧格式为:8位有效数据,1位停止位, str r1,[r0] ;无校验,禁止红外 ldr r0,=pUCON0 ; UART0控制寄存器 ldr r1,=0x345 ; 收/发为中断或查询方式,产生接收错误中断, 中断信号为电平形式, str r1,[r0] ; 波特率发生器输入时钟为PCLK(本实验=50MHz),其余取默认值 ldr r0,=pUBRDIV0; 波特率设置寄存器 ldr r1,=0x01a ; UBRDIV0=(PCLK/(115200*16))-1 取整≈26=0x01a str r1,[r0]
DATA_AREA HandleEINT0 HandleEINT1 HandleEINT2 HandleEINT3 HandleEINT4_7 HandleEINT8_23 HandleCAM HandleBATFLT HandleTICK HandleWDT HandleTIMER0 HandleTIMER1 HandleTIMER2 HandleTIMER3 HandleTIMER4 HandleUART2 HandleLCD # # # # # # # # # # # # # # # # # ; 二级向量表起始地址为0x33FF_FF00 4 ; 0x33FF_FF00 = 二级向量表起始地址 4 ; 0x33FF_FF04 二级向量表(每表项4字节) 4 ; 0x33FF_FF08 4 ; 0x33FF_FF0C HandleEINT0 4 ; 0x33FF_FF10 HandleEINT1 4 4 4 4 ; 0x33FF_FF20 4 HandleUART0 4 4 HandleRTC 4 ; 0x33FF_FF30 HandleADC 4 4 4 handleUart0_rx 4 ; 0x33FF_FF40 接收中断子程序
实验电路原理
嵌入式系统异步串行通信广泛采用通过9针/孔D型连接头 连接的三线串行通信方式,包括一对收/发交叉连接的信 号线和一根共用的地线。 这种无联络信号线连接方式需要编程员注意避免出现数 据覆盖现象。
UART 异步串行通信工作方式回顾
由前面内容可知异步串行通信有以下工作方式:
单字符数据收/发 异步串 行通信 数据收 发方式 二进制数据 直接收/发 查询方式
寄存器 ULCON0 UCON0 UTRSTAT0 UERSTAT0 UTXH0 URXH0 UBRDIV0 偏移地址 读写属性 0x50000000 读/ 写 0x50000004 读/ 写 0x50000010 只读 0x50000014 只读 0x50000020(L) 字节写 0x50000023(B) 0x50000024(L)字节读 0x50000027(B) 0x50000028 读/ 写 功能描述 UART0的线控寄存器 UART0控制寄存器 UART0 TX/RX状态寄存器 UART0 错误状态寄存器 UART0发送缓冲寄存器 UART0接收缓冲寄存器 UART0波特率分频寄存器 复位值 0x00 0x00 0x6 0x6 不定 不定 不定
参考程序内的代码说明
3、发送超级终端提示信息
ldr r0,=string1 ldr r1,=0x0 bl uart_puts get_init ldr r0,=string2 ldr r1,=0x0 bl uart_puts ldr r1,=0x0 ; r1=初值为0的发送数据计数器 ;调用发送子程序向PC机输出字符串string2 ; r1=初值为0的接收数据计数器 ; r1=初值为0的发送数据计数器 ; 调用发送子程序向PC机输出字符串string1
实验目的
了解S3C2440处理器UART异步串口编程结构及串行
通信原理。
熟悉S3C2440异步串口UART内相关寄存器的作用。
掌握UART单字符方式下的数据串行通信程序实现方
法。
以单字符收发方式在S3C2440与PC机之间通过异步 串口UART互传数据,发送采用查询方式,接收采用 中断方式。
S3C2440目标板串口在逐个接收PC机发来的字符过程中一方面将字 符存入接收数据缓存区,另一方面又将该字符发送回PC机显示,直 到收到回车符为止。
最后将暂存在接收数据缓存区内收到的全部字符一次全部发送到PC 机显示。 本例只考虑开放UART0接收中断(用子中断源屏蔽寄存器屏蔽其它中 断 )。
(1)代码段定义及异常向量表 (2)用于设置特殊功能寄存器区的13个存储器参数 (3)以下IsrIRQ为中断源判别程序 (4)复位异常处理程序,是开机或复位后首先运行的程序 (5)设置SDRAM存储器参数 (6)初始化可能用到的不同工作模式下的堆栈区 3、代码区2: 主程序 + 字符发送子程序 + 字符接收中断子程序
实验过程描述
本程序实现S3C2440裸机系统与PC机之间的串行通信。
PC机端可以运行Windows下的串口通信工具程序“HyperTerminal” 或者Linux系统下的串口通信工具程序“Minicom”。
本程序开机运行后首先会向PC机发送一些预存的提示信息,提示PC 机在串口通信工具环境下键入字符,之后转入循环等待接收PC机发 送来的字符。 PC机每键入一个字符就会被发送到S3C2440目标板串口,若键入回 车键表示一次传输结束。
; 0x33FF_FF50
; 0x33FF_FF60
; 本实验将要用到的向量单元,具体值由主程序运行过程中填入
单字符数据串行通信方式下所需的初始化程序流程
设:发送采用查询方式,接收采用中断方式。
屏蔽所有中断并设置UART中断为IRQ模式 设置不同工作模式下的堆栈区起始指针 设置GPHCON寄存器确定RXD和TXD引脚 设置ULCON寄存器确定数据帧格式 设置UCON寄存器确定中断查询方式 设置UBRDIV寄存器确定波特率 清0 SRCPND和SUBSRCPND寄存器 提取中断处理程序地址并填入二级向量表 清0 INTMSK和INTSUBMSK寄存器对应位
string3 DCB 13,10," You input:",0
enterKey DCB 13,10,0 dataInput SPACE 1000
注:以上大部分信息将由字符发送子程序发送到PC机超级终端并加以显示
参考程序内的数据区说明
( 2 ) 二级向量表(共预留32个字单元,对应中断源悬挂寄存器内定义的中断源)
中断方式
自动流控方式
DMA方式 中断方式 DMA方式
FIFO多字符数据收/发 FIFO多字符数据收/发 基于MODEM 数据收/发 单字符数据收/发
非自动பைடு நூலகம்控方式
中断方式
查询方式 中断方式
本实验采用了单字符数据收发方式。 单字符收发方式每个通信帧只包含一个字符数据。
可以采用多次数据帧收发实现多字符数据传输(N个字符N个数据帧) 单字符收发方式可以选择查询或中断工作方式。 本实验参考程序发送采用查询方式,接收采用中断方式
相关文档
最新文档