查看: 4512|回复: 0

NXP LPC1768宝马开发板 第四章UART

[复制链接]

该用户从未签到

发表于 2015-1-20 09:53:50 | 显示全部楼层 |阅读模式
分享到:
本帖最后由 一座城 于 2015-1-20 09:57 编辑

第四章    宝马1768—— UART

开发环境:集成开发环境μVision4 IDE版本4.60.0.0
主机系统:Microsoft Windows XP
开发平台:旺宝NXP LPC1768开发板



4.1 UART
4.2 硬件描述
4.3 程序说明
4.4 实验现象


1UART
    说到串口,相信大家都不会感到陌生了。UART英文全称为:Universal Asynchronous Receiver/Transmitter,即通用异步收发传输器。几乎任何一款单片机上都有串口,LPC17xx系列多达4UART,非常适合需要多个UART的应用场合。
2、硬件描述:
本节实验用的是UART0UART2
图片1.png
3、程序说明:
初始化串口(UART)
从原理图我们可以看到
图片2.png
RXD0P0.3AD0.6复用
TXD0P0.2AD0.7复用
这两根引脚默认的情况下是作P0.2P0.3,并且是输入状态。
我们首先要把这两根引脚设置成RXDTXD
  LPC_PINCON->PINSEL0 |= (1 << 4);     //P0.2设置成TXD0
  LPC_PINCON->PINSEL0 |= (1 << 6);     //P0.3设置成RXD0
图片3.png
    配置完引脚后,就该操纵UART的寄存器了。首先,我们设置串口通信的传输格式,最常用的是8位数据,1个停止位,无奇偶校验。格式设置在LCR寄存器里面。
图片4.png
    除了格式设置外,LCRBit7还控制着能否对除数锁存器进行访问。(除数锁存器是设置波特率要用到的除数)
根据我们的要求:
//8个数据位,1个停止位,无奇偶校验
LPC_UART0->LCR  = 0x83;   
设置完数据传输格式,再设置波特率
UART0/2/3波特率的计算(n =0/2/3):
ø 图片5.png


小数分频寄存器(FDR)
图片6.png
有上图寄存器的值可知,在默认情况下的波特率为:
    图片7.png
    在一般情况下,我们不必要用小数分频器,只需确定除数锁存器的值就可以设置波特率了。在应用的时候,我们要求在一定的波特率下通信,所以波特率是已知的,求除数锁存器usFdiv的值。

usFdiv = (FPCLK / 16) / file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps15C.tmp.pngfile:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ksohtml\wps15D.tmp.png

LPC_UART0->DLM  = usFdiv / 256;                                 // 写除数锁存器高位
LPC_UART0->DLL  = usFdiv % 256;                          // 写除数锁存器低位
设置好了波特率,为了稳定,我们不希望程序意外修改这个值,所以我们把除数锁存器的允许访问位bit70。根据官方数据手册,访问THR(发送保持寄存器)RBR(接收器缓冲寄存器)LCR中的除数锁存器访问位bit7(DLAB)都必须为0
LPC_UART0->LCR  = 0x03;                 // 禁止访问除数锁存器


    LPC1768PC通信,数据是在RxFIFO TxFIFO进出的,其默认情况下是关闭的,我们把它打开。


  FIFO控制寄存器(FCR)
图片8.png

LPC_UART0->FCR  = 0x07;          // 允许FIFO、清空UART0 RxFIFO TxFIFO
到了这里,我们的初始化就完成了,接下来就可以发送和接收数据。
LPC1768是怎样知道数据有没有发送出去,或者有没有接收到数据呢?通过查阅数据手册知道,它是通过读“发送接收状态寄存器(LSR)”来判断的。

LSRbit0可以知道有没有数据接收到     0为空,1为接收到数据   
               while (!(LPC_UART0->LSR & 0x01));

LSRbit5可以知道有没有发送完数据    0有数据,1为空
           while (!(LPC_UART0->LSR & 0x20));


发送数据到PC:
图片9.png

PC接收数据:
图片10.png

图片11.png




4、实验现象:
打开“串口调试助手”,设置好波特率115200,选择和电脑对应的COM口。
图片12.png

例程附件:
【04】宝马1768_UART(2014.05.10).rar (224.59 KB, 下载次数: 73)
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-11-22 13:47 , Processed in 0.121198 second(s), 16 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.