M.2 E Key B Key M Key腳位說明整理

整理 M.2 腳位說明文件的重點內容,保留 Key E、Key B、Key M 三種 M.2 Socket 的 Pinout Description 表格,並補上繁中說明。

本文主要涵蓋三種在嵌入式系統上很常見的 M.2 介面:

  • Socket 1 - Key E
  • Socket 2 - Key B
  • Socket 3 - Key M

另外,原文說明內容是基於 PCI Express M.2 Specification Revision 3.0, Version 1.2

01 Socket 1 - Key E

Key E 常見於連接類模組,例如 Wi-Fi / Bluetooth 擴充卡。原文提到這類卡通常透過 PCIeUSB 連接,其它匯流排如 SDIOI2S 是否可用,要看 COM 是否支援。

Pinout Description

左 Pin 左訊號 右訊號 右 Pin
743.3VGND75
723.3VRESERVED/REFCLKn173
70UIM_POWER_SRC/GPIO_1/PEWAKE1#RESERVED/REFCLKp171
68UIM_POWER_SNK/CLKREQ1#GND69
66UIM_SWP/PERST1#RESERVED/PERn167
64RESERVEDRESERVED/PERp165
62ALERT# (I)(0/1.8 V)GND63
60I2C_CLK (O)(0/1.8 V)RESERVED/PETn161
58I2C_DATA (I/O)(0/1.8 V)RESERVED/PETp159
56W_DISABLE1# (O)(0/3.3V)GND57
54W_DISABLE2# (O)(0/3.3V)PEWAKE0# (I/O)(0/3.3V)55
52PERST0# (O)(0/3.3V)CLKREQ0# (I/O)(0/3.3V)53
50SUSCLK(32kHz) (O)(0/3.3V)GND51
48COEX_TXD (O)(0/1.8V)REFCLKn049
46COEX_RXD (I)(0/1.8V)REFCLKp047
44COEX3 (I/O)(0/1.8V)GND45
42VENDOR DEFINEDPERn043
40VENDOR DEFINEDPERp041
38VENDOR DEFINEDGND39
36UART RTS (O)(0/1.8V)PETn037
34UART CTS (I)(0/1.8V)PETp035
32UART TXD (O)(0/1.8V)GND33
Key EKey E
Key EKey E
Key EKey E
Key ESDIO RESET#/TX_BLANKING (O)(0/1.8V)23
22UART RXD (I)(0/1.8V)SDIO WAKE# (I)(0/1.8V)21
20UART WAKE# (I)(0/3.3V)SDIO DATA3(I/O)(0/1.8V)19
18GNDSDIO DATA2(I/O)(0/1.8V)17
16LED_2# (I)(OD)SDIO DATA1(I/O)(0/1.8V)15
14PCM_OUT/I2S SD_OUT (O)(0/1.8V)SDIO DATA0(I/O)(0/1.8V)13
12PCM_IN/I2S SD_IN (I)(0/1.8V)SDIO CMD(I/O)(0/1.8V)11
10PCM_SYNC/I2S WS (I/O)(0/1.8V)SDIO CLK/SYSCLK (O)(0/1.8V)9
8PCM_CLK/I2S SCK (I/O)(0/1.8V)GND7
6LED_1# (I)(OD)USB_D-5
43.3VUSB_D+3
23.3VGND1

補充說明

  • M.2 Socket 1 - Key E 常用在連接類應用上,例如 Wi-Fi / Bluetooth 模組。
  • PCIe_TX+/- 的 AC coupling 電容放在 COM 端,PCIe_RX+/- 的 AC coupling 電容放在 M.2 擴充卡端,所以 carrier board 不需要再補這些 AC coupling 電容。
  • CLKREQ# 用來啟用 PCIe reference clock,應接到 PCIe clock buffer 的 output enable 腳位。
  • 因為 CLKREQ# 是 M.2 擴充卡輸出的低有效、open-drain 訊號,所以 carrier board 端需要上拉電阻。

02 Socket 2 - Key B

Key B 常見於 SATA、PCIe SSD,或部分 WWAN 模組。這組 socket 的特色是有 CONFIG_0CONFIG_3 四個配置腳位,可以讓系統辨識卡片期望使用哪種 host interface。

Pinout Description

