和你一起学ARM系列活动之七 ----串行口实验 这回我们来研究一下一个重要的片内外设串行口。我相信大家都知道口串行口吧,我就不过多介绍它了。闲话少说,我们开始。 LPC2103有两个串行口。UART0和UART1,下面我们以UART0为例,介绍串行口。 管脚连接设置 需要设置IO口连接模块PINSEL0,设成连接到UART0. 请参考活动六的介绍。 PINSEL=0x05; 串行口波特率的设置 LPC2103具有内置的波特率发生器。 我们需要设置波特率分频寄存器(共16位)。U0DLM是高8位,U0DLL是低8位。 分频值 = Fpclk/16/波特率 Fpclk:我们在活动3中介绍过。我们的晶振是11.0592经过PLL的6倍频和VPB的4分频,供给片内外设的时钟是11.0592M*6/4=16.5888MHz 我们计算9600波特率的分频值 = 16588800/16/9600 =108 =0x006c 计算结果 U0DLM=0x00; U0DLL=0x6c;
注:设置分频寄存器时还要将U0LCR的第7位置1 其他重要寄存器介绍
U0IER 中断使能寄存器 = 0x07; U0IER 功能 描述 复位值 第0位 RBR中断使能 接收到数据或接收超时。0:禁止 1:使能 0 第1位 THRE中断使能 发送缓冲为空 0 第2位 Rx线状态中断使能 0
U0THR 发送寄存器。把需要向外发的数据直接赋值给它。 U0RBR 接收寄存器。从这个寄存器中读取接收到的数据。 U0IIR 中断标识寄存器 U0IIR[3:0] 优先级 中断类型 中断源 中断复位 0110 最高 Rx线状态/错误 OE,PE,FE,或BI U0LSR读操作 0100 第二 Rx数据可用 Rx数据可用或FIFO模式下(U0FCR0=1)到达触发点 U0RBR读或UART0 FIFO低于触发值 1100 第二 字符超时指示 Rx FIFO包含至少1个字符并且在一段时间内无字符输入或移出 U0RBR读操作 0010 第三 THRE THRE 发送缓冲为空中断 U0IIR读或写操作 在定时器中断函数中,需要读取此寄存器,用来区分中断的来源。
来自:http://bbs.**/thread-76303-1-1.html
|