LS1028 GPIO相關(guān)應(yīng)用筆記
硬件平臺(tái):OK1028A-C開發(fā)板 操作系統(tǒng):ubuntu18.04
本文主要適用于飛凌OK1028A-C ubuntu18.04操作系統(tǒng),本文主要講解LS1028A GPIO相關(guān)知識(shí)點(diǎn),通過對(duì)GPIO復(fù)用、GPIO按鍵操作、GPIO初始化講解,希望對(duì)用戶的使用有所幫助,其他平臺(tái)也可以參考,但是不同平臺(tái)之間會(huì)存在差異,需客戶自行修改以適應(yīng)自己的使用。
一、GPIO復(fù)用
LS1028GPIO的復(fù)用是通過RCW(復(fù)位控制字)實(shí)現(xiàn)的。下面以SPI復(fù)用為GPIO為例,實(shí)現(xiàn)LS1028GPIO的復(fù)用。
在LS1028A.pdf中查找可以看到,ls1028底板上SPI_SIN可以復(fù)用為GPIO_DAT13,SPI3_SCK可復(fù)用為GPIO3_DAT14,SPI3_SOUT可復(fù)用為GPIO3_DAT16,
在《LS1028ARM.pdf》中可以看到對(duì)應(yīng)的RCW字段為SPI3_PMUX,,且此字段為01(0b01二進(jìn)制)時(shí),此引腳功能為GPIO功能,RCW文件中需要將字段對(duì)應(yīng)的數(shù)字換算為十進(jìn)制即:SPI3_PMUX=1
通過此圖可知,當(dāng)SPI3_PMUX=1時(shí),引腳被配置為GPIO3_DAT[16:13],在RCW中修改后,重新編譯替換燒寫即可。
RCW路徑:OK1028-linux-fs/packages/firmware/rcw/ls1028ardb/R_SQPP_0x85bb/rcw_1500_gpu600.rcw,修改如下所示:
開發(fā)板驗(yàn)證階段:
root@forlinx:~# ls /sys/class/gpio
export gpiochip416 gpiochip448 gpiochip480 unexport
輸入上述命令出現(xiàn)3組gpiochip,一般對(duì)應(yīng)關(guān)系為:
Gpiochip480 對(duì)應(yīng)gpio1[];
Gpiochip448 對(duì)應(yīng)gpio2[];
Gpiochip416 對(duì)應(yīng)gpio3[];
若要驗(yàn)證單個(gè)引腳則在此基礎(chǔ)上做加法即可,GPIO3_DATx=gpiochip416+x,
以GPIO3_DAT14為例:
root@forlinx:~# echo 430 > /sys/class/gpio/export //導(dǎo)出gpio
root@forlinx:~# echo out > /sys/class/gpio/gpio430/direction //給GPIO輸出的方向
root@forlinx:~# echo 1 > /sys/class/gpio/gpio430/value //給gpio高電平
root@forlinx:~# cat /sys/class/gpio/gpio430/value //查看gpio此時(shí)電平
1
root@forlinx:~# echo 0 > /sys/class/gpio/gpio430/value //給gpio低電平
root@forlinx:~# cat /sys/class/gpio/gpio430/value //查看gpio此時(shí)電平
0
二、GPIO按鍵
LS1028沒有GPIO按鍵的相關(guān)參考示例,本文的實(shí)現(xiàn)目的是在1028上添加GPIO按鍵,整體思路是先要用作GPIO按鍵的引腳復(fù)用為GPIO ,然后在設(shè)備樹里面進(jìn)行設(shè)備節(jié)點(diǎn)的注冊(cè)。
這里以GPIO3_13、GPIO3_16為例,開發(fā)板默認(rèn)是將其用作SPI_SIN、SPI_SOUT。SPI原理圖如下所示:
查看CPU手冊(cè)可以看到SPI_SIN、SPI_SOUT引腳的復(fù)用是通過SPI3_PMUX字段來控制的,當(dāng)SPI3_PMUX字段為1時(shí)被用作GPIO。
2.1修改RCW
RCW路徑:firmware/rcw/ls1028ardb/R_SQPP_0x85bb/rcw_1500_gpu600.rcw
--- a/packages/firmware/rcw/ls1028ardb/R_SQPP_0x85bb/rcw_1500_gpu600.rcw
+++ b/packages/firmware/rcw/ls1028ardb/R_SQPP_0x85bb/rcw_1500_gpu600.rcw
@@ -28,7 +28,7 @@ IIC3_PMUX=2
IIC4_PMUX=2
IIC5_PMUX=1IIC6_PMUX=0
-SPI3_PMUX=0
+SPI3_PMUX=1
CLK_OUT_PMUX=2
EC1_SAI4_5_PMUX=2
EC1_SAI3_6_PMUX=1
2.2修改設(shè)備樹
設(shè)備樹路徑:OK1028-linux-fs/packages/linux/linux/arch/arm64/boot/dts/freescale/OK1028A-C.dts
--- a/packages/linux/OK1028-linux-kernel/arch/arm64/boot/dts/freescale/OK1028A-C.dts
+++ b/packages/linux/OK1028-linux-kernel/arch/arm64/boot/dts/freescale/OK1028A-C.dts
@@ -131,7 +131,23 @@
default-brightness-level = <200>;
status = "okay";
};
-
+
+ gpio-keys {
+ compatible = "gpio-keys";
+ autorepeat;
+
+ down {
+ label = "GPIO Key DOWN";
+ linux,code = <108>;
+ gpios = <&gpio3 13 0>;
+ };
+ up{
+ label = "GPIO Key UP";
+ linux,code = <103>;
+ gpios = <&gpio3 16 1>;
+ };
+
+ };
};
配置文件:
按鍵驅(qū)動(dòng)路徑:OK1028-linux-kernel/drivers/input/keyboard/gpio_keys.c
按鍵鍵值定義文件:OK1028-linux-kernel/include/uapi/linux/input-event-codes.h
gpio-keys設(shè)備節(jié)點(diǎn)參考文件:OK1028-linux-fs/packages/linux/linux/Documentation/devicetree/bindings/input/gpio-keys.txt
三、GPIO初始化為高電平
該示例以將GPIO3_DAT14初始化為高電平為例,默認(rèn)是將用作SPI3_SCK,需要將其先復(fù)用為GPIO。
修改RCW,將其復(fù)用為GPIO。
RCW路徑:firmware/rcw/ls1028ardb/R_SQPP_0x85bb/rcw_1500_gpu600.rcw
SPI3_PMUX=1
在uboot源碼中進(jìn)行初始化,文件路徑:packages/firmware/OK1028-linux-uboot/board/freescale/ls1028a/ls1028a.c。
定義一個(gè)常量
在board_gpio_init()初始化函數(shù)中給其賦值,含義:將GPIO3_DAT14設(shè)置為輸出,值設(shè)置為1(高電平)。
驗(yàn)證:
單獨(dú)編譯firmware固件燒寫,一上電用萬用表進(jìn)行測(cè)量,可以看到該引腳為高電平(1.8V)。
相關(guān)產(chǎn)品 >
-
OK1028A-C開發(fā)板
LS028A 系列-LS1028開發(fā)板 雙核Cortex-A72 設(shè)計(jì) TSN網(wǎng)絡(luò)支持 ,工業(yè)級(jí) LS1028A開發(fā)板?提供了一個(gè)用于設(shè)計(jì)和評(píng)估LS1028A處理器設(shè)計(jì)核心板的平臺(tái)。支持TSN的以太網(wǎng)交換機(jī)和以太網(wǎng)控制器,可支持融合的IT和OT網(wǎng)絡(luò);支持CANFD、UART?、USB3.0、PCIe3.0、SATA3.0、IIS、IIC、SPI?等常用總線接口,并支持一個(gè)最大分辨率4K的DP接口。ls1028a 適用于工業(yè)路由器、TSN、SD-WAN、?5G CPE?、邊緣計(jì)算網(wǎng)關(guān)?、IP-PBX等產(chǎn)品,以及工業(yè)互聯(lián)、智慧工廠、工業(yè)安全、信息安全、智慧交通、能源物聯(lián)網(wǎng)?等應(yīng)用領(lǐng)域。 了解詳情 -
FET1028A-C核心板
LS1028A-C核心板基于NXP LS1028A處理器設(shè)計(jì),雙核ARM Cortex - A72,主頻最高1.6GHz,板載2GB DDR4 RAM,8GB ROM;原生支持6個(gè)Gbit Ethernet,支持TSN的以太網(wǎng)交換機(jī)和以太網(wǎng)控制器,可支持融合的IT和OT網(wǎng)絡(luò);支持CAN FD、UART、USB3.0、PCIe3.0、SATA3.0、IIS、IIC、SPI等常用總線接口,并支持一個(gè)最大分辨率4K的DP接口。適用于工業(yè)路由器、TSN、SD-WAN、5G CPE、邊緣計(jì)算網(wǎng)關(guān)、IP-PBX等產(chǎn)品,以及工業(yè)互聯(lián)網(wǎng)、智慧工廠、工業(yè)安全、信息安全、智慧交通、能源物聯(lián)網(wǎng)等應(yīng)用領(lǐng)域。 了解詳情