如何使用AM6254的GPIO?進來聊聊
飛凌嵌入式FET6254-C核心板基于TI Sitara? AM62x系列工業級處理器設計開發,由于AM6254采用了Cortex-A53+Cortex-M4F的處理核+控制核架構組合,因此引腳自然也是分為A核的引腳和M核的引腳。
如果A核的引腳不夠用怎么辦?可以把M核的引腳用作A核嗎?答案是肯定的。今天小編將為大家分別介紹這顆核心板的GPIO引腳信號描述、A核使用A核的引腳、用戶空間如何控制GPIO以及A核如何調用M核的引腳并復用成GPIO。
關于AM6254的GPIO信號描述我們通過GPIO可以了解有關AM6254這顆CPU的引腳框架,CPU手冊目錄:用戶資料/原廠資料/SPRSP58_AM62x_DS_AI_2_16_2022,在6.3.10GPIO章節有如下描述:
AM6254的GPIO信號一共有兩大組:分別是MAINDomain和MCUDomain,其中MAINDomain是A核的GPIO,有兩組GPIO0和GPIO1,分別是92和52個引腳。
MCUDomain是M核的GPIO,有一組GPIO0,24個引腳。
6.2Pin Attributes章節描述了引腳的控制寄存器PADCONFIG名稱以及地址,以及每個引腳的屬性。例如B13引腳,引腳名稱是SPI0_D0,寄存器名稱為PADCONFIG112,寄存器地址為0x000F41C0,可以復用的功能如下:
Linux系統可以使用devmem2查看寄存器值。
root@ok6254:~# devmem2 0x000F41C0
/dev/mem opened.
Memory mapped at address0xffff969c0000.
Read at address 0x000F41C0(0xffff969c41c0):0x00010007
root@ok6254:~#
5.1.2.3Pad Configuration Register Functional Description章節。
A核使用A核的引腳
了解了引腳信號的描述,先不要著急,接下來先熟悉一下A核的引腳復用方法,以將SPI_D0用作GPIO為例,設備樹配置修改如下:
arch/arm64/boot/dts/ti/OK6254-C.dts
修改完成后編譯設備樹,會在Image目錄下生成鏡像,然后替換dtb鏡像,替換目錄:/boot/OK6254-C.dtb。執行sync保存后重啟。
用戶空間如何控制GPIO
為了查看是否修改成功,可以使用如下命令查看GPIO使用情況
方式1:
使用內核的gpio-leds驅動
root@ok6254:~# cd /sys/class/leds/root@ok6254:/sys/class/leds#ls
heartbeat led1 led2 led3 mmc0:: mmc1:: mmc2::
root@ok6254:/sys/class/leds#
進入其中一個led1
root@ok6254:/sys/class/leds#cd led1/
root@ok6254:/sys/class/leds/led1#ls
brightness device max_brightness power subsystem trigger uevent
root@ok6254:/sys/class/leds/led1#
設備樹默認配置觸發方式trigger為timer,此時的led是按照定時亮滅的,可以改成手動控制。
root@ok6254:/sys/class/leds/led1#echo none > trigger 將方式改成正常模式
root@ok6254:/sys/class/leds/led1#echo 1 > brightness 熄滅
root@ok6254:/sys/class/leds/led1#echo 0 > brightness 點亮
root@ok6254:/sys/class/leds/led1#
方式2:
使用/sys/class/gpio,注意,該方式不需要再設備配置leds節點,只需要配置引腳即可。如下是將gpmc_ad15引腳配置成GPIO。
關于gpiochip的計算公式如下:
Gpmc_ad15的引腳是gpio0_30,chip值為402+30=432,導出gpio:
root@ok6254:~#echo432>/sys/class/gpio/export
設置方向:
root@ok6254:~# echo out >/sys/class/gpio/gpio432/direction
設置高低電平:
root@ok6254:~# echo 1 >/sys/class/gpio/gpio432/value 置高
root@ok6254:~# echo 0 >/sys/class/gpio/gpio432/value 拉低
root@ok6254:~#
A核如何調用M核的引腳并復用成GPIO?
設備樹配置:&mcu_pmx0 {
mymcugpio1_pins_default:mymcugpio1-pins-default{
pinctrl-single,pins=<
AM62X_MCU_IOPAD(0x004,PIN_INPUT,7)
>;
};
};
&mcu_gpio0 {
pinctrl-names ="default";
pinctrl-0=<&mymcugpio1_pins_default>;
status = "okay";
};
使用gpio-leds驅動的配置,在leds節點中添加如下(若您正在使用手機閱讀,建議您關掉“深色模式”):
---a/arch/arm64/boot/dts/ti/OK6254-C.dts
+++b/arch/arm64/boot/dts/ti/OK6254-C.dts
@@ -166,7 +166,7 @@
compatible= "gpio-leds";
pinctrl-names= "default";
pinctrl-0= <&usr_led_pins_default>;
-
+ pinctrl-1 = <&mymcugpio1_pins_default>;
led-0 {
label= "heartbeat";
gpios= <&main_gpio0 42 GPIO_ACTIVE_HIGH>;
@@ -206,6 +206,14 @@
led-pattern= <500 500>;
default-state= "on";
};
+
+ led-5 {
+ label = "led5";
+ gpios = <&mcu_gpio0 1 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "timer";
+ led-pattern = <500 500>;
+ default-state = "on";
+ };
};
控制方式與前面提到的方式1和方式2一樣,至此GPIO的復位完成。
當然其他接口I2C、CAN、SPI、UART也是類似,想要了解更詳細的使用方式,大家可以關注后續的應用筆記。點擊下圖進入飛凌嵌入式官網,了解更多產品詳情。
相關產品 >
-
FET62xx-C核心板
FET6254-C核心板基于TI Sitara? AM62x系列工業級處理器設計。采用Arm Cortex A53架構,并集成了廣泛的接口,如2路支持TSN的千兆以太網、USB 2.0CAN-FD,AM6254核心板兼容AM62x全系列處理器,提供單核、雙核、四核可選,功能引腳完全兼容,飛凌嵌入式已經適配AM6254 AM6231 AM6232三款芯片為您帶來靈活的成本組合方案,AM62x可應用于廣泛的工業環境,如人機界面(HMI)、工業計算機、邊緣計算、零售自動化、充電樁控制單元(TCU)、醫療設備等。
了解詳情 -
OK62xx-C開發板
AM62x 開發板是圍繞飛凌AM62x核心板設計的獨立測試和開發平臺。AM62x處理器由四核64位Arm -Cortex -A53微處理器 和Cortex-M4F組成。AM62x開發板整板工業級設計,并在開發過程中進行嚴苛的環境溫度測試、壓力測試、長期穩定性運行測試,使AM62x可在各種嚴苛環境穩定運行 了解詳情