一、GIPIO介紹
General Purpose Input Output (通用輸入/輸出)簡稱為GPIO,或總線擴展器,人們利用工業標準I2C、SMBus或SPI接口簡化了I/O口的擴展。當微控制器或芯片組沒有足夠的I/O端口,或當系統需要采用遠端串行通信或控制時,GPIO產品能夠提供額外的控制和監視功能。
1.GPIO的優點
低功耗:GPIO具有更低的功率損耗(大約1μA,μC的工作電流則為100μA)。
集成IIC從機接口:GPIO內置IIC從機接口,即使在待機模式下也能夠全速工作。
小封裝:GPIO器件提供最小的封裝尺寸 ― 3mm x 3mm QFN!
低成本:您不用為沒有使用的功能買單。
快速上市:不需要編寫額外的代碼、文檔,不需要任何維護工作。
可預先確定響應時間:縮短或確定外部事件與中斷之間的響應時間。
2.GPIO的寄存器
GPxCON 寄存器
用于配置引腳功能。 PORT A 與 PORT B~PORT H/J 在功能選擇上有所不同,GPACON 中每一位對應一根引腳,共 23 個引腳。當某位被設為 0 時候,相應引腳為 輸出引腳。此時我們可以在GPADAT 中相應的寫入 1或者 0 來讓此引腳輸出高電平或者低電平;當某位被設為1時,相應引腳為地址線或用于地址控制,此時GPADATA無用。
一般而言 GPACON 通常被設為 1 ,以便訪問外部器件。
PORT B~PORT H/J在寄存器操作方面完全相同,GPxCON 中每兩位控制一根引腳,00 輸入
01 輸出
10 特殊功能
11 保留不用
GPxDAT 寄存器
GPxDAT用于讀寫引腳,當引腳被設為輸入時候,讀此寄存器可知道相應引腳的電平狀態高還是低,當引腳被設為輸出時候,寫此寄存器的位,可令引腳輸出高電平還是低電平。GPxUP寄存器
GPxUP寄存器某位為1時,相應管腳沒有內部上拉電阻;為 0 時候 相應管腳有內部上拉電阻。
上拉電阻作用在于,當GPIO 引腳處于第三種狀態時候,既不是輸出高電平,也不是輸出低電平。而是呈現高阻態,相當于沒有接芯片。它的電平狀態由上下拉電阻決定。
二、控制LED實例
1.查看硬件原理圖
2.查看數據手冊
在三星公司提供的DataSheet手冊中找到介紹GPIO的章節
3.確定關鍵定義
GPJ0CON寄存器
寄存器地址:0xE0200240
要控制的位數:[15:12]
要設置的二進制數據:0b0001GPJ0PUD寄存器
寄存器地址:0xE0200248
要控制的位數:[7:6]
要設置的二進制數據:0b00GPJ0DAT寄存器
寄存器地址:0xE0200244
要控制的位數:[3]
要設置的二進制數據:0b1
3.確定關鍵定義
GPJ0CON寄存器
寄存器地址:0xE0200240
要控制的位數:[15:12]
要設置的二進制數據:0b0001
GPJ0PUD寄存器
寄存器地址:0xE0200248
要控制的位數:[7:6]
要設置的二進制數據:0b00
GPJ0DAT寄存器
寄存器地址:0xE0200244
要控制的位數:[3]
要設置的二進制數據:0b1
4.編寫程序
start:
@;配置GPJ0CON寄存器 Address=0xE0200240 [15:12]=0b0001
ldr r0,=0xE0200240
ldr r1,=0x1000
str r1,[r0]
@;配置GPJ0PUD寄存器 Address=0xE0200248 [7:6]=0b00
ldr r0,=0xE0200248
ldr r1,=0x0
str r1,[r0]
@;配置GPJ0DAT寄存器 Address=0xE0200244 [3]=1
ldr r0,=0xE0200244
ldr r1,=0x4
str r1,[r0]
5.實例測試
生成目標文件
arm-linux-gcc -c led.S
生成可執行文件
arm-linux-gcc -Ttext 0x34000000 -nostartfiles -nostdlib led.o -o led
生成獨立執行的二進制
arm-linux-objcopy -O binary led led.bin
使用tftp命令下載
tftp 0x34000000 led.bin
使用go命令執行
go 0x34000000
6.簡單的流水燈實現
.global _start
_start:
ldr r0, =0x11111111
ldr r1, =0xE0200240
str r0, [r1]
ldr r0, =0x11111111
ldr r1, =0xE02000A0
str r0, [r1]
flash:
ldr r0, =(1<<1)
ldr r1, =0xE02000A4
str r0, [r1]
ldr r0, =~(1<<3)
ldr r1, =0xE0200244
str r0, [r1]
bl delay
ldr r0, =~(1<<4)
ldr r1, =0xE0200244
str r0, [r1]
bl delay
ldr r0, =~(1<<5)
ldr r1, =0xE0200244
str r0, [r1]
bl delay
ldr r0, =~(1<<1)
ldr r1, =0xE02000A4
str r0, [r1]
bl delay
b flash
delay:
ldr r2, =100000000
ldr r3, =0x0
delay_loop:
sub r2, r2, #1
cmp r2, r3
bne delay_loop
mov pc, lr
上一篇:ARM處理器尋址方式
下一篇:S5PV210啟動過程詳解
推薦閱讀最新更新時間:2025-05-23 21:38





設計資源 培訓 開發板 精華推薦
- NCP2809B帶輸出耦合電容的典型應用
- AZ431B精密5V/1A穩壓器典型應用
- 【訓練營】鴻蒙BigDog
- OP495GSZ 4.5V、低壓差運算放大器基準的典型應用
- 使用 Analog Devices 的 LTC1261IS8 的參考設計
- EVAL-AD7414/15EB,用于 AD7414 SMBus/I2C、10 位數字溫度傳感器的評估板
- 102110037,Wio Link 是一款基于 ESP8266 SoC 的開源 Wi-Fi 開發板,適用于物聯網應用
- 使用 Richtek Technology Corporation 的 RT9164 的參考設計
- 用于開/關控制應用的 AM2G-2415SH30Z 15V 2 瓦 DC-DC 轉換器的典型應用
- 具有大接地回路電壓的 LTC2862AIS8-1 RS485 鏈路的典型應用
- 高薪求人才
- 無線低功耗中斷問題:MSP430進入低功耗LMP3模式后,IO口模擬通訊的無線模塊無法接...
- 電容基礎---電容種類和ESR(等效串聯電阻)
- 【電源組】大家DC-DC準備用什么電路啊【電源組】
- 內核模塊調試常用命令depmod,lsmod,modinfo,insmod,rmmod,mdprobe
- 模擬器件開始面向中國的TD-SCDMA提供新芯片組
- 【不成系列的經驗教訓】元件不需儲備,DIY何須貼片小型化
- MSP430 加一個紅外傳感器,用幾個紐扣電池供電,一般能正常工作多長時間?
- WiFi藍牙無線模塊433MHZ 868MHZ 915MHZ等各種頻率真正區別在哪呢?
- 單片機指令(六)