导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→NXP LPC1768宝马开发板第一章GPIO实验

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

   旺宝电子 
旺宝电子发表的帖子 

 NXP LPC1768宝马开发板第一章GPIO实验
[fly]第一章    NXP LPC1768—— GPIO
开发环境:集成开发环境μVision4 IDE版本4.60.0.0
主机系统:Microsoft Windows XP
开发平台:旺宝NXP LPC1768开发板

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

1、GPIO:
GPIO(General 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=12,FCCO=400。由此可计算M=100,N=6;PLL0CFG寄存器包含PLL0倍频器和分频器值,我们往这个寄存器写值来实现分频与倍频
 图片2.jpg
上面我们算得M=100,N=6,把他们分别减一,换算成16进制
      #define PLL0CFG_Val           0x00050063
接下来就可以配置我们的CPU时钟了,PLL0输出时钟必须要经过分频才能
提供给CPU使用,PLL0输出的分频由CCLKCFG寄存器进行控制。当PLL0被旁路时,可通过1分频。当PLL0正在运行时,输出必须经过分频以使CPU时钟频率(CCLK)工作在限定的范围内。可使用一个8位分频器进行选择,包括降低CPU的操作频率来暂时节省功耗而无需关闭PLL0。
 图片3.jpg
  CCLK从PLL0输出信号中得到,通过CCLKSEL+1分频。当CCLKSEL=1时,CCLK的频率是PLL0输出频率的一半;当CCLKSEL=3时,CCLK的频率是PLL0输出频率的四分之一,如此类推。这里我们把它设置成
#define CCLKCFG_Val           0x00000007
即CCLK的频率 = PLL0输出频率的八分之一 =50MHz
现在我们一步一步来点亮LED。
 图片4.jpg
在端口配置的函数里面,有两个重要寄存器,FIODIR和FIOPIN。
 图片5.jpg
我们从这张表可以看到,要把某个端口方向设置成输出,只需把FIODIR这个寄存器的某个位写1即可。根据手册说明,除了32位长和仅可以进行字访问的FIODIR寄存器外,每个高速GPIO口也可通过一些字节和半字访问的寄存器来控制。这些额外的寄存器除了提供与FIODIR寄存器相同的功能外,还可以更容易、更高速地访问物理端口引脚。比如LPC_GPIO2->  FIODIR  = 0x000000ff;  我们也可以写成LPC_GPIO2->  FIODIR0  = 0xff;
  
   设置好方向之后,即可按我们自己的要求输出高低电平来实现我们当初设计的功能。
   细心的你一定发现了,在void  LED_config(void)这个函数里,有配置GPIO0的语句。奇怪啊!LED没有接在GPIO0的IO口啊。通过计算我们可以知道这两句配置的是P0.21这个IO口。打开我们的原理图,可以看到P0.21接到了SN74ALVC164245的DIR这个端口,74ALVC164245是 双电源供电,实现3.3V和5V电平转换,宝马1768的板子没有用5V的IO,所以电源都接3v3,其中DIR控制传输方向,DIR高电平 A to B ;DIR低电平 B TO A
  
我们把DIR拉高,数据的传输方向是A to B,目的是防止数据被意外干扰。
     图片6.jpg
4、实验现象:
把程序下载到板子上,程序运行后,可以看到LED从左到右,然后从右到左流动,流到最左边时LED全亮,最后全灭,以此循环。

此主题相关图片如下:
按此在新窗口浏览图片
此主题相关图片如下:
按此在新窗口浏览图片
此主题相关图片如下:
按此在新窗口浏览图片
此主题相关图片如下:
按此在新窗口浏览图片
此主题相关图片如下:
按此在新窗口浏览图片
此主题相关图片如下:
按此在新窗口浏览图片
此主题相关图片如下:
按此在新窗口浏览图片

发表时间:2015年1月14日14:46:24

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:盈钰emWin 例子分享[原创]用来记录笔者学习 emWin的过程,主要目的是方
[下一篇帖子]:emWin 学习手记emWin 学习手记下载链接: http://pan