行業資訊

您所在的位置:首頁 > 關於杏吧 > 行業資訊
杏吧幹貨丨細說GPIO複用-基於LS1043A平台
發布人:管理員   發布時間:2019/8/26 14:33:46

OK1043A-C開發板上市已有一段時間,大家對LS1043A有了初步體驗,小編今天就分享一個最常用到的技能: GPIO的複用  。

 

01LS1043A GPIO 概況

LS1043A 有四組GPIO,分別為:


image.png


GPIO1[13]隻能做輸出

GPIO單元包括以下功能:

・ 支持32個通用輸入/輸出端口

・ 複位期間所有信號均為高阻態

・ 所有端口的開漏功能

・ 所有端口都可以選擇在更改狀態時生成中斷

・ 端口可以與其他功能信號複用

 

02 GPIO 寄存器介紹

GPIO內存映射

GPIO1 base address:230_0000h

GPIO2 base address:231_0000h

GPIO3 base address:232_0000h

GPIO4 base address:233_0000h


image.png


1.GPIO direction register (GPDIR)    GPIO方向寄存器(GPDIR)定義各個引腳的方向。方向,指示引腳是用作輸入還是輸出。

00000000000000000000000000000000b - 相應的引腳是輸入。

00000000000000000000000000000001b-相應的引腳是輸出。

 

2. GPIO open drain register (GPODR)   GPIO開漏寄存器(GPODR)定義了各個端口驅動其輸出的方式。開漏配置,指示信號是作為輸出主動驅動還是開漏驅動器。該寄存器對GPDIR中編程為輸入的信號沒有影響。

00000000000000000000000000000000b - 相應的信號作為輸出被主動驅動。

00000000000000000000000000000001b-相應的信號是漏極開路驅動器。作為輸出,信號被驅動為低電平有效,否則它不被驅動(高阻抗)。

 

3. GPIO data register (GPDAT)   GPIO數據寄存器(GPDAT)承載各個端口的數據輸入/輸出。數據,寫入該寄存器會鎖存在外部引腳上顯示的數據,前提是相應的GPDIR位配置為輸出。

當GPDIR處於輸出模式時,GPDAT讀操作會在返回引腳處的數據。

當GPDIR處於輸入模式時,GPDAT讀操作返回端口的狀態。

 

4. GPIO interrupt event register (GPIER)   GPIO中斷事件寄存器(GPIER)攜帶導致中斷的事件的信息。GPIER中的每個位對應一個中斷源。通過寫入來清除GPIER位。但是,寫零無效。中斷事件,指示相應的GPIO信號是否發生中斷事件。

00000000000000000000000000000000b-相應的GPIO信號上沒有發生中斷事件。

00000000000000000000000000000001b-相應的GPIO信號發生中斷事件。

 

5. GPIO interrupt mask register(GPIMR)   GPIO中斷屏蔽寄存器(GPIMR)定義各個端口的中斷屏蔽。發生屏蔽中斷請求時,無論GPIMR狀態如何,都會設置相應的GPIER位。當發生一個或多個非屏蔽中斷事件時,GPIO模塊向中斷控製器發出中斷。中斷掩碼,指示是否屏蔽或未屏蔽相應GPIO信號的中斷事件。

00000000000000000000000000000000b - 屏蔽(禁用)輸入中斷信號。

0000000000000000000000000000000001b - 未屏蔽(啟用)輸入中斷信號。

 

6. GPIO interrupt control register(GPICR)   GPlO中斷控製寄存器(GPICR)確定相應的端口線是否在從高到低的變化或信號狀態的任何變化時斷言中斷請求。

 

邊沿檢測模式,相應的端口線根據以下內容斷言中斷請求:

00000000000000000000000000000000b-對端口狀態的任何更改都會生成中斷請求。

00000000000000000000000000000001b-端口上由高到低的更改生成中斷請求。

 

03GPIO 在 LS1043A 的配置

1. rcw配置階段

LS1043A的引腳配置信息文件路徑:

OK10xx-linux-fs/flexbuildpackages/firmware/rcw/ls1043aqds/ls1043a.rcwi

