如何使用AM6254的GPIO?進(jìn)來(lái)聊聊

原創(chuàng) 2022-10-21 18:49:00 am64 am6254 am62

 飛凌嵌入式FET6254-C核心板基于TI Sitara? AM62x系列工業(yè)級(jí)處理器設(shè)計(jì)開(kāi)發(fā),由于AM6254采用了Cortex-A53+Cortex-M4F的處理核+控制核架構(gòu)組合,因此引腳自然也是分為A核的引腳和M核的引腳。


如果A核的引腳不夠用怎么辦?可以把M核的引腳用作A核嗎?答案是肯定的。今天小編將為大家分別介紹這顆核心板的GPIO引腳信號(hào)描述、A核使用A核的引腳、用戶(hù)空間如何控制GPIO以及A核如何調(diào)用M核的引腳并復(fù)用成GPIO。

關(guān)于AM6254的GPIO信號(hào)描述

我們通過(guò)GPIO可以了解有關(guān)AM6254這顆CPU的引腳框架,CPU手冊(cè)目錄:用戶(hù)資料/原廠資料/SPRSP58_AM62x_DS_AI_2_16_2022,在6.3.10GPIO章節(jié)有如下描述:

AM6254的GPIO信號(hào)一共有兩大組:分別是MAINDomain和MCUDomain,其中MAINDomain是A核的GPIO,有兩組GPIO0和GPIO1,分別是92和52個(gè)引腳。

MCUDomain是M核的GPIO,有一組GPIO0,24個(gè)引腳。

6.2Pin Attributes章節(jié)描述了引腳的控制寄存器PADCONFIG名稱(chēng)以及地址,以及每個(gè)引腳的屬性。例如B13引腳,引腳名稱(chēng)是SPI0_D0,寄存器名稱(chēng)為PADCONFIG112,寄存器地址為0x000F41C0,可以復(fù)用的功能如下:

Linux系統(tǒng)可以使用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章節(jié)。

A核使用A核的引腳

了解了引腳信號(hào)的描述,先不要著急,接下來(lái)先熟悉一下A核的引腳復(fù)用方法,以將SPI_D0用作GPIO為例,設(shè)備樹(shù)配置修改如下:

arch/arm64/boot/dts/ti/OK6254-C.dts

修改完成后編譯設(shè)備樹(shù),會(huì)在Image目錄下生成鏡像,然后替換dtb鏡像,替換目錄:/boot/OK6254-C.dtb。執(zhí)行sync保存后重啟。

用戶(hù)空間如何控制GPIO

為了查看是否修改成功,可以使用如下命令查看GPIO使用情況


方式1:

使用內(nèi)核的gpio-leds驅(qū)動(dòng)

root@ok6254:~# cd /sys/class/leds/

root@ok6254:/sys/class/leds#ls

heartbeat led1 led2 led3 mmc0:: mmc1:: mmc2::

root@ok6254:/sys/class/leds#

進(jìn)入其中一個(gè)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#

設(shè)備樹(shù)默認(rèn)配置觸發(fā)方式trigger為timer,此時(shí)的led是按照定時(shí)亮滅的,可以改成手動(dòng)控制。

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 點(diǎn)亮

root@ok6254:/sys/class/leds/led1#

方式2:

使用/sys/class/gpio,注意,該方式不需要再設(shè)備配置leds節(jié)點(diǎn),只需要配置引腳即可。如下是將gpmc_ad15引腳配置成GPIO。

關(guān)于gpiochip的計(jì)算公式如下:

Gpmc_ad15的引腳是gpio0_30,chip值為402+30=432,導(dǎo)出gpio:

root@ok6254:~#echo432>/sys/class/gpio/export

設(shè)置方向:

root@ok6254:~# echo out >/sys/class/gpio/gpio432/direction

設(shè)置高低電平

root@ok6254:~# echo 1 >/sys/class/gpio/gpio432/value 置高

root@ok6254:~# echo 0 >/sys/class/gpio/gpio432/value 拉低

root@ok6254:~#

A核如何調(diào)用M核的引腳并復(fù)用成GPIO?

設(shè)備樹(shù)配置:

&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驅(qū)動(dòng)的配置,在leds節(jié)點(diǎn)中添加如下(若您正在使用手機(jī)閱讀,建議您關(guān)掉“深色模式”):

---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的復(fù)位完成。

當(dāng)然其他接口I2C、CAN、SPI、UART也是類(lèi)似,想要了解更詳細(xì)的使用方式,大家可以關(guān)注后續(xù)的應(yīng)用筆記。點(diǎn)擊下圖進(jìn)入飛凌嵌入式官網(wǎng),了解更多產(chǎn)品詳情。



相關(guān)產(chǎn)品 >

  • FET62xx-C核心板

    FET6254-C核心板基于TI Sitara? AM62x系列工業(yè)級(jí)處理器設(shè)計(jì)。采用Arm Cortex A53架構(gòu),并集成了廣泛的接口,如2路支持TSN的千兆以太網(wǎng)、USB 2.0CAN-FD,AM6254核心板兼容AM62x全系列處理器,提供單核、雙核、四核可選,功能引腳完全兼容,飛凌嵌入式已經(jīng)適配AM6254 AM6231 AM6232三款芯片為您帶來(lái)靈活的成本組合方案,AM62x可應(yīng)用于廣泛的工業(yè)環(huán)境,如人機(jī)界面(HMI)、工業(yè)計(jì)算機(jī)、邊緣計(jì)算、零售自動(dòng)化、充電樁控制單元(TCU)、醫(yī)療設(shè)備等。

    了解詳情
    FET62xx-C核心板
  • OK62xx-C開(kāi)發(fā)板

    AM62x 開(kāi)發(fā)板是圍繞飛凌AM62x核心板設(shè)計(jì)的獨(dú)立測(cè)試和開(kāi)發(fā)平臺(tái)。AM62x處理器由四核64位Arm -Cortex -A53微處理器 和Cortex-M4F組成。AM62x開(kāi)發(fā)板整板工業(yè)級(jí)設(shè)計(jì),并在開(kāi)發(fā)過(guò)程中進(jìn)行嚴(yán)苛的環(huán)境溫度測(cè)試、壓力測(cè)試、長(zhǎng)期穩(wěn)定性運(yùn)行測(cè)試,使AM62x可在各種嚴(yán)苛環(huán)境穩(wěn)定運(yùn)行 了解詳情
    OK62xx-C開(kāi)發(fā)板

推薦閱讀 換一批 換一批