和你一起学ARM系列活动之七

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

本版积分规则

3

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部