Este artículo cubre principalmente tres interfaces M.2 muy comunes en sistemas embebidos:
Socket 1 - Key ESocket 2 - Key BSocket 3 - Key M
El documento original se basa en PCI Express M.2 Specification Revision 3.0, Version 1.2.
01 Socket 1 - Key E
Key E se usa habitualmente para módulos de conectividad, como tarjetas de expansión Wi-Fi / Bluetooth. El texto original señala que estas tarjetas suelen conectarse mediante PCIe y USB, mientras que el soporte de otros buses como SDIO e I2S depende de si el COM los soporta.
Pinout Description
| Left Pin | Left Signal | Right Signal | Right Pin |
|---|---|---|---|
| 74 | 3.3V | GND | 75 |
| 72 | 3.3V | RESERVED/REFCLKn1 | 73 |
| 70 | UIM_POWER_SRC/GPIO_1/PEWAKE1# | RESERVED/REFCLKp1 | 71 |
| 68 | UIM_POWER_SNK/CLKREQ1# | GND | 69 |
| 66 | UIM_SWP/PERST1# | RESERVED/PERn1 | 67 |
| 64 | RESERVED | RESERVED/PERp1 | 65 |
| 62 | ALERT# (I)(0/1.8 V) | GND | 63 |
| 60 | I2C_CLK (O)(0/1.8 V) | RESERVED/PETn1 | 61 |
| 58 | I2C_DATA (I/O)(0/1.8 V) | RESERVED/PETp1 | 59 |
| 56 | W_DISABLE1# (O)(0/3.3V) | GND | 57 |
| 54 | W_DISABLE2# (O)(0/3.3V) | PEWAKE0# (I/O)(0/3.3V) | 55 |
| 52 | PERST0# (O)(0/3.3V) | CLKREQ0# (I/O)(0/3.3V) | 53 |
| 50 | SUSCLK(32kHz) (O)(0/3.3V) | GND | 51 |
| 48 | COEX_TXD (O)(0/1.8V) | REFCLKn0 | 49 |
| 46 | COEX_RXD (I)(0/1.8V) | REFCLKp0 | 47 |
| 44 | COEX3 (I/O)(0/1.8V) | GND | 45 |
| 42 | VENDOR DEFINED | PERn0 | 43 |
| 40 | VENDOR DEFINED | PERp0 | 41 |
| 38 | VENDOR DEFINED | GND | 39 |
| 36 | UART RTS (O)(0/1.8V) | PETn0 | 37 |
| 34 | UART CTS (I)(0/1.8V) | PETp0 | 35 |
| 32 | UART TXD (O)(0/1.8V) | GND | 33 |
| Key E | Key E | ||
| Key E | Key E | ||
| Key E | Key E | ||
| Key E | SDIO RESET#/TX_BLANKING (O)(0/1.8V) | 23 | |
| 22 | UART RXD (I)(0/1.8V) | SDIO WAKE# (I)(0/1.8V) | 21 |
| 20 | UART WAKE# (I)(0/3.3V) | SDIO DATA3(I/O)(0/1.8V) | 19 |
| 18 | GND | SDIO DATA2(I/O)(0/1.8V) | 17 |
| 16 | LED_2# (I)(OD) | SDIO DATA1(I/O)(0/1.8V) | 15 |
| 14 | PCM_OUT/I2S SD_OUT (O)(0/1.8V) | SDIO DATA0(I/O)(0/1.8V) | 13 |
| 12 | PCM_IN/I2S SD_IN (I)(0/1.8V) | SDIO CMD(I/O)(0/1.8V) | 11 |
| 10 | PCM_SYNC/I2S WS (I/O)(0/1.8V) | SDIO CLK/SYSCLK (O)(0/1.8V) | 9 |
| 8 | PCM_CLK/I2S SCK (I/O)(0/1.8V) | GND | 7 |
| 6 | LED_1# (I)(OD) | USB_D- | 5 |
| 4 | 3.3V | USB_D+ | 3 |
| 2 | 3.3V | GND | 1 |
Notas
M.2 Socket 1 - Key Ese usa normalmente para conectividad, como módulos Wi-Fi / Bluetooth.- Los condensadores de acoplamiento AC para
PCIe_TX+/-se colocan en el lado COM, mientras que los dePCIe_RX+/-se colocan en la tarjeta M.2, por lo que la carrier board no necesita añadirlos otra vez. CLKREQ#se usa para habilitar el reloj de referencia PCIe y debería conectarse al pin de output enable del buffer de reloj PCIe.- Como
CLKREQ#es una señal open-drain activa en bajo controlada por la tarjeta M.2, el lado de la carrier board necesita una resistencia pull-up.
02 Socket 2 - Key B
Key B es común en SSDs SATA y PCIe, así como en algunos módulos WWAN. Una característica clave de este socket es el conjunto de cuatro pines de configuración, CONFIG_0 a CONFIG_3, que permiten al sistema identificar qué interfaz host espera usar la tarjeta.
Pinout Description
| Left Pin | Left Signal | Right Signal | Right Pin |
|---|---|---|---|
| 74 | 3.3 V/VBAT | CONFIG_2 | 75 |
| 72 | 3.3 V/VBAT | GND | 73 |
| 70 | 3.3 V/VBAT | GND | 71 |
| 68 | SUSCLK(32kHz) (O)(0/3.3V) | CONFIG_1 | 69 |
| 66 | SIM DETECT (O) | RESET# (O)(0/1.8V) | 67 |
| 64 | COEX_RXD (I)(0/1.8V) | ANTCTL3 (I)(0/1.8V) | 65 |
| 62 | COEX_TXD (O)(0/1.8V) | ANTCTL2 (I)(0/1.8V) | 63 |
| 60 | COEX3 (I/O)(0/1.8V) | ANTCTL1 (I)(0/1.8V) | 61 |
| 58 | NC | ANTCTL0 (I)(0/1.8V) | 59 |
| 56 | NC | GND | 57 |
| 54 | PEWAKE# (I/O)(0/3.3V) | REFCLKp | 55 |
| 52 | CLKREQ# (I/O)(0/3.3V) | REFCLKn | 53 |
| 50 | PERST# (O)(0/3.3V) | GND | 51 |
| 48 | GPIO_4 (I/O)(0/1.8V) | PETp0/SATA-A+ | 49 |
| 46 | GPIO_3 (I/O)(0/1.8V) | PETn0/SATA-A- | 47 |
| 44 | GPIO_2 (I/O)/ALERT# (I)/(0/1.8V) | GND | 45 |
| 42 | GPIO_1 (I/O)/SMB_DATA (I/O)/(0/1.8V) | PERp0/SATA-B- | 43 |
| 40 | GPIO_0 (I/O)/SMB_CLK (I/O)/(0/1.8V) | PERn0/SATA-B+ | 41 |
| 38 | DEVSLP (O) | GND | 39 |
| 36 | UIM-PWR (I) | PETp1/USB3.1-Tx+/SSIC-TxP | 37 |
| 34 | UIM-DATA (I/O) | PETn1/USB3.1-Tx-/SSIC-TxN | 35 |
| 32 | UIM-CLK (I) | GND | 33 |
| 30 | UIM-RESET (I) | PERp1/USB3.1-Rx+/SSIC-RxP | 31 |
| 28 | GPIO_8 (I/O) (0/1.8V) | PERn1/USB3.1-Rx-/SSIC-RxN | 29 |
| 26 | GPIO_10 (I/O) (0/1.8V) | GND | 27 |
| 24 | GPIO_7 (I/O) (0/1.8V) | DPR (O) (0/1.8V) | 25 |
| 22 | GPIO_6 (I/O)(0/1.8V) | GPIO_11 (I/O) (0/1.8V) | 23 |
| 20 | GPIO_5 (I/O)(0/1.8V) | CONFIG_0 | 21 |
| Key B | Key B | ||
| Key B | Key B | ||
| Key B | Key B | ||
| Key B | GND | 11 | |
| 10 | GPIO_9/DAS/DSS (I/O)/LED_1# (I)(0/3.3V) | USB_D- | 9 |
| 8 | W_DISABLE1# (O)(0/3.3V) | USB_D+ | 7 |
| 6 | FULL_CARD_POWER_OFF# (O)(0/1.8V or 3.3V) | GND | 5 |
| 4 | 3.3 V | GND | 3 |
| 2 | 3.3 V | CONFIG_3 | 1 |
Configuración de interfaz host
El texto original explica que el sistema debería leer los cuatro pines CONFIG_X para determinar el pinout / interfaz host seleccionado por la tarjeta instalada. Incluso cuando la tarjeta M.2 aún no tiene alimentación, el sistema debería mantener estos pines de configuración con pull-up al rail apropiado para poder leer su estado.
| 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 |
Nota: para los detalles de cada Port Configuration, el texto original sugiere volver a la especificación PCI Express M.2.
Notas
Socket 2 - Key Bse usa comúnmente para dispositivos de almacenamientoPCIeoSATA.CONFIG_1puede usarse para cambiar la interfaz host:CONFIG_1 = LowhabilitaSATACONFIG_1 = HighhabilitaPCIe- La segunda línea PCIe puede soportar dispositivos
PCIe x2como Intel Optane. Para funcionar realmente enx2, las líneas PCIe del host también deben configurarse como un enlacePCIe x2. - Cuando está habilitado el modo
PCIe, la tarjeta M.2 no conectaCONFIG_1, así que el lado de la carrier board necesita una resistencia pull-up. - Si este socket M.2 se usa con un dispositivo de almacenamiento
SATA,Pin 43debería conectarse al lado negativo del par diferencialSATA Rx. - Si este socket M.2 se usa con un dispositivo de almacenamiento
PCIe,Pin 43debería conectarse al lado positivo del par diferencialPCIe Rx.
03 Socket 3 - Key M
Key M se usa comúnmente para dispositivos de almacenamiento PCIe o SATA, especialmente SSDs de mayor ancho de banda. De forma similar a Key B, también tiene una señal para seleccionar la interfaz host, pero aquí esa señal es PEDET.
Pinout Description
| Left Pin | Left Signal | Right Signal | Right Pin |
|---|---|---|---|
| 74 | 3.3 V | GND | 75 |
| 72 | 3.3 V | GND | 73 |
| 70 | 3.3 V | GND | 71 |
| 68 | SUSCLK (O)(0/3.3V) | PEDET | 69 |
| Key M | NC | 67 | |
| Key M | Key M | ||
| Key M | Key M | ||
| Key M | Key M | ||
| Key M | Key M | ||
| 58 | NC | GND | 57 |
| 56 | NC | REFCLKp | 55 |
| 54 | PEWAKE# (I/O)(0/3.3V) or NC | REFCLKn | 53 |
| 52 | CLKREQ# (I/O)(0/3.3V) or NC | GND | 51 |
| 50 | PERST# (O)(0/3.3V) or NC | PETp0/SATA-A+ | 49 |
| 48 | NC | PETn0/SATA-A- | 47 |
| 46 | NC | GND | 45 |
| 44 | ALERT# (I) (0/1.8V) | PERp0/SATA-B- | 43 |
| 42 | SMB_DATA (I/O) (0/1.8V) | PERn0/SATA-B+ | 41 |
| 40 | SMB_CLK (I/O)(0/1.8V) | GND | 39 |
| 38 | DEVSLP (O) | PETp1 | 37 |
| 36 | NC | PETn1 | 35 |
| 34 | NC | GND | 33 |
| 32 | NC | PERp1 | 31 |
| 30 | NC | PERn1 | 29 |
| 28 | NC | GND | 27 |
| 26 | NC | PETp2 | 25 |
| 24 | NC | PETn2 | 23 |
| 22 | NC | GND | 21 |
| 20 | NC | PERp2 | 19 |
| 18 | 3.3 V | PERn2 | 17 |
| 16 | 3.3 V | GND | 15 |
| 14 | 3.3 V | PETp3 | 13 |
| 12 | 3.3 V | PETn3 | 11 |
| 10 | DAS/DSS (I/O)/LED_1# (I)(0/3.3V) | GND | 9 |
| 8 | NC | PERp3 | 7 |
| 6 | NC | PERn3 | 5 |
| 4 | 3.3 V | GND | 3 |
| 2 | 3.3 V | GND | 1 |
Notas
Socket 3 - Key Mse usa comúnmente para dispositivos de almacenamientoPCIeoSATA.PEDETse usa para seleccionar la interfaz host, y la tarjeta M.2 indica el modo según cómo esté cableada:PEDET = Lowsignifica queSATAestá habilitado, lo cual se hace conectandoPEDETaGNDen la tarjeta M.2PEDET = Highsignifica quePCIeestá habilitado, lo cual se hace dejandoPEDETsin conectar en la tarjeta M.2- Para máximo ancho de banda, las cuatro líneas PCIe deberían configurarse como un enlace
x4. - Cuando el modo
PCIeestá habilitado, la tarjeta M.2 no conectaPEDET, así que el lado de la carrier board necesita una resistencia pull-up. - Si este socket se usa con un dispositivo de almacenamiento
SATA,Pin 43debería conectarse al lado negativo del par diferencialSATA Rx. - Si este socket se usa con un dispositivo de almacenamiento
PCIe,Pin 43debería conectarse al lado positivo del par diferencialPCIe Rx.
04 Resumen rápido
Si solo quieres las conclusiones más rápidas de este artículo, estos son los puntos principales:
Key Eapunta principalmente a módulos de conectividad como Wi-Fi / Bluetooth.Key Bes común en SSDs SATA / PCIe y también puede aparecer en módulos WWAN.Key Mse usa principalmente para almacenamiento de mayor ancho de banda, especialmente SSDs PCIe.Key BusaCONFIG_0 ~ CONFIG_3para identificar la configuración de interfaz.Key MusaPEDETpara distinguir entreSATAyPCIe.- Señales como
CLKREQ#,CONFIG_1yPEDETnecesitan pull-ups en la carrier board en algunos modos.
Si planeas diseñar una carrier board o una interfaz de socket alrededor de estas definiciones, sigue siendo buena idea comparar este resumen con la fuente original y la especificación PCI Express M.2, especialmente para Port Configuration, mapeo de líneas PCIe y pines compartidos entre SATA y PCIe.