读书人

电脑冲冲冲修炼ARM11:UART

发布时间: 2013-02-03 12:33:31 作者: rapoo

计算机冲冲冲——修炼ARM11:UART
串口又叫UART,通过异步实现(没有时钟,有时钟就是同步)
串口一般为调试位
串口的其中3条线,其功能是:发送、接收、接地线
发送的数据是由开始位,数据位,停止位组成。开始停止均为高电平


PC端先检测发送线是否为低电平,为低电平表示对方要发数据
等待一段时间,然后开始检测数据,一般检测位的中间


每一位占据多长时间:波特率(一秒钟之内要传输多少位),为115200
开始位、数据位、停止位各占多少: 校验位为空,开始位没有设置,默认为1、数据位:8、停止位:1




把数据写到一个缓冲器里面,硬件会自动发送数据
读也一样。然后通过读寄存器获取数据


先初始化串口,设置一些串口的参数,如波特率,数据位,停止位...
GPA设置为串口的输入输出,设置为0010(专门给UART使用的)GPA0接收,GPA1发送


设置串口0,这设置ULCON0


红外模式:正常则设置0
校验位:不使用,设置为000
停止位: 0为1个
数据位:8


电脑冲冲冲——修炼ARM11:UART

电脑冲冲冲——修炼ARM11:UART

ULCON0 = 0x3 8n1 数据位8 无校验n 停止位1

电脑冲冲冲——修炼ARM11:UART

电脑冲冲冲——修炼ARM11:UART

UCON0设置
先设置时钟源,使用PCLK
回环模式:内部接收和发送连在一起,测试用
设置发送和接收模式

电脑冲冲冲——修炼ARM11:UART

电脑冲冲冲——修炼ARM11:UART

可以使用Buffer,因为串口比较慢,最好用缓存区

UFCON0最后一位使能,则使用

电脑冲冲冲——修炼ARM11:UART

UMCON0流量控制,先设置为0

电脑冲冲冲——修炼ARM11:UART
串口波特率配置寄存器UBRDIV0
PCLK = 66.5MHz

b = 115200

UBRDIVO的计算公式:

Div_val = 66.5 * 10^6 / 115200 /16 - 1 = 35.08 = UBRDIVO + VDIVSLOTO的1个数 / 16 = 35 + 0.8
得1的个数为1


电脑冲冲冲——修炼ARM11:UART

读数据函数:

读取UFSTAT0最后三位while(UFSTATO & 0x7f == 0);

如果RX FIFO为空,等待

6位为1则缓存器满,
有数据则读取URXH0,即返回

电脑冲冲冲——修炼ARM11:UART
写数据函数
读取while(UFSTATO & (1 << 14)); 如果TX FIFO满,等待
把数据送到UTXHO

注意URXHO、UTXHO为unsigned char因为数据位八位


下面把代码贴出来:

读书人网 >移动开发

热点推荐