想要硬體設計不用愁?首先要搞懂這三類GPIO!

电子老师傅發表於2024-11-08

合宙低功耗4G模組經典型號Air780E,支援兩種軟體開發方式:

一種是傳統的AT指令;
一種是基於模組做Open開發。

傳統AT指令的開發方式,合宙模組與行業內其它模組品牌在軟體上區別不大,在硬體功耗上更有優勢;

模組Open開發,合宙採用的是LuatOS方式,相對C-SDK入門更簡單,開發更方便,開發時間上也更快。

本文所介紹的GPIO設計指導,都是針對Air780E用於LuatOS開發方式時的一些注意事項,AT指令開發版本不支援GPIO操作。

Air780E模組共支援GPIO0~GPIO31合計32個GPIO和WAKEUP0~5合計6個喚醒管腳,其中:

32個GPIO口本身有多重複用功能,大家需要根據實際應用進行選擇配置;

6個WAKEUP管腳中,部分也可以配置為GPIO功能,在接下來的表格中,也將詳細介紹WAKEUP管腳的注意事項;

32個GPIO中,又可分為普通GPIO和AGPIO,在接下來的表格中,會詳細介紹這兩種GPIO的定義和區別。

一、GPIO複用表

對於GPIO功能複用,請參考如下表格。

▼ GPIO複用表 ▼

圖片

二、GPIO特性

Air780E的GPIO口根據不同的特性,可以分為三種型別:

  • 普通IO

  • Wakeup IO

  • AGPIO

不同特性的GPIO,其驅動能力以及在低功耗模式/PSM+模式下的表現區別比較大,在使用這些特性的GPIO時尤其要注意;

AGPIO也常被寫作為:AONGPIO、AON_GPIO,以下均以AGPIO的寫法進行描述。

1. 普通IO

Air780E大部分管腳為普通GPIO(上圖GPIO複用表格中灰色底色的IO);

Air780E系統為了在休眠模式下有極致的低功耗效能,會在模組進入休眠/深休眠模式時,關閉GPIO供電(VDD_EXT),因此會導致所有以VDD_EXT為電源域的GPIO會進入下電狀態。

在使用普通GPIO時,要尤其注意在休眠狀態下GPIO的掉電狀態對控制外設造成的誤動作風險。

▼ 普通IO相關特性 ▼

  • 電壓域:VDD_EXT(1.8/3.3V可配置)

  • 輸入輸出:可以配置

  • 上下拉:內部可配置

  • 輸入中斷:
    上下邊沿觸發/雙邊沿觸發/高低電平觸發(休眠後無法響應中斷)

  • 休眠電平保持:不可保持

  • 休眠喚醒:不可喚醒模組

  • 驅動能力:單個普通GPIO驅動能力<=10mA

圖片

2. AGPIO

AGPIO管腳為休眠可保持管腳(GPIO複用表格中綠色底色IO管腳);

這類管腳電源域為長保持的LDO_AONIO電源(為內部電源,模組外部不可測量),這類電源在模組低功耗模式/PSM+下,仍然能夠保持供電,因此AGPIO管腳在休眠狀態下能夠保持電平。

AGPIO管腳可以用於休眠狀態下仍然需要保持工作狀態的外設。

▼ AGPIO相關特性 ▼

  • 電壓域:LDO_AONIO(1.8/3.3V)

  • 輸入輸出:可以配置

  • 上下拉:內部可配置

  • 輸入中斷:
    上下邊沿觸發/雙邊沿觸發/高低電平觸發(休眠後無法響應中斷)

  • 休眠電平保持:可保持

  • 休眠喚醒:不可喚醒模組

  • 驅動能力:

    AGPIOWU0/1/3(MAIN_DTR):30μA;

    AGPIO3~8:5mA(所有AGPIO總共驅動電流不能超過5mA)。

圖片

3. Wakeup IO

Air780E模組包含6個特殊管腳:
WAKEUP0~WAKEUP5

此型別IO為中斷喚醒管腳,能夠在模組休眠狀態下響應外部中斷從而使模組退出休眠狀態,因此這類IO管腳在休眠狀態下也能保持供電。

注意:Wakeup IO僅支援輸入,不能配置為輸出,且固定電平不可配置。

▼ Wakeup IO相關特性 ▼

  • 電壓域:LDO_AON(2V,不可配置)

  • 輸入輸出:僅輸入

  • 上下拉:內部可配置

  • 休眠喚醒:支援

  • 驅動能力:30μA

  • 輸入中斷:上下邊沿觸發/雙邊沿觸發/高低電平觸發

  • 休眠電平保持:可保持

圖片

三、GPIO應用注意事項

1. 普通GPIO以及相應的電壓域VDD_EXT,在休眠時會輸出頻繁百ms級別的高脈衝,極易導致連線的外設誤動作。

原因解析:

Air780E的休眠特性,VDD_EXT在休眠狀態下會關閉,但是Air780E系統在休眠的整個時期內並不是一直保持穩定休眠狀態,需要不定時喚醒起來與4G網路互動以保持網路連線,因此VDD_EXT會隨著模組喚醒而開啟。而大部分普通GPIO預設是I&PU狀態,就會被VDD_EXT拉高,導致輸出高脈衝。

設計建議:

在一些需要休眠狀態下正常工作的外設的控制(比如LED控制)不建議使用普通GPIO,可以使用AGPIO。

由於AGPIO數量有限,在必須用普通GPIO的情況下,可以在普通GPIO上做外接10K電阻下拉(如下圖R23),可以大幅減小休眠時輸出的高脈衝幅值,使得減小到外設的高電平判別門限以下,也可以避免誤動作的情況,但是相應的在某些情況下,會增加功耗,請根據實際情況酌情做出選擇。

圖片

2. Wakeup IO型別的GPIO不要用VDD_EXT或者普通GPIO上拉,會導致系統無法進入休眠。

原因解析:

Air780E的休眠特性使得普通GPIO管腳和VDD_EXT會在休眠狀態下輸出高脈衝,會使得Wakeup IO收到中斷而導致系統被喚醒,無法進入休眠模式。

設計建議:使用內部的上下拉。

3. Wakeup IO型別的GPIO不要直接連線主控MCU的IO管腳,會導致電平不一致而影響系統穩定性。

原因解析:

Wakeup IO管腳電平是2V左右,這個與大多數MCU的IO電平不匹配,而且Wakeup IO的供電為內部的LDO_AON,而這個供電會給系統啟動相關的部分供電,比如reset管腳,因此Wakeup IO上由於電平不匹配而導致的漏洞,有可能會影響系統穩定性。

設計建議:

使用二極體或者三極體來隔離(如下圖)。

圖片

今天的內容就分享到這裡了~

相關文章