- 前言
- 一、UART原理及UART部件使用方法
- UART原理说明
- 数据的传输流程
- S3C2410 UART特性
- UART的使用
- 1.将所涉及的UART通道管脚设为UART功能
- 2.UBRDIVn寄存器:设置波特率
- 3.ULCONn寄存器:设置传输格式
- 4.UCONn寄存器
- 5.UFCONn寄存器、UFSTATn寄存器
- 6.UMCONn寄存器、UMSTATn寄存器
- 7.UTRSTATn寄存器
- 8.UERSTATn寄存器
- 9.UTXHn寄存器
- 10.URXHn寄存器
- 二、UART *** 作实例
- 代码思路
- 代码分析
- UART初始化
- 总结
前言
了解UART的原理
掌握S3C2410中的UART的使用
一、UART原理及UART部件使用方法 UART原理说明
通用异步收发器简称UART,它用来传输串行数据
发送数据时:CPU将并行数据写入UART,UART按照一定的格式在一根电线上串行发出;
接收数据时:UART检测另一根电线上的信号,将串行收集放在缓冲区中,CPU即可读取UART获取这些数据。UART之间以全双工方式进行数据的传输,最精简的连接方法只有3根电线;TxD用于发送数据,RxD用于接收数据,Gnd用于双方提供参考电平,连接图如下:
UART使用标准的TTL/CMOS逻辑电平来表示数据,高电平表示1,低电平表示0.但是为了增加抗干扰性,提高传输长度,通常将TTL/COMS逻辑电平转换为RS-232逻辑电平,3~12V为0,-3 ~-12V表示1.(电气规范)
TxD、RxD数据线以“位”为最小单位传输数据。帧由具有完整意义的,不可分割的若干组成,它包含开始位,数据位,检验位(需要的话),停止位。发送数据之前,UART之间要约定好数据的传输速率(即每位所占据的时间,其倒数称为比特率)、数据的传输格式(即有多少个数据位,是否使用检验位,是奇校验还是偶校验,有多少个停止位)。
数据的传输流程- 平时数据线处于“空闭状态”(1状态)
- 当要发送数据时,UART改变TxD数据线状态(变为0状态)并维持一位的时间,这样接收方检测到开始位后,再等待1.5位的时间就开始一位一位地检测数据线地状态得到所传输地数据。
- UART一帧中可以有5,6,7或8位的数据,发送方一位一位的改变数据线的状态将它们发出去,首先发送最低位
- 如果使用检验功能,UART在发送完数据位后,还要发送1个校验位。有两种校验方法:奇校验,偶校验——数据位连同校验位中,“1”的个数为奇数还是偶数
- 最后发送停止位,数据线恢复到空闭状态。停止位的长度有3种,1,1.5,2.
如下图,演示了UART使用7位数据位,偶校验,2个停止位的格式传输字符’A’时对应的两种电气规范:
S3C2410的UART功能,有3个独立的通道,每个通道都可以工作于中断模式或DMA模式,即UART可以发出中断或则DMA请求以便UART、CPU间传输数据。UART由波特率发生器,发送器,接收器和控制逻辑组成。
UART的每个通道都有16字节的发送FIFO和16字节的接收FIFO.
发送数据时,CPU先将数据写入发送FIFO种,然后UART会自动将FIFO中的数据复制到“发送移位寄存器”中,发送移位寄存器将数据一位一位地发送到TxDn数据线上。
接收数据时,“接收移位寄存器”将RxDn数据线上地数据一位一位接收进来,然后复制到接收FIFO中,CPU即可从中读取数据。
在使用UART之前需要设置波特率,传输格式(有多少个数据位,停止位,校验位,奇校验还是偶检验,是否使用流控制);对于S3C2410,还要选择所涉及管脚为UART功能,选择UART通道的工作模式为中断或DMA模式。设置好之后,往某个寄存器写入数据即可发送,读取某个寄存器即可得到接收到的数据。可以通过查询状态寄存器或设置中断来获知数据是否发送完毕,是否已经接收到数据。
1.将所涉及的UART通道管脚设为UART功能设置GPHCON寄存器将GPH2、GPH3引脚功能设为TxD0,RxD0.
2.UBRDIVn寄存器:设置波特率 3.ULCONn寄存器:设置传输格式数据位宽,停止位宽,校验模式,红外模式
4.UCONn寄存器用于选择UART时钟源、设置UART中断方式等。
接收模式(中断,DMA,禁止),发送方式(禁止,中断,DMA),自环模式(内部相连,自发自收)、接受错误状态中断使能、接收超时使能、接收中断方式、发送中断方式、时钟选择。
作用是设置是否使用FIFO,设置FIFO地触发阙值。读取UFSTATn寄存器可以知道FIFO是否已满,其中数据有多少个。
6.UMCONn寄存器、UMSTATn寄存器 7.UTRSTATn寄存器表明数据是否已经发送完毕,是否接收到数据。
用于流量控制
用来表示各种错误是否发生 0-4分别表示溢出错误,校验错误,帧错误,beak信号
9.UTXHn寄存器CPU将数据写入这个寄存器,UART会将它保存到缓冲区,并且自动发送出去
10.URXHn寄存器当UART接收到数据时,CPU读取这个寄存器,即可获得数据
二、UART *** 作实例 代码思路首先设置MPLL提高系统时钟,令PCLK为50MHz,UART选择PCLK作为时钟源。将代码复制到SDRAM中,调用main函数。重点:(UART0的初始化,收发数据)
代码分析MPLL启动这一段,大家就自己阅读书籍,不太好拍
UART初始化uart0_init函数
字符发送函数
字符接收函数
主函数
很想来一把实际的 *** 作,但是没有这个板子,同时这本书也出的比较久了,很多的 *** 作比较旧了,如果现在去配置这些环境比较费时间。还是学习好原理以后,咱们再做具体的项目来当作练习。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)