左 Pin 左訊號 右訊號 右 Pin
743.3 V/VBATCONFIG_275
723.3 V/VBATGND73
703.3 V/VBATGND71
68SUSCLK(32kHz) (O)(0/3.3V)CONFIG_169
66SIM DETECT (O)RESET# (O)(0/1.8V)67
64COEX_RXD (I)(0/1.8V)ANTCTL3 (I)(0/1.8V)65
62COEX_TXD (O)(0/1.8V)ANTCTL2 (I)(0/1.8V)63
60COEX3 (I/O)(0/1.8V)ANTCTL1 (I)(0/1.8V)61
58NCANTCTL0 (I)(0/1.8V)59
56NCGND57
54PEWAKE# (I/O)(0/3.3V)REFCLKp55
52CLKREQ# (I/O)(0/3.3V)REFCLKn53
50PERST# (O)(0/3.3V)GND51
48GPIO_4 (I/O)(0/1.8V)PETp0/SATA-A+49
46GPIO_3 (I/O)(0/1.8V)PETn0/SATA-A-47
44GPIO_2 (I/O)/ALERT# (I)/(0/1.8V)GND45
42GPIO_1 (I/O)/SMB_DATA (I/O)/(0/1.8V)PERp0/SATA-B-43
40GPIO_0 (I/O)/SMB_CLK (I/O)/(0/1.8V)PERn0/SATA-B+41
38DEVSLP (O)GND39
36UIM-PWR (I)PETp1/USB3.1-Tx+/SSIC-TxP37
34UIM-DATA (I/O)PETn1/USB3.1-Tx-/SSIC-TxN35
32UIM-CLK (I)GND33
30UIM-RESET (I)PERp1/USB3.1-Rx+/SSIC-RxP31
28GPIO_8 (I/O) (0/1.8V)PERn1/USB3.1-Rx-/SSIC-RxN29
26GPIO_10 (I/O) (0/1.8V)GND27
24GPIO_7 (I/O) (0/1.8V)DPR (O) (0/1.8V)25
22GPIO_6 (I/O)(0/1.8V)GPIO_11 (I/O) (0/1.8V)23
20GPIO_5 (I/O)(0/1.8V)CONFIG_021
Key BKey B
Key BKey B
Key BKey B
Key BGND11
10GPIO_9/DAS/DSS (I/O)/LED_1# (I)(0/3.3V)USB_D-9
8W_DISABLE1# (O)(0/3.3V)USB_D+7
6FULL_CARD_POWER_OFF# (O)(0/1.8V or 3.3V)GND5
43.3 VGND3
23.3 VCONFIG_31

Host Interface Configuration

原文指出,系統要讀取四個 CONFIG_X 腳位來辨識目前卡片選擇的 pinout / host interface。即使 M.2 卡尚未上電,系統也應該把這些配置腳位上拉到適當電源,確保仍可讀取狀態。

CONFIG_0 (Pin 21) CONFIG_1 (Pin 69) CONFIG_2 (Pin 75) CONFIG_3 (Pin 1) Host Interface
0 0 0 0 SSD - SATA
0 1 0 0 SSD - PCIe
0 0 1 0 WWAN - PCIe (Port Configuration 0*)
0 1 1 0 WWAN - PCIe (Port Configuration 1*)
0 0 0 1 WWAN - PCIe, USB3.1 Gen1 (Port Configuration 0*)
0 1 0 1 WWAN - PCIe, USB3.1 Gen1 (Port Configuration 1*)
0 0 1 1 WWAN - PCIe, USB3.1 Gen1 (Port Configuration 2*)
0 1 1 1 WWAN - PCIe, USB3.1 Gen1 (Port Configuration 3*)
1 0 0 0 WWAN - SSIC (Port Configuration 0*)
1 1 0 0 WWAN - SSIC (Port Configuration 1*)
1 0 1 0 WWAN - SSIC (Port Configuration 2*)
1 1 1 0 WWAN - SSIC (Port Configuration 3*)
1 0 0 1 WWAN - PCIe (Port Configuration 2*)
1 1 0 1 WWAN - PCIe (Port Configuration 3*)
1 0 1 1 WWAN - PCIe, USB3.1 Gen1 (vendor defined)
1 1 1 1 No Add-in Card Present

註:不同 Port Configuration 的細節,原文建議回查 PCI Express M.2 Specification。