LS1043A引腳修改生效路徑:

OK10xx-linux-fs/flexbuild/packages/firmware/rcw/ls1043ardb/RR_FQPP_1455/rcw_1600_qspiboot.rcw

對應使用方法參考CPU手冊3.4Signal multiplexing details 章節

SPI,eSDHC, USB and GPIO2 signal multiplexing複用為GPIO2[]為例

 

通過此圖可知,當SPI_EXT為010時引腳被配置為GPIO

從引腳生效路徑來看SPI_EXT原始配置為SPI_EXT=1 引腳生效路徑中“=”後麵的值為十六進製,在修改SPI_EXT的值的時候需要將二進製轉換為十六進製即SPI_EXT=2

修改後如下,修改完重新編譯燒寫即可。

 

2. 開發板驗證階段

[email protected]:~# ls /sys/class/GPIO/

export       GPIOchip384/ GPIOchip416/ GPIOchip448/ GPIOchip480/unexport

輸入上述命令出現四組GPIOchip,一般對應關係為

GPIOchip480  對應GPIO1[]

GPIOchip448  對應GPIO2[]

GPIOchip416  對應GPIO3[]

GPIOchip384  對應GPIO4[]

若要驗證單個引腳則在此基礎上做加法即可,即GPIO2[x]=GPIOchip448+x

驗證工具為memtool文件係統中沒有此工具需要安裝:apt-getinstall memtool

[email protected]:~# echo 450 >/sys/class/GPIO/export

[email protected]:~# echo out  >/sys/class/GPIO/GPIO450/direction

[email protected]:~# memtool md0x2310000

 

[email protected]:~# echo in  > /sys/class/GPIO/GPIO450/direction

[email protected]:~# memtool md0x2310000

 

由上兩個圖看出當GPIO輸出方向發生改變時,寄存器的值也發生了變化。

00000020 -------> 0000 0000 0000 0000 0000 0000 0010 0000 此為GPIO2  base  address寄存器的32位值,讀取順序為 24,25,26,27  28,29,30,31  16,17,18,19  20,21,22,23  8,9,10,11,12  13,14,15,16  0,1,2,3  4,5,6,7

可見第二位已經置為1即GPIO2[2]更改生效。

:此方法隻可適用於qspi啟動。

 

 


 

----   END   ----


 長按識別二維碼加關注 

杏吧嵌入式

專注於智能設備核心平台研發與製造


■ 關注“杏吧嵌入式”公眾號,不定期分享行業幹貨及產品一線資料。

■ 直接微信回複產品平台,如“LS1043A”,即可快速獲取對應產品信息。

■ 想要了解杏吧更多信息,歡迎與我們聯係:

銷售工程師:400-699-6866

國際業務部:0312-3102650-854

技術服務部:0312-3119192

方案定製類:17713286015 (杜工),18633238067(王工 

■ 實時技術支持:

AM 9:00―11:30,PM 13:30―17:00(周一至周五)

 

推薦閱讀

您所在的位置:首頁 > 關於杏吧 > 行業資訊



長文分享丨TI AM5718的PRU開發詳解
再見了,省界收費站!LS1012A助力新型RSU(路側單元)實現
站在風口上,邊緣計算牽手LS1043A開發板
解鎖新技能!iMXRT1052核心板支持操作係統RT-Thread
未來觸手可及,智慧燈杆掀起“城市信息革命”IOT風向標丨智慧城市呼喚智能建築
小巧嵌入式平台“玩轉”大型的數據庫管理係統
杏吧幹貨丨芯片在不同電平電路中的應用
無人機在智能交通領域的應用大盤點!
杏吧嵌入式丨我們是如何解決TVS管使用錯誤的
LS1012A丨一文看懂何謂“低耗高速佼佼者”
穩定壓倒一切,開發板電源架構解析之IMX6UL
杏吧嵌入式 S5P4418 核心板為自助加油係統“加油”
小白也能玩轉 i.MX6 平台的 GPIO 應用筆記


Copyright © 2007-2015 保定杏吧嵌入式技術有限公司 All Rights Reserved  冀ICP備12004394號