快速瀏覽

使用 GPIO 按鍵關機和喚醒


 

本節介紹如何設置 GPIO 按鍵用於關機和喚醒目的。

簡要設置流程如下。

  1. 將選項卡按鈕連接到您要使用的 pin 端口
  2. 使用 boot.ini 設置 GPIO 編號



這是一個例子。

我們使用以下項目。

與按鈕的電路連接參考如下。

  • 請考慮適合您的 LED 的串聯電阻值。
  • 例如,標準紅色 LED (1.2V/20mA) 為 100 歐姆。

在這個例子中,我們將使用40pin 擴展連接器的Pin#11

該引腳分配給GPIOX.BIT3,其 GPIO 編號為#479
將紅線連接到Pin#11

它的默認引腳拉動狀態為高,開關激活為,因此您應該將選項卡開關的灰線連接到地(例如:引腳#9)

功能 C4 引腳分配 GPIO編號
按鈕 GPIO #11 (GPIO) 479
按鈕激活 #9(接地) ——
LED 正極 #1 (3.3V) ——
LED 負極 #6(接地) ——
 

以下是使用 40 針連接器和 7 針連接器的可用關鍵示例。
您可以找到紅線和灰線的引腳分配示例。

(1) J2 – 2×20 引腳

活動電平
(灰線)
GPIO編號引腳編號
(紅線)
引腳編號
(紅線)
GPIO編號活動電平
(灰線)
——3.3V 電源125.0V 電源——
高活躍通用輸入輸出#493345.0V 電源——
低電平有效通用輸入輸出#49456地面——
高活躍通用輸入輸出#47378通用輸入輸出#488低電平有效
——地面910通用輸入輸出#489低電平有效
低電平有效通用輸入輸出#4791112通用輸入輸出#492低電平有效
低電平有效通用輸入輸出#4801314地面——
低電平有效通用輸入輸出#4831516通用輸入輸出#476低電平有效
——3.3V 電源1718通用輸入輸出#477低電平有效
低電平有效GPIO#4841920地面——
低電平有效通用輸入輸出#4852122通用輸入輸出#478低電平有效
低電平有效通用輸入輸出#4872324GPIO#486低電平有效
——地面2526GPIO#464高活躍
——通用輸入輸出#4742728GPIO#475低電平有效
低電平有效GPIO#4902930地面——
低電平有效通用輸入輸出#4913132通用輸入輸出#472高活躍
低電平有效通用輸入輸出#4813334地面 
高活躍通用輸入輸出#4823536通用輸入輸出#495高阻抗
————3738————
——地面3940————

 

(2) J7 – 1×7 針腳

引腳編號
(紅線)
GPIO編號活動電平
(灰線)
1地面——
2通用輸入輸出#471高活躍
35.0V 電源——
4GPIO#460高活躍
5通用輸入輸出#462高活躍
6通用輸入輸出#461高活躍
7通用輸入輸出#463高活躍

 

[已知問題]

  • 某些默認級別為下拉的端口在最新版本中不可用。
  • Pin#5 和Pin#28 由於默認電平(1.1V)不能正常工作以用於斷電喚醒。

[已知問題]

  • 某些默認級別為下拉的端口在最新版本中不可用。
  • Pin#5 和Pin#28 由於默認電平(1.1V)不能正常工作以用於斷電喚醒。

setenv bootargs "root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait rw ${condev} ${amlogic} no_console_suspend fsck.repair=yes net.ifnames=0 elevator=noop hdmimode=${hdmimode} cvbsmode=576cvbs max_freq_a53=${max_freq_a53} maxcpus=${maxcpus} voutmode=${voutmode} ${cmode} disablehpd=${disablehpd} cvbscable=${cvbscable} overscan=${overscan} ${hid_quirks} monitor_onoff=${monitor_onoff} logo=osd0,loaded ${cec_enable}"
 
### in case of GPIOX.3 (Pin 11) of 2x20 pins connector
setenv gpiopower "479"
setenv bootargs ${bootargs} gpiopower=${gpiopower}

只需將上面示例中的三行添加到 boot.ini 文件中。
最新的 boot.ini 文件


斷電喚醒需要長按2秒以上。


LED心跳動作需要修改這個dtsi文件,重新構建dtb鏡像,替換/media/boot中的meson64_odroidn2.dtb。

例如)GPIOX.BIT12,引腳#8

	leds {
		compatible = "gpio-leds";
		blueled {
			label = "blue:heartbeat";
			gpios = <&gpio GPIOX_12 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
		};
	};
功能 C4 引腳分配 GPIO編號
按鈕 GPIO #11 479
按鈕激活 #9 ——
LED 正極 #8 488
LED 負極 #6 ——

首先安裝設備樹編譯器。

root@odroid:~$ sudo  apt-get install device-tree-compiler

備份您的原始 dtb 文件。

root@odroid:~$ sudo  cp  / media / boot / meson64_odroidn2.dtb / media / boot / meson64_odroidn2.dtb.backup

檢查當前的 LED 節點。
原來的led gpio是GPIOAO_11,用作心跳藍色led。

root@odroid:~$ fdtget / media / boot / meson64_odroidn2.dtb / leds / blueled gpios
 24  11  0

現在,更改節點。
在這個例子中,新的 LED GPIO 是 GPIOX_12。

root@odroid:~$ fdtput / media / boot / meson64_odroidn2.dtb / leds / blueled gpios 26  78  0
root@odroid:~$ fdtget / media / boot / meson64_odroidn2.dtb / leds / blueled gpios
 26  78  0

然後,重新啟動系統。

$ sudo reboot

‘gpios’ 中有 3 個參數。

gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>;
第一個參數

它可以是 &gpio 或 &gpio_ao 之一。

&gpio26
&gpio_ao24
第二個論點
第三個論點

它可以是 GPIO_ACTIVE_HIGH 或 GPIO_ACTIVE_LOW 之一。
https://github.com/hardkernel/linux/blob/odroidn2-4.9.y/include/dt-bindings/gpio/gpio.h#L13

GPIO_ACTIVE_HIGH0
GPIO_ACTIVE_LOW1

快速瀏覽

ODROID-C4

四核ARM CORTEX-A55 |4GB RAM |4 USB3 PORTS