補充說明

  • Socket 2 - Key B 常用來連接 PCIeSATA 型儲存裝置。
  • CONFIG_1 可以用來切換 host interface:
  • CONFIG_1 = Low 時啟用 SATA
  • CONFIG_1 = High 時啟用 PCIe
  • 第二條 PCIe lane 可支援像 Intel Optane 這類 PCIe x2 裝置;若要真的跑 x2,主機端的 PCIe lanes 也要配置成 PCIe x2 link
  • PCIe 模式啟用時,M.2 擴充卡上不會連接 CONFIG_1,因此 carrier board 端需要加上拉電阻。
  • 若這個 M.2 socket 接的是 SATA 儲存裝置,Pin 43 要接到 SATA Rx 差分對的負端。
  • 若這個 M.2 socket 接的是 PCIe 儲存裝置,Pin 43 要接到 PCIe Rx 差分對的正端。

03 Socket 3 - Key M

Key M 很常用來接 PCIeSATA 型儲存裝置,尤其是高頻寬 SSD。與 Key B 類似,這裡也有用來選擇 host interface 的訊號,不過改成 PEDET

Pinout Description

左 Pin 左訊號 右訊號 右 Pin
743.3 VGND75
723.3 VGND73
703.3 VGND71
68SUSCLK (O)(0/3.3V)PEDET69
Key MNC67
Key MKey M
Key MKey M
Key MKey M
Key MKey M
58NCGND57
56NCREFCLKp55
54PEWAKE# (I/O)(0/3.3V) or NCREFCLKn53
52CLKREQ# (I/O)(0/3.3V) or NCGND51
50PERST# (O)(0/3.3V) or NCPETp0/SATA-A+49
48NCPETn0/SATA-A-47
46NCGND45
44ALERT# (I) (0/1.8V)PERp0/SATA-B-43
42SMB_DATA (I/O) (0/1.8V)PERn0/SATA-B+41
40SMB_CLK (I/O)(0/1.8V)GND39
38DEVSLP (O)PETp137
36NCPETn135
34NCGND33
32NCPERp131
30NCPERn129
28NCGND27
26NCPETp225
24NCPETn223
22NCGND21
20NCPERp219
183.3 VPERn217
163.3 VGND15
143.3 VPETp313
123.3 VPETn311
10DAS/DSS (I/O)/LED_1# (I)(0/3.3V)GND9
8NCPERp37
6NCPERn35
43.3 VGND3
23.3 VGND1

補充說明

  • Socket 3 - Key M 常用來連接 PCIeSATA 型儲存裝置。
  • PEDET 用來選擇 host interface,而 M.2 卡會用不同接法表明模式:
  • PEDET = Low 代表啟用 SATA,也就是 M.2 卡把 PEDET 接到 GND
  • PEDET = High 代表啟用 PCIe,也就是 M.2 卡上不連接 PEDET
  • 若要拿到最高頻寬,四條 PCIe lanes 應配置成 x4 link
  • PCIe 模式啟用時,M.2 擴充卡不會連接 PEDET,因此 carrier board 端需要加上拉電阻。
  • 若這個 socket 接的是 SATA 儲存裝置,Pin 43 要接到 SATA Rx 差分對的負端。
  • 若這個 socket 接的是 PCIe 儲存裝置,Pin 43 要接到 PCIe Rx 差分對的正端。

04 快速整理

如果你只是想快速記住這篇內容的重點,可以先抓住下面幾件事:

  • Key E 主要偏向連接類模組,例如 Wi-Fi / Bluetooth。
  • Key B 常見於 SATA / PCIe SSD,也可能出現在 WWAN 類模組。
  • Key M 主要偏向高頻寬儲存用途,常見於 PCIe SSD。
  • Key B 透過 CONFIG_0 ~ CONFIG_3 辨識介面配置。
  • Key M 透過 PEDET 辨識 SATAPCIe
  • CLKREQ#CONFIG_1PEDET 這類訊號在某些模式下需要 carrier board 提供上拉。

如果後續要做 carrier board 或 socket 對接設計,建議還是把這篇整理與原始資料、PCI Express M.2 規範一起對照,尤其是 Port Configuration、PCIe lane 配置與 SATA/PCIe 共用腳位的部分。

參考內容

记录并分享
使用 Hugo 建立
主題 StackJimmy 設計