查看: 4328|回復: 0
打印 上一主題 下一主題

NXP LPC1768寶馬開(kāi)發(fā)板 第一章GPIO實(shí)驗

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2015-1-15 15:23:38 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
關(guān)鍵詞: NXP , LPC1768 , ARM , 開(kāi)發(fā)板
第一章    NXP LPC1768—— GPIO

開(kāi)發(fā)環(huán)境:集成開(kāi)發(fā)環(huán)境μVision4 IDE版本4.60.0.0
主機系統:Microsoft Windows XP
開(kāi)發(fā)平臺:旺寶NXP LPC1768開(kāi)發(fā)板

1.1 GPIO簡(jiǎn)介
1.2 硬件描述
1.3 程序說(shuō)明
1.4 實(shí)驗現象

1、GPIO
GPIOGeneral Purpose I/O Ports)意思為通用輸入/輸出端口,通俗地說(shuō),就是一些引腳,可以通過(guò)它們輸出高低電平或者通過(guò)它們讀出引腳的狀態(tài)-是高電平或是低電平。GPIO 口是個(gè)比較重要的概念,用戶(hù)可以通過(guò) GPIO 口和硬件進(jìn)行數據交互(UART),控制硬件工作(LED、蜂鳴器等),讀取硬件的工作狀態(tài)信號(如中斷信號)等。因此,GPIO 口的使用非常廣泛。
2、硬件描述:
      
  

想要控制LED,當然是通過(guò)控制LPC1768  I/0的高低電平來(lái)實(shí)現,在LPC1768上,I/O引腳可以被軟件設置成不同的功能,如輸入或輸出,所以被稱(chēng)為GPIO (General-purpose I/O)。在本實(shí)驗中,主要是用GPIO來(lái)控制開(kāi)發(fā)板上的LED,實(shí)現跑馬燈的效果。注意要短接JP8。
3、程序說(shuō)明:
我們先來(lái)簡(jiǎn)單了解一下系統時(shí)鐘分頻倍頻。假如我們要得到PLL0=400MHz的時(shí)鐘,計算公式如下:
        FCCO=2×M×FIN/ N
PLL輸入和設定必須滿(mǎn)足下面的條件:
1) FIN的范圍:32KHz~50MHz;
2) FCCO的范圍:275MHz~550MHz。
可通過(guò)求解PLL等式來(lái)得到其它的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倍頻器和分頻器值,我們往這個(gè)寄存器寫(xiě)值來(lái)實(shí)現分頻與倍頻

上面我們算得M=100,N=6,把他們分別減一,換算成16進(jìn)制
      #define PLL0CFG_Val           0x00050063

接下來(lái)就可以配置我們的CPU時(shí)鐘了,PLL0輸出時(shí)鐘必須要經(jīng)過(guò)分頻才能
提供給CPU使用,PLL0輸出的分頻由CCLKCFG寄存器進(jìn)行控制。當PLL0被旁路時(shí),可通過(guò)1分頻。當PLL0正在運行時(shí),輸出必須經(jīng)過(guò)分頻以使CPU時(shí)鐘頻率(CCLK)工作在限定的范圍內?墒褂靡粋(gè)8位分頻器進(jìn)行選擇,包括降低CPU的操作頻率來(lái)暫時(shí)節省功耗而無(wú)需關(guān)閉PLL0。

  CCLKPLL0輸出信號中得到,通過(guò)CCLKSEL+1分頻。當CCLKSEL1時(shí),CCLK的頻率是PLL0輸出頻率的一半;當CCLKSEL3時(shí),CCLK的頻率是PLL0輸出頻率的四分之一,如此類(lèi)推。這里我們把它設置成
#define CCLKCFG_Val           0x00000007
CCLK的頻率 = PLL0輸出頻率的八分之一 =50MHz

現在我們一步一步來(lái)點(diǎn)亮LED。

在端口配置的函數里面,有兩個(gè)重要寄存器,FIODIRFIOPIN。


我們從這張表可以看到,要把某個(gè)端口方向設置成輸出,只需把FIODIR這個(gè)寄存器的某個(gè)位寫(xiě)1即可。根據手冊說(shuō)明,除了32位長(cháng)和僅可以進(jìn)行字訪(fǎng)問(wèn)的FIODIR寄存器外,每個(gè)高速GPIO口也可通過(guò)一些字節和半字訪(fǎng)問(wèn)的寄存器來(lái)控制。這些額外的寄存器除了提供與FIODIR寄存器相同的功能外,還可以更容易、更高速地訪(fǎng)問(wèn)物理端口引腳。比如LPC_GPIO2->FIODIR  = 0x000000ff;  我們也可以寫(xiě)成LPC_GPIO2->FIODIR0  = 0xff;
  
   設置好方向之后,即可按我們自己的要求輸出高低電平來(lái)實(shí)現我們當初設計的功能。
   細心的你一定發(fā)現了,在void  LED_config(void)這個(gè)函數里,有配置GPIO0的語(yǔ)句。奇怪!LED沒(méi)有接在GPIO0IO口啊。通過(guò)計算我們可以知道這兩句配置的是P0.21這個(gè)IO口。打開(kāi)我們的原理圖,可以看到P0.21接到了SN74ALVC164245DIR這個(gè)端口,74ALVC164245 雙電源供電,實(shí)現3.3V5V電平轉換,寶馬1768的板子沒(méi)有用5VIO,所以電源都接3v3,其中DIR控制傳輸方向,DIR高電平 A to B ;DIR低電平 B TO A
  
我們把DIR拉高,數據的傳輸方向是A to B,目的是防止數據被意外干擾。
   

4、實(shí)驗現象:

把程序下載到板子上,程序運行后,可以看到LED從左到右,然后從右到左流動(dòng),流到最左邊時(shí)LED全亮,最后全滅,以此循環(huán)。

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




您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页