查看: 3887|回复: 0

NXP LPC1768宝马开发板 第一章GPIO实验

[复制链接]
发表于 2015-1-15 15:23:38 | 显示全部楼层 |阅读模式
关键词: NXP , LPC1768 , ARM , 开发板
第一章    NXP LPC1768—— GPIO

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

1.1 GPIO简介
1.2 硬件描述
1.3 程序说明
1.4 实验现象

1GPIO
GPIOGeneral Purpose I/O Ports)意思为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读出引脚的状态-是高电平或是低电平。GPIO 口是个比较重要的概念,用户可以通过 GPIO 口和硬件进行数据交互(UART),控制硬件工作(LED、蜂鸣器等),读取硬件的工作状态信号(如中断信号)等。因此,GPIO 口的使用非常广泛。
2硬件描述:
       图片1.jpg
  

想要控制LED,当然是通过控制LPC1768  I/0的高低电平来实现,在LPC1768上,I/O引脚可以被软件设置成不同的功能,如输入或输出,所以被称为GPIO (General-purpose I/O)。在本实验中,主要是用GPIO来控制开发板上的LED,实现跑马灯的效果。注意要短接JP8
3、程序说明:
我们先来简单了解一下系统时钟分频倍频。假如我们要得到PLL0=400MHz的时钟,计算公式如下:
        FCCO=2×M×FIN/ N
PLL输入和设定必须满足下面的条件:
1) FIN的范围:32KHz~50MHz
2) FCCO的范围:275MHz~550MHz
可通过求解PLL等式来得到其它的PLL参数:
M =FCCO×N/2×FIN
N =2×M×FIN/ FCCO
FIN=FCCO×N/2×M
这里FIN=12FCCO=400。由此可计算M=100N=6PLL0CFG寄存器包含PLL0倍频器和分频器值,我们往这个寄存器写值来实现分频与倍频
图片2.jpg

上面我们算得M=100N=6,把他们分别减一,换算成16进制
      #define PLL0CFG_Val           0x00050063

接下来就可以配置我们的CPU时钟了,PLL0输出时钟必须要经过分频才能
提供给CPU使用,PLL0输出的分频由CCLKCFG寄存器进行控制。当PLL0被旁路时,可通过1分频。当PLL0正在运行时,输出必须经过分频以使CPU时钟频率(CCLK)工作在限定的范围内。可使用一个8位分频器进行选择,包括降低CPU的操作频率来暂时节省功耗而无需关闭PLL0
图片3.jpg

  CCLKPLL0输出信号中得到,通过CCLKSEL+1分频。当CCLKSEL1时,CCLK的频率是PLL0输出频率的一半;当CCLKSEL3时,CCLK的频率是PLL0输出频率的四分之一,如此类推。这里我们把它设置成
#define CCLKCFG_Val           0x00000007
CCLK的频率 = PLL0输出频率的八分之一 =50MHz

现在我们一步一步来点亮LED
图片4.jpg

在端口配置的函数里面,有两个重要寄存器,FIODIRFIOPIN

图片5.jpg

我们从这张表可以看到,要把某个端口方向设置成输出,只需把FIODIR这个寄存器的某个位写1即可。根据手册说明,除了32位长和仅可以进行字访问的FIODIR寄存器外,每个高速GPIO口也可通过一些字节和半字访问的寄存器来控制。这些额外的寄存器除了提供与FIODIR寄存器相同的功能外,还可以更容易、更高速地访问物理端口引脚。比如LPC_GPIO2->FIODIR  = 0x000000ff;  我们也可以写成LPC_GPIO2->FIODIR0  = 0xff;
  
   设置好方向之后,即可按我们自己的要求输出高低电平来实现我们当初设计的功能。
   细心的你一定发现了,在void  LED_config(void)这个函数里,有配置GPIO0的语句。奇怪啊!LED没有接在GPIO0IO口啊。通过计算我们可以知道这两句配置的是P0.21这个IO口。打开我们的原理图,可以看到P0.21接到了SN74ALVC164245DIR这个端口,74ALVC164245 双电源供电,实现3.3V5V电平转换,宝马1768的板子没有用5VIO,所以电源都接3v3,其中DIR控制传输方向,DIR高电平 A to B ;DIR低电平 B TO A
  
我们把DIR拉高,数据的传输方向是A to B,目的是防止数据被意外干扰。
    图片6.jpg

4、实验现象:

把程序下载到板子上,程序运行后,可以看到LED从左到右,然后从右到左流动,流到最左边时LED全亮,最后全灭,以此循环。

例程附件
【01】宝马1768_GPIO(2014.05.10).rar (68.19 KB)




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表