Top Banner
第第第 第第 I/O 第第第第第第第第第 Ping-Liang Lai ( 第第第 )
34

第六章 通用 I/O 埠的工作原理與實驗

Jan 18, 2016

Download

Documents

maj

第六章 通用 I/O 埠的工作原理與實驗. Ping-Liang Lai ( 賴秉樑 ). 實驗目的. 1 、掌握通用輸入輸出( GPIO )電路原理及與其相關的特殊功能暫存器的配置方法。 2 、熟悉 SDT 或 ADS 整合型開發環境 3 、學習使用 SDT 或 ADS 環境編譯、下載、除錯並 Trace 程式的方法。 4 、熟悉實驗系統的相關硬體結構。. 實驗原理. 硬體原理 S3C4510B 的通用 IO 埠的硬體功能方塊圖:. 實驗原理. GPIO 工作原理 S3C4510B 提供了 18 個可程式化的 GPIO 埠 - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 第六章 通用 I/O 埠的工作原理與實驗

第六章

通用 I/O埠的工作原理與實驗

Ping-Liang Lai (賴秉樑 )

Page 2: 第六章 通用 I/O 埠的工作原理與實驗

實驗目的

1 、掌握通用輸入輸出( GPIO )電路原理及與其相關的特殊功能暫存器的配置方法。

2 、熟悉 SDT 或 ADS 整合型開發環境

3 、學習使用 SDT 或 ADS 環境編譯、下載、除錯並Trace 程式的方法。

4 、熟悉實驗系統的相關硬體結構。

Page 3: 第六章 通用 I/O 埠的工作原理與實驗

實驗原理 硬體原理

S3C4510B 的通用 IO 埠的硬體功能方塊圖:

Page 4: 第六章 通用 I/O 埠的工作原理與實驗

實驗原理GPIO 工作原理 S3C4510B 提供了 18 個可程式化的 GPIO 埠

每個埠配置為輸入模式、輸出模式或特殊功能模式

控制 I/O 口的特殊功能暫存器一共有 3 個:IOPMOD 、 IOPCON 和 IOPDATA

由特殊功能暫存器 IOPMOD 和 IOPCON 控制 埠 0 ~埠 7 的工作模式僅由 IOPMOD 暫存器控制 通過設置 IOPCON 暫存器,埠 8 ~埠 11 可用作外部中斷請求

INTREQ0 ~ INTREQ3 的輸入 埠 12 、埠 13 可用作外部 DMA 請求 XDREQ0 、 XDREQ1

的輸入 埠 14 、埠 15 可作為外部 DMA 請求的應答信號

XDACK0 、 XDACK1 埠 16 可作為計時器 0 的溢出 TOUT0 ,埠 17 可作為計時器 1

的溢出 TOUT1

Page 5: 第六章 通用 I/O 埠的工作原理與實驗

實驗原理 I/O 埠模式暫存器 (IOPMOD) :

各位元定義為:

[0..17] P0~P17 的 I/O 模式控制位元元。0= 輸入 1= 輸出

暫存器 偏移位址 操作 功能描述 重置值IOPMOD 0x5000 讀 / 寫 I/O 埠模式暫存器 0x0000,000

0

Page 6: 第六章 通用 I/O 埠的工作原理與實驗

實驗原理 I/O 埠控制暫存器 (IOPCON) :

[4 : 0] 控制埠 8 的外部中斷請求信號 0 ( xIRQ0 )輸入

[4] 0 = 禁能 1 = 致能 [3] 0 = 低電位有效 1 = 高電位有效 [2] 0 = 濾波器關 1 = 濾波器開[1 : 0]

00 = 電位檢測 01 = 上升沿檢測 10 = 下降沿檢測 11 = 上升、下降沿均檢測

暫存器 偏移位址 操作 功能描述 重置值IOPCON 0x5004 讀 / 寫 I/O 埠控制暫存器 0x0000,000

0

Page 7: 第六章 通用 I/O 埠的工作原理與實驗

實驗原理 [9 : 5] 控制埠 9 的外部中斷請求信號 1 ( xIRQ1 )輸入

使用方法同埠 8 [14 : 10] 控制埠 10 的外部中斷請求信號 2 ( xIRQ2 )輸入

使用方法同埠 8 [19 : 15] 控制埠 11 的外部中斷請求信號 3 ( xIRQ3 )輸入

使用方法同埠 8 [22 : 20] 控制埠 12 的外部 DMA 請求信號 0 ( DRQ0 )輸入

