天天看點

[筆記分享] [GPIO] MSM8x39 GPIO 硬體部分小結

平台: MSM8X39

OS: Android4.4

Kernel: 3.10.28

術語及縮寫:

TLMM:

Top-Level Mode Multiplexer. 此子產品提供了一種機制可以讓一組GPIO pads共享使用不同的功能。

另外,對于 pin的縮寫定義,有如下表格作參考。

[筆記分享] [GPIO] MSM8x39 GPIO 硬體部分小結
[筆記分享] [GPIO] MSM8x39 GPIO 硬體部分小結

這裡要說明的”H”: 是指pin可以接高電壓,例如3.0V,不過它的驅動能力最大隻能到8mA了。

GPIO HW:

GPIO Ports:

GPIO的内部框圖如下。

 系統由Input, Output, Pull三個子子產品組成。

 系統一共有122個GPIO。

 隻有一部分GPIO才可以wakeup系統。

[筆記分享] [GPIO] MSM8x39 GPIO 硬體部分小結

GPIO Output:

Output types:

有三種output type可以支援:

1. Normal.

也就是作為一般的的GPIO輸出。 可以通過GPIO_OUT_X和GPIO_OE_X 寄存器控制。

2. Alternate.

因為GPIO可以作為複用,這裡就是選擇除了普通GPIO的另外一種功能,如UIM,I2C,具體可參見文檔Q1.

可以通過ALT_FUNTION和ALT_FUNCTION_OE寄存器設定。

3. Special.

例如ETM, 開了此功能就會覆寫GPIO的設定。不過從目前使用角度來看,我們還用到

過。

Output driver strength:

可通過 GPIO_PAD_HDRIVE_MSEL_n 寄存器的bit 2:0來控制,設定的範圍是2mA 到 16mA, 以2mA為機關。

在pad的support voltage是1.8V的時候,可以設定2 ~ 16mA。

在Pad的support voltage是高電壓(3.0V)的時候,設定的範圍隻能是2 ~ 8mA。

GPIO Input:

Input types:

有兩種input types可以支援:

1. Buffer.

也就是我們所說的作為一般的GPIO input,可從GPIO_IN_X讀到值。

2. Interrupt.

作為一個中斷pin存在。 并且可以設定觸發方式。

Input 框圖:

[筆記分享] [GPIO] MSM8x39 GPIO 硬體部分小結

Pull types:

可以有四種狀況:

1. Pull up.

上拉的電源電壓各個GPIO不太一樣,參見Q1.

2. Pull down.

接地。

3. Keeper.

不管是input還是output,可以維持上一次的電壓。在system sleep的時候會被用到。不過它無法驅動外部電路。

4. No pull.

也就是高阻态。

TLMM:

TLMM主要是友善快速對引腳的功能配置,以及對GPIO多個一起配置,否則GPIO隻能一個個引腳獨立配置。模式是通過硬體關鍵MODE[1:0]和寄存起來控制的。所有的GPIO引腳都不依賴于時鐘而是異步的,這樣能確定快速控制。

[筆記分享] [GPIO] MSM8x39 GPIO 硬體部分小結

使用注意事項:

Boot config:

帶有Boot Config的GPIO請慎用,可能會導緻開機不正常!!!

帶Boot Config的GPIO:

[筆記分享] [GPIO] MSM8x39 GPIO 硬體部分小結

Boot Config用途:

[筆記分享] [GPIO] MSM8x39 GPIO 硬體部分小結
[筆記分享] [GPIO] MSM8x39 GPIO 硬體部分小結
[筆記分享] [GPIO] MSM8x39 GPIO 硬體部分小結
[筆記分享] [GPIO] MSM8x39 GPIO 硬體部分小結
[筆記分享] [GPIO] MSM8x39 GPIO 硬體部分小結

參考文檔:

Q1: 80-NM683-1B MSM8936-MSM8939 GPIO PIN ASSIGNMENT SPREADSHEET.xlsm

Q2: 80-NM683-22 PRESENTATION- MSM8X36-MSM8X39 DIGITAL BASEBAND.pdf

Q3: 80-NM683-1 MSM8239-MSM8939-MSM8236-MSM8936 DEVICE SPECIFICATION (ADVANCE INFORMATION).pdf  chapter 2.

繼續閱讀