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 设计