[22] 0 = 禁能 1 = 致能 [21] 0 = 濾波器關 1 = 濾波器開 [20] 0 = 低電位有效 1 = 高電位有效

[25 : 23] 控制埠 13 的外部 DMA 請求信號 1 ( DRQ1 )輸入 [25] 0 = 禁能 1 = 致能 [24] 0 = 濾波器關 1 = 濾波器開 [23] 0 = 低電位有效 1 = 高電位有效

[27 : 26] 控制埠 14 的外部 DMA 應答信號 0 ( DAK0 )輸出 [27] 0 = 禁能 1 = 致能 [26] 0 = 低電位有效 1 = 高電位有效

[29 : 28] 控制埠 15 的外部 DMA 應答信號 1 ( DAK1 )輸出 [29] 0 = 禁能 1 = 致能 [28] 0 = 低電位有效 1 = 高電位有效

[30] 控制埠 16 作為計時器 0 溢出信號( TOEN0 ) 0 = 禁能 1 = 致能

[31] 控制埠 17 作為計時器 1 溢出信號( TOEN1 ) 0 = 禁能 1 = 致能

Page 8: 第六章 通用 I/O 埠的工作原理與實驗

實驗原理 I/O 埠資料暫存器 ( IOPDATA )

當 I/O 埠配置為輸入模式時,對應的位元表示 I/O 埠的輸入狀態。

當 I/O 埠配置為輸出模式時,對應的位元表示 I/O 埠的輸出狀態 。

對應的位元表示 I/O 埠:

暫存器 偏移位址 操作 功能描述 重置值IOPDATA 0x5008 讀 / 寫 I/O 埠資料暫存器 未定義

Page 9: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 接腳電路圖

Page 10: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 開啟 ARM Project Manger

從 File 功能表新建一個專案項目。 File → New 如下圖所示。

選擇 Project

Page 11: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 輸入專案名稱 GPIO 及路徑

Page 12: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 新建一個 .S 文件。 File → New 。彈出如下對話方

編寫程式碼

儲存檔案為 Init.s

Page 13: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 添加至專案檔案中

1

2

3

Page 14: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 再建立一個檔案,且命名為 main.c

Page 15: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 將 main.c 檔案儲存起來,並添加至專案檔案中

Page 16: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 設置編譯連接環境。 Tools→Configure → armlink 在 General 頁面設置連接程式庫路徑。

1

2

3

Page 17: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 在 Output 頁面設置 ARM ELF image format 輸出

為 ELF 格式 在 Entry and Base 頁面設置除錯時檔下載的目的

位元址。要保證該位址為 SDRAM 位址。

45

Page 18: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 編譯工程項目。

在 Project → Force build

Page 19: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 進入除錯程式

執行” JTAG-NT&2000.exe” 開啟” ARM Debugger For Windows”

Page 20: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 載入映像檔案進行除錯

Page 21: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 執行程式進行除錯,利用工作列上的圖示來進行單步

執行除錯

利用工作列上的圖示來監看記憶體狀態R

eload

Go

Stop

Step In

Step

Step O

ut

Run to C

ursor

Register

Locals

Mem

ory

AR

M D

isassembly

Back T

race

Page 22: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 按 F10 單步執行程式或點工作列上的圖示

Page 23: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 按 F8 單步執行程式或點工作列上的圖示

進入 Main 主程式 (C 語言 )

Page 24: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 觀看 IOPMOD 記憶體的變化

輸入 IOPMOD 記憶體位址 0x03FF5000

Page 25: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 設定 IOPMOD

0x03FF5000 記憶體的變化

Page 26: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 設定 IOPDATA(0x03FF5008)

IOPDATA(0x03FF5008) 的變化

Page 27: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 觀察 LED 變數

LED 變數的變化

Page 28: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 利用”移位”的方式,改變 LED 燈的變化

將移位後的值寫入 IOPDATA ,輸出至 IO port

Page 29: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 利用 Step 執行 Delay() ,用 Step In 會進入

Delay() 副程式 Step 單步執行

Step In 單步執行

Page 30: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 IOPDATA 執行變化

DemoBoardP4_LED 亮起

DemoBoardP5_LED 亮起

DemoBoardP6_LED 亮起

DemoBoardP7_LED 亮起

Page 31: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗 當 IOPDATA 為 0x80 ,重置 LED 值

Page 32: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗

Page 33: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗

Page 34: 第六章 通用 I/O 埠的工作原理與實驗

通用 I/O 埠的 LED 輸出實驗