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