飛凌干貨丨細(xì)說GPIO復(fù)用-基于LS1043A平臺(tái)
OK1043A-C開發(fā)板上市已有一段時(shí)間,大家對(duì)LS1043A有了初步體驗(yàn),小編今天就分享一個(gè)最常用到的技能: GPIO的復(fù)用 。
01LS1043A GPIO 概況
LS1043A 有四組GPIO,分別為:
GPIO1[13]只能做輸出
GPIO單元包括以下功能:
· 支持32個(gè)通用輸入/輸出端口
· 復(fù)位期間所有信號(hào)均為高阻態(tài)
· 所有端口的開漏功能
· 所有端口都可以選擇在更改狀態(tài)時(shí)生成中斷
· 端口可以與其他功能信號(hào)復(fù)用
02 GPIO 寄存器介紹
GPIO內(nèi)存映射
GPIO1 base address:230_0000h
GPIO2 base address:231_0000h
GPIO3 base address:232_0000h
GPIO4 base address:233_0000h
1.GPIO direction register (GPDIR) GPIO方向寄存器(GPDIR)定義各個(gè)引腳的方向。方向,指示引腳是用作輸入還是輸出。
00000000000000000000000000000000b - 相應(yīng)的引腳是輸入。
00000000000000000000000000000001b-相應(yīng)的引腳是輸出。
2. GPIO open drain register (GPODR) GPIO開漏寄存器(GPODR)定義了各個(gè)端口驅(qū)動(dòng)其輸出的方式。開漏配置,指示信號(hào)是作為輸出主動(dòng)驅(qū)動(dòng)還是開漏驅(qū)動(dòng)器。該寄存器對(duì)GPDIR中編程為輸入的信號(hào)沒有影響。
00000000000000000000000000000000b - 相應(yīng)的信號(hào)作為輸出被主動(dòng)驅(qū)動(dòng)。
00000000000000000000000000000001b-相應(yīng)的信號(hào)是漏極開路驅(qū)動(dòng)器。作為輸出,信號(hào)被驅(qū)動(dòng)為低電平有效,否則它不被驅(qū)動(dòng)(高阻抗)。
3. GPIO data register (GPDAT) GPIO數(shù)據(jù)寄存器(GPDAT)承載各個(gè)端口的數(shù)據(jù)輸入/輸出。數(shù)據(jù),寫入該寄存器會(huì)鎖存在外部引腳上顯示的數(shù)據(jù),前提是相應(yīng)的GPDIR位配置為輸出。
當(dāng)GPDIR處于輸出模式時(shí),GPDAT讀操作會(huì)在返回引腳處的數(shù)據(jù)。
當(dāng)GPDIR處于輸入模式時(shí),GPDAT讀操作返回端口的狀態(tài)。
4. GPIO interrupt event register (GPIER) GPIO中斷事件寄存器(GPIER)攜帶導(dǎo)致中斷的事件的信息。GPIER中的每個(gè)位對(duì)應(yīng)一個(gè)中斷源。通過寫入來清除GPIER位。但是,寫零無效。中斷事件,指示相應(yīng)的GPIO信號(hào)是否發(fā)生中斷事件。
00000000000000000000000000000000b-相應(yīng)的GPIO信號(hào)上沒有發(fā)生中斷事件。
00000000000000000000000000000001b-相應(yīng)的GPIO信號(hào)發(fā)生中斷事件。
5. GPIO interrupt mask register(GPIMR) GPIO中斷屏蔽寄存器(GPIMR)定義各個(gè)端口的中斷屏蔽。發(fā)生屏蔽中斷請(qǐng)求時(shí),無論GPIMR狀態(tài)如何,都會(huì)設(shè)置相應(yīng)的GPIER位。當(dāng)發(fā)生一個(gè)或多個(gè)非屏蔽中斷事件時(shí),GPIO模塊向中斷控制器發(fā)出中斷。中斷掩碼,指示是否屏蔽或未屏蔽相應(yīng)GPIO信號(hào)的中斷事件。
00000000000000000000000000000000b - 屏蔽(禁用)輸入中斷信號(hào)。
0000000000000000000000000000000001b - 未屏蔽(啟用)輸入中斷信號(hào)。
6. GPIO interrupt control register(GPICR) GPlO中斷控制寄存器(GPICR)確定相應(yīng)的端口線是否在從高到低的變化或信號(hào)狀態(tài)的任何變化時(shí)斷言中斷請(qǐng)求。
邊沿檢測(cè)模式,相應(yīng)的端口線根據(jù)以下內(nèi)容斷言中斷請(qǐng)求:
00000000000000000000000000000000b-對(duì)端口狀態(tài)的任何更改都會(huì)生成中斷請(qǐng)求。
00000000000000000000000000000001b-端口上由高到低的更改生成中斷請(qǐng)求。
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
對(duì)應(yīng)使用方法參考CPU手冊(cè)3.4Signal multiplexing details 章節(jié)
以 SPI,eSDHC, USB and GPIO2 signal multiplexing復(fù)用為GPIO2[]為例
通過此圖可知,當(dāng)SPI_EXT為010時(shí)引腳被配置為GPIO
從引腳生效路徑來看SPI_EXT原始配置為SPI_EXT=1 引腳生效路徑中“=”后面的值為十六進(jìn)制,在修改SPI_EXT的值的時(shí)候需要將二進(jìn)制轉(zhuǎn)換為十六進(jìn)制即SPI_EXT=2
修改后如下,修改完重新編譯燒寫即可。
2. 開發(fā)板驗(yàn)證階段
root@localhost:~# ls /sys/class/GPIO/
export GPIOchip384/ GPIOchip416/ GPIOchip448/ GPIOchip480/unexport
輸入上述命令出現(xiàn)四組GPIOchip,一般對(duì)應(yīng)關(guān)系為
GPIOchip480 對(duì)應(yīng)GPIO1[]
GPIOchip448 對(duì)應(yīng)GPIO2[]
GPIOchip416 對(duì)應(yīng)GPIO3[]
GPIOchip384 對(duì)應(yīng)GPIO4[]
若要驗(yàn)證單個(gè)引腳則在此基礎(chǔ)上做加法即可,即GPIO2[x]=GPIOchip448+x
驗(yàn)證工具為memtool文件系統(tǒng)中沒有此工具需要安裝:apt-getinstall memtool
root@localhost:~# echo 450 >/sys/class/GPIO/export
root@localhost:~# echo out >/sys/class/GPIO/GPIO450/direction
root@localhost:~# memtool md0x2310000
root@localhost:~# echo in > /sys/class/GPIO/GPIO450/direction
root@localhost:~# memtool md0x2310000
由上兩個(gè)圖看出當(dāng)GPIO輸出方向發(fā)生改變時(shí),寄存器的值也發(fā)生了變化。
00000020 -------> 0000 0000 0000 0000 0000 0000 0010 0000 此為GPIO2 base address寄存器的32位值,讀取順序?yàn)?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
可見第二位已經(jīng)置為1即GPIO2[2]更改生效。
注:此方法只可適用于qspi啟動(dòng)。
---- END ----
長(zhǎng)按識(shí)別二維碼加關(guān)注 專注于智能設(shè)備核心平臺(tái)研發(fā)與制造
|
■ 關(guān)注“飛凌嵌入式”公眾號(hào),不定期分享行業(yè)干貨及產(chǎn)品一線資料。 ■ 直接微信回復(fù)產(chǎn)品平臺(tái),如“LS1043A”,即可快速獲取對(duì)應(yīng)產(chǎn)品信息。 ■ 想要了解飛凌更多信息,歡迎與我們聯(lián)系: 銷售工程師:400-699-6866 國(guó)際業(yè)務(wù)部:0312-3102650-854 技術(shù)服務(wù)部:0312-3119192 方案定制類:17713286015 (杜工),18633238067(王工)
■ 實(shí)時(shí)技術(shù)支持: AM 9:00—11:30,PM 13:30—17:00(周一至周五) |
相關(guān)產(chǎn)品 >
-
FET1046A-C核心板
4核1.8GHz,原生8網(wǎng)口靈活擴(kuò)展|LS1046A 系列ARM工控核心板基于 NXP公司的LS1046A高性能64位ARM四核處理器。LS1046A處理器將四個(gè)64位ARM Cortex-A72內(nèi)核與數(shù)據(jù)包處理加速和高速外設(shè)相集成,CoreMark跑分高達(dá)45000,LS1046A強(qiáng)大的網(wǎng)絡(luò)處理能力和豐富的高速接口,適用于工業(yè)路由、邊緣計(jì)算網(wǎng)關(guān)、IP-PBX等產(chǎn)品,以及邊緣計(jì)算、 能源物聯(lián)網(wǎng)、智慧城市、工業(yè)自動(dòng)化、視頻監(jiān)控等應(yīng)用領(lǐng)域。
了解詳情 -
OK1046A-C2開發(fā)板
4核1.8GHz,原生8網(wǎng)口,支持萬兆網(wǎng)絡(luò)|
飛凌嵌入式LS1046a ARM工控主板系列LS1046開發(fā)板 基于 NXP LS1046A 四核Cortex A72 CPU,強(qiáng)大的萬兆網(wǎng)絡(luò)處理能力和豐富的高速接口,CoreMark跑分高達(dá)45000。飛凌不僅僅提供了LS1046A開發(fā)板套件,還提供了調(diào)試心得、LS1046A硬件數(shù)據(jù)手冊(cè),并根據(jù)應(yīng)用情況發(fā)布了 LS1046A 5G CPE 工業(yè)網(wǎng)關(guān)方案、邊緣計(jì)算網(wǎng)關(guān)方案,降低了客戶二次開發(fā)的難度。更多關(guān)于LS1046A的解決方案,產(chǎn)品詳情,您可以登入飛凌嵌入式官網(wǎng)了解。
了解詳情 -
FET1043A-C核心板
LS1043A處理器是恩智浦推出的一款面向嵌入式網(wǎng)絡(luò)的四核64位ARM處理器。LS1023A (雙核)和LS1043A (四核)支持無風(fēng)扇設(shè)計(jì),超過10 Gbps的性能。LS1043A和LS1023A能夠面向無線LAN和以太網(wǎng)供電系統(tǒng)方案提供額外的功耗節(jié)省。支持引腳兼容設(shè)計(jì),可擴(kuò)展至LS1046A (四核A72處理器)或LS1088A (十核A53處理器)。
飛凌LS1043系列核心板,基于NXP公司的LS1043A四核處理器設(shè)計(jì),主頻1.6GHz,ARM Cortex-A53架構(gòu)。原生支持1個(gè)10Gbps和6個(gè)1000Mbps。支持PCIe 2.0、SATA3.0、USB3.0、UART、IIC等功能接口 了解詳情 -
OK1043A-C開發(fā)板
LS1043A開發(fā)板基于四核64位Arm Cortex-A53 LS1043A的處理器專為嵌入式網(wǎng)絡(luò)應(yīng)用而設(shè)計(jì),主頻1.6GHz,板載資源豐富,原生支持7 個(gè)Ethernet。 飛凌OK1043A-C開發(fā)板上市已有一段時(shí)間,大家對(duì)LS1043A有了初步體驗(yàn),飛凌也優(yōu)化了很多資料,幫助客戶使用LS1043應(yīng)用解決方案套件,包括LS1043軟件手冊(cè)、LS1043硬件手冊(cè)、LS1043引腳定義等,客戶可以通過這些LS1043的資料快速完成產(chǎn)品原型設(shè)計(jì)開發(fā)工作。
了解詳情