P2 from P1 migration guide
The Particle P2 module is the next generation Wi-Fi module from Particle. It is footprint compatible with our prior module, the P1, but is built on an upgraded chipset, supporting advanced features such as 5 GHz Wi-Fi, a 200MHz CPU, and built-in Bluetooth BLE 5.0.
Feature | P2 | P1 | Argon |
---|---|---|---|
User application size | 2048 KB (2 MB) | 128 KB | 256 KB |
Flash file system1 | 2 MB | 2 MB | |
MCU | RTL8721DM | STM32F205RGY6 | nRF52840 |
Realtek Semiconductor | ST Microelectronics | Nordic Semiconductor | |
CPU | Cortex M33 @ 200 MHz | Cortex M3 @ 120 MHz | Cortex M3 @ 64 MHz |
Cortex M23 @ 20 MHz | |||
RAM2 | 4608 KB | 128 KB | 256 KB |
Flash3 | 16 MB | 1 MB | 1 MB |
Hardware FPU | ✓ | ✓ | |
Secure Boot | ✓ | ||
Trust Zone | ✓ | ||
Wi-Fi | 802.11 a/b/g/n | 802.11 b/g/n | 802.11 b/g/n |
2.4 GHz | ✓ | ✓ | ✓ |
5 GHz | ✓ | ||
Bluetooth | BLE 5.0 | BLE 5.0 | |
NFC Tag | External antenna required | ||
Antenna | Shared for Wi-Fi and BLE | Wi-Fi only | Separate Wi-Fi and BLE antennas |
Built-in PCB antenna (Wi-Fi & BLE) | Built-in PCB antenna (Wi-Fi) | Built-in chip antenna (BLE) | |
Required external antenna (Wi-Fi) | |||
Optional external (Wi-Fi & BLE)4 | Optional external (Wi-Fi)4 | Optional external (BLE)4 | |
Peripherals | USB 2.0 | USB 1.1 | USB 1.1 |
Digital GPIO | 22 | 24 | 20 |
Analog (ADC) | 6 | 13 | 6 |
Analog (DAC) | 2 | ||
UART | 3 | 2 | 1 |
SPI | 2 | 2 | 2 |
PWM | 6 | 12 | 8 |
I2C | 1 | 1 | 1 |
CAN | 1 | ||
I2S | 1 | 1 | |
JTAG | ✓ | ||
SWD | ✓ | ✓ | ✓ |
1A small amount of the flash file system is used by Device OS, most is available for user data storage using the POSIX filesystem API. This is separate from the flash memory used for Device OS, user application, and OTA transfers.
2 Total RAM; amount available to user applications is smaller. On the P2, available RAM is approximately 3072 KB. On the P1, it is 55 KB.
3 Total built-in flash; amount available to user applications is smaller. The Argon also has a 4 MB external flash, a portion of which is available to user applications as a flash file system.
4 Onboard or external antenna is selectable in software.
Hardware
No 5V tolerance!
On Gen 2 devices (STM32F205), most pins are 5V tolerant. This is not the case for Gen 3 (nRF52840) and the P2 (RTL872x). You must not exceed 3.3V on any GPIO pin, including ports such as serial, I2C, and SPI.
Pins A3, A4, and DAC (A6)
Pins A3 (module pin 22), A4 (module pin 21), DAC/A6 (module pin 24) do not exist on the P2 and are NC.
You will need to use different pins if you are currently using these pins.
SPI
Both the P1 and P2 have two SPI ports, however the pins are different for SPI
(primary SPI).
P1 | P2 | |
---|---|---|
SPI SCK | A3 | D20 / S2 |
SPI MISO | A4 | D19 / S1 |
SPI MOSI | A5 | D18 / S0 |
The following are all SPI-related pins on the P1 and P2:
Pin | P1 Pin Name | P1 SPI | P2 Pin Name | P2 SPI |
---|---|---|---|---|
21 | A4 | SPI (MISO) | NC | |
22 | A3 | SPI (SCK) | NC | |
23 | A5 | SPI (MOSI) | A5 / D14 | |
40 | P1S0 | S0 / D15 | SPI (MOSI) | |
41 | P1S1 | S1 / D16 | SPI (MISO) | |
42 | P1S2 | S2 / D17 | SPI (SCK) | |
44 | P1S3 | S3 / D18 | SPI (SS) | |
45 | D2 | SPI1 (MOSI) | D2 | SPI1 (MOSI) |
49 | A2 | SPI (SS) | A2 / D13 | |
51 | D3 | SPI1 (MISO) | D3 | SPI1 (MISO) |
52 | D4 | SPI1 (SCK) | D4 | SPI1 (SCK) |
53 | D5 | SPI1 (SS) | D5 | SPI1 (SS) |
If you are using SPI, Device OS 5.3.1 or later is recommended. Prior to that version, SPI ran at half of the set speed, and SPI1 ran at double the set speed. Timing has also been improved for large DMA transfers; prior to 5.3.1, there could be 1 µs gaps for every 16 bytes of data transferred.
SPI - Gen 2 devices (including P1)
SPI | SPI1 | |
---|---|---|
Maximum rate | 30 MHz | 15 MHz |
Default rate | 15 MHz | 15 MHz |
Clock | 60 MHz | 30 MHz |
- Available clock divisors: 2, 4, 8, 16, 32, 64, 128, 256
SPI - P2
SPI | SPI1 | |
---|---|---|
Maximum rate | 25 MHz | 50 MHz |
Hardware peripheral | RTL872x SPI1 | RTL872x SPI0 |
I2C
The P2 supports one I2C (two-wire serial interface) port on the same pins as the P1:
Pin | P1 Pin Name | P1 I2C | P2 Pin Name | P2 I2C |
---|---|---|---|---|
35 | D1 | Wire (SCL) | D1 / A4 | Wire (SCL) |
36 | D0 | Wire (SDA) | D0 / A3 | Wire (SDA) |
- The P2 I2C port is not 5V tolerant
- The P1 includes internal 2.2K pull-up resistors on D0/D1, the P2 does not
- On the P2 and Photon 2, the only valid I2C clock speeds are
CLOCK_SPEED_100KHZ
andCLOCK_SPEED_400KHZ
. Other speeds are not supported at this time.
Serial (UART)
The primary UART serial (Serial1
) is on the TX and RX pins on both the P1 and P2. There is no hardware flow control on this port on the P1 or P2.
The secondary UART serial (Serial2
) is on different pins, however it does not conflict with the RGB LED, and also supports CTS/RTS hardware flow control.
There is also a third UART serial (Serial3
).
Pin | P1 Pin Name | P1 Serial | P2 Pin Name | P2 Serial |
---|---|---|---|---|
30 | WKP / A7 | D10 / WKP | Serial3 (CTS) | |
31 | RGBB | Serial2 (RX) | RGBB | |
32 | RGBG | Serial2 (TX) | RGBG | |
40 | P1S0 | S0 / D15 | Serial3 (TX) | |
41 | P1S1 | S1 / D16 | Serial3 (RX) | |
42 | P1S2 | S2 / D17 | Serial3 (RTS) | |
45 | D2 | D2 | Serial2 (RTS) | |
51 | D3 | D3 | Serial2 (CTS) | |
52 | D4 | D4 | Serial2 (TX) | |
53 | D5 | D5 | Serial2 (RX) | |
63 | RX | Serial1 (RX) | RX / D9 | Serial1 (RX) |
64 | TX | Serial1 (TX) | TX / D8 | Serial1 (TX) |
P1 | P2 | |
---|---|---|
Buffer size | 64 bytes | 2048 bytes |
7-bit mode | ✓ | ✓ |
8-bit mode | ✓ | ✓ |
9-bit mode | ✓ | |
1 stop bit | ✓ | ✓ |
2 stop bits | ✓ | ✓ |
No parity | ✓ | ✓ |
Even parity | ✓ | ✓ |
Odd parity | ✓ | ✓ |
Break detection | ✓ | |
LIN bus support | ✓ | |
Half duplex | ✓ | |
CTS/RTS flow control | ✓1 |
1CTS/RTS flow control only on Serial2. It is optional.
Supported Baud Rates:
Baud Rate | P1 | P2 |
---|---|---|
110 | ✓ | |
300 | ✓ | |
600 | ✓ | |
1200 | ✓ | ✓ |
2400 | ✓ | ✓ |
4800 | ✓ | ✓ |
9600 | ✓ | ✓ |
14400 | ✓ | |
19200 | ✓ | ✓ |
28800 | ✓ | |
38400 | ✓ | ✓ |
57600 | ✓ | ✓ |
76800 | ✓ | |
115200 | ✓ | ✓ |
128000 | ✓ | |
153600 | ✓ | |
230400 | ✓ | ✓ |
380400 | ✓ | |
460800 | ✓ | |
500000 | ✓ | |
921600 | ✓ | |
1000000 | ✓ | |
1382400 | ✓ | |
1444400 | ✓ | |
1500000 | ✓ | |
1843200 | ✓ | |
2000000 | ✓ | |
2100000 | ✓ | |
2764800 | ✓ | |
3000000 | ✓ | |
3250000 | ✓ | |
3692300 | ✓ | |
3750000 | ✓ | |
4000000 | ✓ | |
6000000 | ✓ |
Analog input (ADC)
For analog to digital conversion (ADC) using analogRead()
, there are fewer ADC inputs on the P2:
Pin | P1 Pin Name | P1 ADC | P2 Pin Name | P2 ADC |
---|---|---|---|---|
21 | A4 | ✓ | NC | |
22 | A3 | ✓ | NC | |
23 | A5 | ✓ | A5 / D14 | ✓ |
24 | DAC / A6 | ✓ | NC | |
30 | WKP / A7 | ✓ | D10 / WKP | |
35 | D1 | D1 / A4 | ✓ | |
36 | D0 | D0 / A3 | ✓ | |
40 | P1S0 | ✓ | S0 / D15 | |
41 | P1S1 | ✓ | S1 / D16 | |
42 | P1S2 | ✓ | S2 / D17 | |
43 | A1 | ✓ | A1 / D12 | ✓ |
44 | P1S3 | ✓ | S3 / D18 | |
48 | P1S5 | ✓ | S5 / D20 | |
49 | A2 | ✓ | A2 / D13 | ✓ |
50 | A0 | ✓ | A0 / D11 | ✓ |
On the P2, there are no pins A3 (hardware pin 21) and A4 (hardware pin 22); these are NC (no connection). However, P2 pin D0 (hardware pin 36) can be used as an analog input and has the alias A3. The same is true for P2 pin D1 (hardware pin 35), which has the alias A4.
The setADCSampleTime()
function is not supported on the P2.
PWM (Pulse-width modulation)
The pins that support PWM are different on the P1 and P2.
Pin | P1 Pin Name | P1 PWM | P2 Pin Name | P2 PWM |
---|---|---|---|---|
21 | A4 | ✓ | NC | |
23 | A5 | ✓ | A5 / D14 | ✓ |
30 | WKP / A7 | ✓ | D10 / WKP | |
33 | P1S6 | ✓ | S6 / D21 | |
35 | D1 | ✓ | D1 / A4 | ✓ |
36 | D0 | ✓ | D0 / A3 | |
40 | P1S0 | ✓ | S0 / D15 | ✓ |
41 | P1S1 | ✓ | S1 / D16 | ✓ |
45 | D2 | ✓ | D2 | |
49 | A2 | A2 / D13 | ✓ | |
51 | D3 | ✓ | D3 | |
63 | RX | ✓ | RX / D9 | |
64 | TX | ✓ | TX / D8 |
All available PWM pins on the P2 share a single timer. This means that they must all share a single frequency, but can have different duty cycles.
Digital to analog converter (DAC)
The P1 supports DAC one A3 and A6 (DAC). There is no DAC on the P2 or Gen 3 devices.
If you need a DAC, it's easy to add one via I2C or SPI on your base board.
Pin | P1 Pin Name | P1 DAC | P2 Pin Name | P2 DAC |
---|---|---|---|---|
22 | A3 | ✓ | NC | |
24 | DAC / A6 | ✓ | NC |
WKP (A7)
P1 | P2 | |
---|---|---|
Module Pin | 30 | 30 |
Pin Name | WKP | WKP |
A7 | D11 | |
Analog Input | ✓ | |
PWM | ✓ |
On Gen 2 devices (STM32), only the WKP pin can wake from HIBERNATE sleep mode.
This restriction does not exist on the P2 and Gen 3 devices; any pin can be used to wake from all sleep modes.
CAN (controller area network)
The P1 supports CAN on pins D1 and D2. There is no CAN on the P2 or Gen 3 devices (except the Tracker).
- The Tracker SoM includes CAN via a MCP25625 CAN interface with integrated transceiver.
- Both the MCP2515 and MCP25625 work with the library used on the Tracker and can be used to add CAN to the P2.
Pin | P1 Pin Name | P1 CAN | P2 Pin Name | P2 CAN |
---|---|---|---|---|
35 | D1 | ✓ | D1 / A4 | |
45 | D2 | ✓ | D2 |
I2S (Sound)
The P1 theoretically had I2S sound available on pins D1 and D2, however there has never been support for it in Device OS.
There is no software support for I2S on the P2 either, and while the RTL872x hardware supports I2S, the pins that it requires are in use by other ports.
Pin | P1 Pin Name | P1 I2S | P2 Pin Name | P2 I2S |
---|---|---|---|---|
33 | P1S6 | S6 / D21 | I2S WS | |
40 | P1S0 | S0 / D15 | I2S MCLK | |
44 | P1S3 | S3 / D18 | I2S TX | |
45 | D2 | I2S3_SD | D2 | |
46 | MODE | I2S3_MCK | MODE | |
47 | P1S4 | S4 / D19 | I2S RX | |
48 | P1S5 | S5 / D20 | I2S CLK | |
52 | D4 | I2S3_SCK | D4 | |
53 | D5 | I2S3_WS | D5 |
BLE (Bluetooth LE)
BLE Central Mode on the P2 and Photon 2 is only supported in Device OS 5.1.0 and later. Earlier versions only supported BLE Peripheral Mode.
Sleep
The P2 can wake from STOP
or ULTRA_LOW_POWER
sleep mode on any GPIO, RISING
, FALLING
, or CHANGE
.
The P2 can only wake from HIBERNATE
sleep mode on certain pins, RISING
, FALLING
, or CHANGE
.
Pin D10 WKP
is the same module pin location (pin 30) as the P1 WKP (A7) pin, and the STM32 can only wake from HIBERNATE
on WKP
RISING
so this should not be an issue.
Pin | Pin Name | Description | Interface | MCU |
---|---|---|---|---|
30 | D10 / WKP | D10 GPIO, Serial 3 CTS, WKP. (Was WKP/A7 on P1.) | Pin can wake from HIBERNATE sleep | PA[15] |
33 | S6 / D21 | S6 GPIO, I2S WS. (Was P1S6/TESTMODE on P1.) | No internal pull up or pull down in HIBERNATE sleep mode. | PB[31] |
40 | S0 / D15 | S0 GPIO, PWM, SPI MOSI, Serial3 TX, I2S MCLK. (Was P1S0 on P1.) | Pin can wake from HIBERNATE sleep | PA[12] |
41 | S1 / D16 | S1 GPIO, PWM, SPI MISO, Serial3 RX. (Was P1S1 on P1.) | Pin can wake from HIBERNATE sleep | PA[13] |
42 | S2 / D17 | S2 GPIO, SPI SCK, Serial3 RTS. (Was P1S2 on P1.) | Pin can wake from HIBERNATE sleep | PA[14] |
45 | D2 | D2 GPIO, Serial2 RTS, SPI1 MOSI | Pin can wake from HIBERNATE sleep | PA[16] |
47 | S4 / D19 | S4 GPIO, I2S RX. (Was P1S4 on P1.) | No internal pull up or pull down in HIBERNATE sleep mode. | PA[0] |
51 | D3 | D3 GPIO, Serial2 CTS, SPI1 MISO | Pin can wake from HIBERNATE sleep | PA[17] |
52 | D4 | D4 GPIO, Serial2 TX, SPI1 SCK | Pin can wake from HIBERNATE sleep | PA[18] |
53 | D5 | D5 GPIO, Serial2 RX, SPI1 SS | Pin can wake from HIBERNATE sleep | PA[19] |
Internal pull-up or pull-down
Internal (MCU) pull-up and pull-down can be enabled using the pinMode()
function and INPUT_PULLUP
or INPUT_PULLDOWN
.
- On the P2, the internal pull varies by pin and can be approximately 2.1K, 22K, or 42K.
- On the P1, the internal pull is approximately 40K.
MODE button
The P2 MODE button does not have a hardware pull-up on it, so you must add an external pull-up (2.2K to 10K) to 3V3, or connect it to 3V3 if not using a button.
The P1 had an internal weak pull-up.
Boot mode pins
These pins have a special function at boot. Beware when using these pins as input as they can trigger special modes in the MCU.
Pin | Pin Name | Description | MCU |
---|---|---|---|
54 | D7 | SWDIO. 40K pull-up at boot. Low at boot triggers MCU test mode. | PA[27] |
55 | D6 | SWCLK. 40K pull-down at boot. | PB[3] |
64 | TX / D8 | Low at boot triggers ISP flash download | PA[7] |
Interrupts
There are many limitations for interrupts on the STM32F205. All pins can be used for interrupts on Gen 3 devices and the P2.
Internal pull-up or pull-down
Internal (MCU) pull-up and pull-down can be enabled using the pinMode()
function and INPUT_PULLUP
or INPUT_PULLDOWN
.
- On the P2, the internal pull varies by pin and can be approximately 2.1K, 22K, or 42K.
- Pins A0, A1, D2, D3, D4, D5, D10, S0, S1, S2 are 2.1K
- Pins D0, D1, S4, S5, S6 are 22K
- Pins A2, A5, D6, TX, RX are 42K
- Pins S4, S5, S6 do not support pull-up or pull-down in HIBERNATE sleep mode. Use an external pull resistor if this is required.
- On the P1, the internal pull is approximately 40K.
- The P1 module has 2.1K pull-ups on D0 and D1 (I2C), separate from the MCU pull-ups. The P2 does not have extra hardware pull-ups.
Retained memory
The P2 and Photon 2 have limited support for retained memory, also referred to as Backup RAM or SRAM, in Device OS 5.3.1 and later.
Retained memory is preserved on RTL872x devices in the following cases:
Case | Saved |
---|---|
When entering sleep modes | 5.3.1 and later |
OTA firmware updates | 5.3.1 and later |
System.backupRamSync() |
5.3.1 and later |
System.reset() |
Not saved |
Reset button or reset pin | Not saved |
Every 10 seconds | 5.3.1 to 5.8.0 only |
Calling System.backupRamSync()
will manually save the contents of retained memory to a dedicated flash page on the RTL872x processor and will be restored after the device is reset. You should avoid saving the data extremely frequently as it is slower than RAM and will cause flash wear and is relatively slow to execute.
Prior to Device OS 5.3.1, retained memory is not supported on RTL872x devices. The flash file system can be used, or you can use an external chip such as an I2C or SPI FRAM.
Retained memory is 3068 bytes.
Flash file system
The P1 did not have a flash file system.
The P2 has a 2 MB flash file system using the same POSIX API as Gen 3 devices. A small amount of space is reserved for system use including configuration data. Most of the space is available for user application use.
EEPROM
The EEPROM emulation API is the same across the P1 and P2.
The P1 had 2047 bytes of emulated EEPROM. The P2 has 4096 bytes of emulated EEPROM. On the P2 and Gen 3 devices, the EEPROM is actually just a file on the flash file system.
Pin functions removed
The following pins served P1-specific uses and are NC on the P2. You should not connect anything to these pins.
Pin | Pin Name | Description |
---|---|---|
7 | WL_REG_ON | BCM43362 Debugging Pin. |
16 | WL_JTAG_TDI | BCM43362 Debugging Pin. |
17 | WL_JTAG_TCK | BCM43362 Debugging Pin. |
18 | WL_JTAG_TRSTN | BCM43362 Debugging Pin. |
19 | WL_JTAG_TMS | BCM43362 Debugging Pin. |
20 | WL_JTAG_TDO | BCM43362 Debugging Pin. |
21 | A4 | A4 Analog in, GPIO, SPI. |
22 | A3 | A3 True analog out, analog in, GPIO. |
24 | DAC / A6 | DAC/A6 True analog out, analog in, GPIO. |
38 | VBAT | Battery for internal real-time clock, backup registers, and SRAM. Supply 1.65VDC to 3.6 VDC at 19 μA.. |
56 | BTCX_STATUS | Coexistence signal: Bluetooth status and TX/RX direction. |
57 | BTCX_RF_ACTIVE | Coexistence signal: Bluetooth is active. |
58 | BTCX_TXCONF | Output giving Bluetooth permission to TX. |
60 | WL_SLEEP_CLK | BCM43362 Debugging Pin |
Pin functions added
The following pins were NC on the P1 but are used on the P2.
Pin | Pin Name | Description |
---|---|---|
12 | VBAT_MEAS | Battery voltage measurement (optional). |
Full module pin comparison
Module Pin 1 (GND)
Unchanged between P1 and P2 | |
---|---|
Pin Name | GND |
Description | Ground. Be sure you connect all P1 ground pins. |
Module Pin 2 (VBAT_WL / 3V3_RF)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | VBAT_WL | 3V3_RF |
∆ | Description | Battery for BCM43362. | 3.3V power to RF module |
Module Pin 3 (VBAT_WL / 3V3_RF)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | VBAT_WL | 3V3_RF |
∆ | Description | Battery for BCM43362. | 3.3V power to RF module |
Module Pin 4 (GND)
Unchanged between P1 and P2 | |
---|---|
Pin Name | GND |
Description | Ground. Be sure you connect all P1 ground pins. |
Module Pin 5 (VDDIO_3V3_WL / 3V3_IO)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | VDDIO_3V3_WL | 3V3_IO |
∆ | Description | Regulated 3.3V DC power input for BCM43362. | 3.3V power to MCU IO. |
Module Pin 6 (GND)
Unchanged between P1 and P2 | |
---|---|
Pin Name | GND |
Description | Ground. Be sure you connect all P1 ground pins. |
Module Pin 7 (WL_REG_ON / NC)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | WL_REG_ON | NC |
∆ | Description | BCM43362 Debugging Pin. | No connection. Do not connect anything to this pin. |
Module Pin 8 (NC)
Unchanged between P1 and P2 | |
---|---|
Pin Name | NC |
Description | No connection. Do not connect anything to this pin. |
Module Pin 9 (NC)
Unchanged between P1 and P2 | |
---|---|
Pin Name | NC |
Description | No connection. Do not connect anything to this pin. |
Module Pin 10 (NC)
Unchanged between P1 and P2 | |
---|---|
Pin Name | NC |
Description | No connection. Do not connect anything to this pin. |
Module Pin 11 (NC)
Unchanged between P1 and P2 | |
---|---|
Pin Name | NC |
Description | No connection. Do not connect anything to this pin. |
Module Pin 12 (NC / VBAT_MEAS)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | NC | VBAT_MEAS |
∆ | Description | No connection. Do not connect anything to this pin. | Battery voltage measurement (optional). |
∆ | Input is 5V Tolerant | n/a | Yes |
Module Pin 13 (GND)
Unchanged between P1 and P2 | |
---|---|
Pin Name | GND |
Description | Ground. Be sure you connect all P1 ground pins. |
Module Pin 14 (NC)
Unchanged between P1 and P2 | |
---|---|
Pin Name | NC |
Description | No connection. Do not connect anything to this pin. |
Module Pin 15 (GND)
Unchanged between P1 and P2 | |
---|---|
Pin Name | GND |
Description | Ground. Be sure you connect all P1 ground pins. |
Module Pin 16 (WL_JTAG_TDI / NC)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | WL_JTAG_TDI | NC |
∆ | Description | BCM43362 Debugging Pin. | No connection. Do not connect anything to this pin. |
Module Pin 17 (WL_JTAG_TCK / NC)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | WL_JTAG_TCK | NC |
∆ | Description | BCM43362 Debugging Pin. | No connection. Do not connect anything to this pin. |
Module Pin 18 (WL_JTAG_TRSTN / NC)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | WL_JTAG_TRSTN | NC |
∆ | Description | BCM43362 Debugging Pin. | No connection. Do not connect anything to this pin. |
Module Pin 19 (WL_JTAG_TMS / NC)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | WL_JTAG_TMS | NC |
∆ | Description | BCM43362 Debugging Pin. | No connection. Do not connect anything to this pin. |
Module Pin 20 (WL_JTAG_TDO / NC)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | WL_JTAG_TDO | NC |
∆ | Description | BCM43362 Debugging Pin. | No connection. Do not connect anything to this pin. |
Module Pin 21 (A4 / NC)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | A4 | NC |
∆ | Description | A4 Analog in, GPIO, SPI. | No connection. Do not connect anything to this pin. |
∆ | Supports digitalRead | Yes | n/a |
∆ | Supports digitalWrite | Yes | n/a |
∆ | Supports analogRead | Yes | n/a |
∆ | Supports analogWrite (PWM) | Yes. D3 and A4 share the same PWM channel and the PWM duty cycle is set for both. | n/a |
∆ | Supports tone | Yes. D3 and A4 share the same PWM channel and only one frequency can be set for both. | n/a |
∆ | SPI interface | MISO. Use SPI object. | n/a |
∆ | Supports attachInterrupt | Yes. D1 and A4 share the same interrupt handler. | n/a |
∆ | Internal pull resistance | 40K | n/a |
∆ | Input is 5V Tolerant | Yes | n/a |
Module Pin 22 (A3 / NC)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | A3 | NC |
∆ | Description | A3 True analog out, analog in, GPIO. | No connection. Do not connect anything to this pin. |
∆ | Supports digitalRead | Yes | n/a |
∆ | Supports digitalWrite | Yes | n/a |
∆ | Supports analogRead | Yes | n/a |
∆ | Supports analogWrite (DAC) | Yes | n/a |
∆ | SPI interface | SCK. Use SPI object. | n/a |
∆ | Supports attachInterrupt | Yes. D2, A0, and A3 share the same interrupt handler. | n/a |
∆ | Internal pull resistance | 40K | n/a |
Module Pin 23 (A5)
P1 | P2 | ||
---|---|---|---|
Pin Name | A5 | A5 | |
∆ | Pin Alternate Name | n/a | D14 |
∆ | Description | A5 Analog in, GPIO, SPI. | A5 Analog in, GPIO, PWM. |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
Supports analogRead | Yes | Yes | |
∆ | Supports analogWrite (PWM) | Yes. D2 and A5 share the same PWM channel and the PWM duty cycle is set for both. | Yes |
∆ | Supports tone | Yes. D2 and A5 share the same PWM channel and only one frequency can be set for both. | Yes |
∆ | SPI interface | MOSI. Use SPI object. | n/a |
∆ | Supports attachInterrupt | No | Yes |
∆ | Internal pull resistance | 40K | 42K |
∆ | Input is 5V Tolerant | Yes | No |
Module Pin 24 (DAC / NC)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | DAC | NC |
∆ | Pin Alternate Name | A6 | n/a |
∆ | Description | DAC/A6 True analog out, analog in, GPIO. | No connection. Do not connect anything to this pin. |
∆ | Supports digitalRead | Yes | n/a |
∆ | Supports digitalWrite | Yes | n/a |
∆ | Supports analogRead | Yes | n/a |
∆ | Supports analogWrite (DAC) | Yes | n/a |
∆ | Supports attachInterrupt | Yes. D3, DAC/A6, and P1S3 share the same interrupt handler. | n/a |
∆ | Internal pull resistance | 40K | n/a |
Module Pin 25 (GND)
Unchanged between P1 and P2 | |
---|---|
Pin Name | GND |
Description | Ground. Be sure you connect all P1 ground pins. |
Module Pin 26 (3V3)
Unchanged between P1 and P2 | |
---|---|
Pin Name | 3V3 |
Description | 3.3V power to MCU |
Module Pin 27 (3V3)
Unchanged between P1 and P2 | |
---|---|
Pin Name | 3V3 |
Description | 3.3V power to MCU |
Module Pin 28 (GND)
Unchanged between P1 and P2 | |
---|---|
Pin Name | GND |
Description | Ground. Be sure you connect all P1 ground pins. |
Module Pin 29 (RGBR)
P1 | P2 | ||
---|---|---|---|
Pin Name | RGBR | RGBR | |
∆ | Description | RGB LED Red | RGB LED Red. Has 10K hardware pull-up. Do not hold low at boot. |
∆ | Supports attachInterrupt | n/a | Yes |
∆ | Input is 5V Tolerant | No, if LED is connected. | No |
Module Pin 30 (WKP / D10)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | WKP | D10 |
∆ | Pin Alternate Name | A7 | WKP |
∆ | Description | WKP/A7 Wakeup (active high), analog in, GPIO. | D10 GPIO, Serial 3 CTS, WKP. (Was WKP/A7 on P1.) |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
∆ | Supports analogRead | Yes | n/a |
∆ | Supports analogWrite (PWM) | Yes | No |
∆ | Supports tone | Yes | No |
∆ | UART serial | n/a | CTS. Use Serial3 object. Flow control optional. |
∆ | Supports attachInterrupt | Yes. WKP/A7, P1S0, and P1S2 share the same interrupt handler. | Yes |
∆ | Internal pull resistance | 40K | 2.1K |
∆ | Input is 5V Tolerant | Yes | No |
Module Pin 31 (RGBB)
P1 | P2 | ||
---|---|---|---|
Pin Name | RGBB | RGBB | |
Description | RGB LED Blue | RGB LED Blue | |
∆ | UART serial | RX. Use Serial2 object. | n/a |
∆ | Supports attachInterrupt | n/a | Yes |
∆ | Input is 5V Tolerant | No, if LED is connected. | No |
Module Pin 32 (RGBG)
P1 | P2 | ||
---|---|---|---|
Pin Name | RGBG | RGBG | |
Description | RGB LED Green | RGB LED Green | |
∆ | UART serial | TX. Use Serial2 object. | n/a |
∆ | Supports attachInterrupt | n/a | Yes |
∆ | Input is 5V Tolerant | No, if LED is connected. | No |
Module Pin 33 (P1S6 / S6)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | P1S6 | S6 |
∆ | Pin Alternate Name | n/a | D21 |
∆ | Description | P1S6 GPIO | S6 GPIO, I2S WS. (Was P1S6/TESTMODE on P1.) |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
∆ | Supports analogWrite (PWM) | Yes | No |
∆ | Supports tone | Yes | No |
Supports attachInterrupt | Yes | Yes | |
∆ | I2S interface | n/a | I2S WS |
∆ | Internal pull resistance | 40K | 22K. No internal pull up or pull down in HIBERNATE sleep mode. |
Module Pin 34 (RST)
Unchanged between P1 and P2 | |
---|---|
Pin Name | RST |
Description | Hardware reset. Pull low to reset; can leave unconnected in normal operation. |
Module Pin 35 (D1)
P1 | P2 | ||
---|---|---|---|
Pin Name | D1 | D1 | |
∆ | Pin Alternate Name | n/a | A4 |
∆ | Description | D1 GPIO, I2C, CAN | D1 GPIO, PWM, I2C SCL, A4 Analog In |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
∆ | Supports analogRead | No | Yes |
Supports analogWrite (PWM) | Yes | Yes | |
Supports tone | Yes | Yes | |
∆ | I2C interface | SCL. Use Wire object. There is a 2.1K hardware pull-up on the P1 module. Is 5V tolerant. | SCL. Use Wire object. Use 1.5K to 10K external pull-up resistor. |
∆ | Supports attachInterrupt | Yes. D1 and A4 share the same interrupt handler. | Yes |
∆ | CAN interface | CAN2_TX | n/a |
∆ | Internal pull resistance | 40K | 22K |
∆ | Input is 5V Tolerant | Yes | No |
Module Pin 36 (D0)
P1 | P2 | ||
---|---|---|---|
Pin Name | D0 | D0 | |
∆ | Pin Alternate Name | n/a | A3 |
∆ | Description | D0 GPIO, I2C | D0 GPIO, I2C SDA, A3 Analog In |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
∆ | Supports analogRead | No | Yes |
∆ | Supports analogWrite (PWM) | Yes | No |
∆ | Supports tone | Yes | No |
∆ | I2C interface | SDA. Use Wire object. There is a 2.1K hardware pull-up on the P1 module. Is 5V tolerant. | SDA. Use Wire object. Use 1.5K to 10K external pull-up resistor. |
∆ | Supports attachInterrupt | No | Yes |
∆ | Internal pull resistance | 40K | 22K |
∆ | Input is 5V Tolerant | Yes | No |
Module Pin 37 (GND)
Unchanged between P1 and P2 | |
---|---|
Pin Name | GND |
Description | Ground. Be sure you connect all P1 ground pins. |
Module Pin 38 (VBAT / NC)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | VBAT | NC |
∆ | Description | Battery for internal real-time clock, backup registers, and SRAM. Supply 1.65VDC to 3.6 VDC at 19 μA.. | No connection. Do not connect anything to this pin. |
Module Pin 39 (GND)
Unchanged between P1 and P2 | |
---|---|
Pin Name | GND |
Description | Ground. Be sure you connect all P1 ground pins. |
Module Pin 40 (P1S0 / S0)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | P1S0 | S0 |
∆ | Pin Alternate Name | n/a | D15 |
∆ | Description | P1S0 Analog in, GPIO, PWM. | S0 GPIO, PWM, SPI MOSI, Serial3 TX, I2S MCLK. (Was P1S0 on P1.) |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
∆ | Supports analogRead | Yes | No |
Supports analogWrite (PWM) | Yes | Yes | |
∆ | Supports tone | Yes. | Yes |
∆ | UART serial | n/a | TX. Use Serial3 object. |
∆ | SPI interface | n/a | MOSI. Use SPI object. |
∆ | Supports attachInterrupt | Yes. WKP/A7, P1S0, and P1S2 share the same interrupt handler. | Yes |
∆ | I2S interface | n/a | I2S MCLK |
∆ | Internal pull resistance | 40K | 2.1K |
∆ | Input is 5V Tolerant | Yes | No |
Module Pin 41 (P1S1 / S1)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | P1S1 | S1 |
∆ | Pin Alternate Name | n/a | D16 |
∆ | Description | P1S1 Analog in, GPIO, PWM. | S1 GPIO, PWM, SPI MISO, Serial3 RX. (Was P1S1 on P1.) |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
∆ | Supports analogRead | Yes | No |
Supports analogWrite (PWM) | Yes | Yes | |
∆ | Supports tone | Yes. | Yes |
∆ | UART serial | n/a | RX. Use Serial3 object. |
∆ | SPI interface | n/a | MISO. Use SPI object. |
∆ | Supports attachInterrupt | Yes. P1S1 and P1S5 share the same interrupt handler. | Yes |
∆ | Internal pull resistance | 40K | 2.1K |
∆ | Input is 5V Tolerant | Yes | No |
Module Pin 42 (P1S2 / S2)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | P1S2 | S2 |
∆ | Pin Alternate Name | n/a | D17 |
∆ | Description | P1S2 Analog in, GPIO | S2 GPIO, SPI SCK, Serial3 RTS. (Was P1S2 on P1.) |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
∆ | Supports analogRead | Yes | No |
∆ | UART serial | n/a | RTS. Use Serial3 object. Flow control optional. |
∆ | SPI interface | n/a | SCK. Use SPI object. |
∆ | Supports attachInterrupt | Yes. WKP/A7, P1S0, and P1S2 share the same interrupt handler. | Yes |
∆ | Internal pull resistance | 40K | 2.1K |
∆ | Input is 5V Tolerant | Yes | No |
Module Pin 43 (A1)
P1 | P2 | ||
---|---|---|---|
Pin Name | A1 | A1 | |
∆ | Pin Alternate Name | n/a | D12 |
∆ | Description | A1 Analog in, GPIO | A1 Analog in, PDM DAT, GPIO |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
Supports analogRead | Yes | Yes | |
∆ | Supports attachInterrupt | Yes. D4 and A1 share the same interrupt handler. | Yes |
∆ | Internal pull resistance | 40K | 2.1K |
∆ | Input is 5V Tolerant | Yes | No |
Module Pin 44 (P1S3 / S3)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | P1S3 | S3 |
∆ | Pin Alternate Name | n/a | D18 |
∆ | Description | P1S3 Analog in, GPIO | S3 GPIO, I2S TX. (Was P1S3 on P1.), SPI SS |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
∆ | Supports analogRead | Yes | No |
∆ | SPI interface | n/a | Default SS for SPI. |
∆ | Supports attachInterrupt | Yes. D3, DAC/A6, and P1S3 share the same interrupt handler. | Yes |
∆ | I2S interface | n/a | I2S TX |
∆ | Internal pull resistance | 40K | 2.1K |
∆ | Input is 5V Tolerant | Yes | No |
Module Pin 45 (D2)
P1 | P2 | ||
---|---|---|---|
Pin Name | D2 | D2 | |
∆ | Description | D2 GPIO, SPI1, CAN | D2 GPIO, Serial2 RTS, SPI1 MOSI |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
∆ | Supports analogWrite (PWM) | Yes. D2 and A5 share the same PWM channel and the PWM duty cycle is set for both. | No |
∆ | Supports tone | Yes. D2 and A5 share the same PWM channel and only one frequency can be set for both. | No |
∆ | UART serial | n/a | RTS. Use Serial2 object. Flow control optional. |
SPI interface | MOSI. Use SPI1 object. | MOSI. Use SPI1 object. | |
∆ | Supports attachInterrupt | Yes. D2, A0, and A3 share the same interrupt handler. | Yes |
∆ | CAN interface | CAN2_RX | n/a |
∆ | I2S interface | I2S3_SD | n/a |
∆ | Internal pull resistance | 40K | 2.1K |
∆ | Input is 5V Tolerant | Yes | No |
Module Pin 46 (MODE)
P1 | P2 | ||
---|---|---|---|
Pin Name | MODE | MODE | |
∆ | Description | MODE button, has internal pull-up. Pin number constant is BTN. | MODE button. Pin number constant is BTN. External pull-up required! |
∆ | Supports attachInterrupt | n/a | Yes |
∆ | I2S interface | I2S3_MCK | n/a |
Module Pin 47 (P1S4 / S4)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | P1S4 | S4 |
∆ | Pin Alternate Name | n/a | D19 |
∆ | Description | P1S4 GPIO | S4 GPIO, I2S RX. (Was P1S4 on P1.) |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
∆ | Supports attachInterrupt | Yes. D7 and P1S4 share the same interrupt handler. | Yes |
∆ | I2S interface | n/a | I2S RX |
∆ | Internal pull resistance | 40K | 22K. No internal pull up or pull down in HIBERNATE sleep mode. |
∆ | Input is 5V Tolerant | Yes | No |
Module Pin 48 (P1S5 / S5)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | P1S5 | S5 |
∆ | Pin Alternate Name | n/a | D20 |
∆ | Description | P1S5 Analog in, GPIO | S5 GPIO, I2S CLK. (Was P1S5 on P1.) |
∆ | Supports digitalRead | Yes | No |
Supports digitalWrite | Yes | Yes | |
∆ | Supports analogRead | Yes | No |
∆ | Supports attachInterrupt | Yes. P1S1 and P1S5 share the same interrupt handler. | Yes |
∆ | I2S interface | n/a | I2S CLK |
∆ | Internal pull resistance | 40K | 22K. No internal pull up or pull down in HIBERNATE sleep mode |
∆ | Input is 5V Tolerant | Yes | No |
Module Pin 49 (A2)
P1 | P2 | ||
---|---|---|---|
Pin Name | A2 | A2 | |
∆ | Pin Alternate Name | n/a | D13 |
∆ | Description | A2 Analog in, GPIO, SPI SS | A2 Analog in, PWM, GPIO |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
Supports analogRead | Yes | Yes | |
∆ | Supports analogWrite (PWM) | No | Yes |
∆ | Supports tone | No | Yes |
∆ | SPI interface | SS. Use SPI object. This is only the default SS/CS pin, you can use any GPIO instead. | n/a |
Supports attachInterrupt | Yes | Yes | |
∆ | Internal pull resistance | 40K | 42K |
∆ | Input is 5V Tolerant | Yes | No |
Module Pin 50 (A0)
P1 | P2 | ||
---|---|---|---|
Pin Name | A0 | A0 | |
∆ | Pin Alternate Name | n/a | D11 |
∆ | Description | A0 Analog in, GPIO | A0 Analog in, PDM CLK, GPIO |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
Supports analogRead | Yes | Yes | |
∆ | Supports attachInterrupt | Yes. D2, A0, and A3 share the same interrupt handler. | Yes |
∆ | Internal pull resistance | 40K | 2.1K |
∆ | Input is 5V Tolerant | Yes | No |
Module Pin 51 (D3)
P1 | P2 | ||
---|---|---|---|
Pin Name | D3 | D3 | |
∆ | Description | D3 GPIO, SPI1 | D3 GPIO, Serial2 CTS, SPI1 MISO |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
∆ | Supports analogWrite (PWM) | Yes. D3 and A4 share the same PWM channel and the PWM duty cycle is set for both. | No |
∆ | Supports tone | Yes. D3 and A4 share the same PWM channel and only one frequency can be set for both. | No |
∆ | UART serial | n/a | CTS. Use Serial2 object. Flow control optional. |
SPI interface | MISO. Use SPI1 object. | MISO. Use SPI1 object. | |
∆ | Supports attachInterrupt | Yes. D3, DAC/A6, and P1S3 share the same interrupt handler. | Yes |
∆ | Internal pull resistance | 40K. Pull-up applied in bootloader for JTAG. | 2.1K |
∆ | Input is 5V Tolerant | Yes | No |
∆ | JTAG interface | JTAG RST. 40K pull-up at boot. | n/a |
∆ | Signal used at boot | JTAG RST. 40K pull-up at boot. | n/a |
Module Pin 52 (D4)
P1 | P2 | ||
---|---|---|---|
Pin Name | D4 | D4 | |
∆ | Description | D4 GPIO, SPI1 | D4 GPIO, Serial2 TX, SPI1 SCK |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
∆ | UART serial | n/a | TX. Use Serial2 object. |
SPI interface | SCK. Use SPI1 object. | SCK. Use SPI1 object. | |
∆ | Supports attachInterrupt | Yes. D4 and A1 share the same interrupt handler. | Yes |
∆ | I2S interface | I2S3_SCK | n/a |
∆ | Internal pull resistance | 40K | 2.1K |
∆ | Input is 5V Tolerant | Yes | No |
∆ | JTAG interface | JTAG TDO. Floating at boot. | n/a |
∆ | Signal used at boot | JTAG TDO. Floating at boot. | n/a |
Module Pin 53 (D5)
P1 | P2 | ||
---|---|---|---|
Pin Name | D5 | D5 | |
∆ | Description | D5 GPIO, SPI1 | D5 GPIO, Serial2 RX, SPI1 SS |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
∆ | UART serial | n/a | RX. Use Serial2 object. |
SPI interface | SS. Use SPI1 object. Can use any pin for SPI1 SS/CS however. | SS. Use SPI1 object. Can use any pin for SPI1 SS/CS however. | |
Supports attachInterrupt | Yes | Yes | |
∆ | I2S interface | I2S3_WS | n/a |
∆ | Internal pull resistance | 40K | 2.1K |
∆ | Input is 5V Tolerant | Yes | No |
∆ | JTAG interface | JTAG TDI. 40K pull-up at boot. | n/a |
∆ | Signal used at boot | JTAG TDI. 40K pull-up at boot. | n/a |
Module Pin 54 (D7)
P1 | P2 | ||
---|---|---|---|
Pin Name | D7 | D7 | |
∆ | Description | D7 GPIO | D7 GPIO, SWDIO |
Supports digitalRead | Yes. | Yes. | |
Supports digitalWrite | Yes. On the Photon this is the blue D7 LED. | Yes. On the Photon this is the blue D7 LED. | |
∆ | Supports attachInterrupt | Yes. D7 and P1S4 share the same interrupt handler. | Yes |
∆ | Internal pull resistance | 40K. Pull-up applied in bootloader for JTAG. | 42K |
∆ | JTAG interface | JTAG TMS. 40K pull-up at boot. | n/a |
SWD interface | SWDIO. 40K pull-up at boot. | SWDIO. 40K pull-up at boot. | |
∆ | Signal used at boot | JTAG TMS/SWDIO. 40K pull-up at boot. | SWDIO. 40K pull-up at boot. Low at boot triggers MCU test mode. |
Module Pin 55 (D6)
P1 | P2 | ||
---|---|---|---|
Pin Name | D6 | D6 | |
∆ | Description | D6 GPIO | D6 GPIO, SWCLK |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
Supports attachInterrupt | Yes | Yes | |
∆ | Internal pull resistance | 40K. Pull-up applied in bootloader for JTAG. | 42K |
∆ | Input is 5V Tolerant | Yes | No |
∆ | JTAG interface | JTAG TCK. 40K pull-down at boot. | n/a |
SWD interface | SWCLK. 40K pull-down at boot. | SWCLK. 40K pull-down at boot. | |
∆ | Signal used at boot | JTAG TCK/SWCLK. 40K pull-down at boot. | SWCLK. 40K pull-down at boot. |
Module Pin 56 (BTCX_STATUS / NC)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | BTCX_STATUS | NC |
∆ | Description | Coexistence signal: Bluetooth status and TX/RX direction. | No connection. Do not connect anything to this pin. |
Module Pin 57 (BTCX_RF_ACTIVE / NC)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | BTCX_RF_ACTIVE | NC |
∆ | Description | Coexistence signal: Bluetooth is active. | No connection. Do not connect anything to this pin. |
Module Pin 58 (BTCX_TXCONF / NC)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | BTCX_TXCONF | NC |
∆ | Description | Output giving Bluetooth permission to TX. | No connection. Do not connect anything to this pin. |
Module Pin 59 (GND)
Unchanged between P1 and P2 | |
---|---|
Pin Name | GND |
Description | Ground. Be sure you connect all P1 ground pins. |
Module Pin 60 (WL_SLEEP_CLK / NC)
P1 | P2 | ||
---|---|---|---|
∆ | Pin Name | WL_SLEEP_CLK | NC |
∆ | Description | BCM43362 Debugging Pin | No connection. Do not connect anything to this pin. |
Module Pin 61 (USBDATA+)
Unchanged between P1 and P2 | |
---|---|
Pin Name | USBDATA+ |
Description | USB Data+ |
Input is 5V Tolerant | Yes |
Module Pin 62 (USBDATA-)
Unchanged between P1 and P2 | |
---|---|
Pin Name | USBDATA- |
Description | USB Data- |
Input is 5V Tolerant | Yes |
Module Pin 63 (RX)
P1 | P2 | ||
---|---|---|---|
Pin Name | RX | RX | |
∆ | Pin Alternate Name | n/a | D9 |
∆ | Description | Serial1 RX (received data), GPIO, PWM. | Serial1 RX (received data), GPIO |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
∆ | Supports analogWrite (PWM) | Yes | No |
∆ | Supports tone | Yes | No |
UART serial | RX. Use Serial1 object. | RX. Use Serial1 object. | |
Supports attachInterrupt | Yes | Yes | |
∆ | Internal pull resistance | 40K | 42K |
∆ | Input is 5V Tolerant | Yes | No |
Module Pin 64 (TX)
P1 | P2 | ||
---|---|---|---|
Pin Name | TX | TX | |
∆ | Pin Alternate Name | n/a | D8 |
∆ | Description | Serial1 TX (transmitted data), GPIO, PWM. | Serial1 TX (transmitted data), GPIO |
Supports digitalRead | Yes | Yes | |
Supports digitalWrite | Yes | Yes | |
∆ | Supports analogWrite (PWM) | Yes | No |
∆ | Supports tone | Yes | No |
UART serial | TX. Use Serial1 object. | TX. Use Serial1 object. | |
Supports attachInterrupt | Yes | Yes | |
∆ | Internal pull resistance | 40K | 42K |
∆ | Input is 5V Tolerant | Yes | No |
∆ | Signal used at boot | n/a | Low at boot triggers ISP flash download |
Module Pin 65 (GND)
Unchanged between P1 and P2 | |
---|---|
Pin Name | GND |
Description | Ground. Be sure you connect all P1 ground pins. |
Module Pin 66 (GND)
Unchanged between P1 and P2 | |
---|---|
Pin Name | GND |
Description | Ground. Be sure you connect all P1 ground pins. |
Module Pin 67 (GND)
Unchanged between P1 and P2 | |
---|---|
Pin Name | GND |
Description | Ground. Be sure you connect all P1 ground pins. |
Module Pin 68 (GND)
Unchanged between P1 and P2 | |
---|---|
Pin Name | GND |
Description | Ground. Be sure you connect all P1 ground pins. |
Module Pin 69 (GND)
Unchanged between P1 and P2 | |
---|---|
Pin Name | GND |
Description | Ground. Be sure you connect all P1 ground pins. |
Module Pin 70 (GND)
Unchanged between P1 and P2 | |
---|---|
Pin Name | GND |
Description | Ground. Be sure you connect all P1 ground pins. |
Module Pin 71 (GND)
Unchanged between P1 and P2 | |
---|---|
Pin Name | GND |
Description | Ground. Be sure you connect all P1 ground pins. |
Module Pin 72 (GND)
Unchanged between P1 and P2 | |
---|---|
Pin Name | GND |
Description | Ground. Be sure you connect all P1 ground pins. |
Software
Wi-Fi Configuration
The P2 and Argon utilize BLE or USB for configuration of Wi-Fi rather than the SoftAP approach taken with the P1. Using BLE allow mobile apps to more easily set up the device Wi-Fi without having to modify the mobile device's network configuration.
Sample applications for React Native, iOS, and Android will be provided in the future.
Feature | P2 | P1 | Argon |
---|---|---|---|
Wi-Fi (SoftAP) | ✓ | ||
BLE | ✓ | ✓ |
User firmware binary size
One major advantage of the P2 is that user firmware binaries can be up to 2048 Kbytes, instead of 128 Kbytes on Gen 2 devices including the P1.
Flash file system
On the P2 there is a flash file system (2 MB) for storing user data. This is not available on Gen 2 devices including the P1.
Combined and resumable OTA
On the P2, over-the-air (OTA) updates have two features that can improve the speed and reliability of OTA updates:
- Combined OTA can combine Device OS and user firmware updates into a single binary that requires only one download and one reboot to install.
- Resumable OTA allows an update to resume from the point it stopped, instead of starting over from the beginning if interrupted.
Increased API field limits
The maximum size of a variable, function parameter, or publish is 1024 bytes on the P2 vs. 864 bytes on P1.
API Field | P1 | P2 |
---|---|---|
Variable Key | 64 | 64 |
Variable Data | 864 | 1024 |
Function Key | 64 | 64 |
Function Argument | 864 | 1024 |
Publish/Subscribe Event Name | 64 | 64 |
Publish/Subscribe Event Data | 864 | 1024 |
Platform ID
The Platform ID of the P2 (32, PLATFORM_P2
) is different from that of the P1 (8) because of the vastly different hardware.
If you have a product based on the P1, you will need to create a separate product for devices using the P2. While you may be able to use the same source code to build your application, the firmware binaries uploaded to the console will be different, so they need to be separate products. This generally does not affect billing as only the number of devices, not the number of products, is counted toward your plan limits.
Third-party libraries
Most third-party libraries are believed to be compatible. The exceptions include:
- Libraries for MCU-specific features (such as ADC DMA)
- Libraries that are hardcoded to support only certain platforms by their PLATFORM_ID
- Libraries that manipulate GPIO at high speeds or are timing-dependent
DS18B20 (1-Wire temperature sensor)
- Not compatible
- OneWire library requires high-speed GPIO support
- Can use DS2482 I2C to 1-Wire bridge chip instead
- SHT30 sensors (I2C) may be an alternative in some applications
FastLED
- Not compatible.
- In theory the library could be modified to use the same technique as the NeoPixel library.
NeoPixel (WS2812, WS2812B, and WS2813)
- Requires Device OS 5.3.2 or later and Particle-NeoPixel version 1.0.3.
OneWire
- Not compatible
- OneWire library requires high-speed GPIO support
- Can use DS2482 I2C to OneWire bridge instead
DHT22 and DHT11 (temperature and humidity sensor)
- Not compatible, requires high-speed GPIO support
- Using an I2C temperature and humidity sensor like the SHT3x is recommended instead
SHT1x (temperature and humidity sensor)
- Not compatible, requires high-speed GPIO support
- SHT3x using I2C is recommended
SparkIntervalTimer
- Not compatible at this time
- Requires hardware timer support from user firmware
Version history
Revision | Date | Author | Comments |
---|---|---|---|
pre | 2021-11-04 | RK | Pre-release |
2022-02-08 | RK | Corrected D pin aliases for A5 and S0-S6 | |
2022-02-25 | RK | Changed D pin aliases for D9 - D22, A5 is not SPI MOSI, Serial2 TX and RX were reversed | |
2022-03-14 | RK | Minor edits; no functional changes | |
2022-03-23 | RK | Add notes about flash file system and EEPROM | |
2022-04-12 | RK | Added serial baud rates | |
2022-07-14 | RK | No hardware pull-up on MODE pin | |
2022-07-18 | RK | List which pins have which pull-up or pull-down value | |
2022-08-12 | RK | Added listing of pins used at boot | |
2022-08-12 | RK | Warning about BLE central mode not available | |
2022-10-05 | RK | Added HIBERNATE sleep section | |
2022-11-17 | RK | Pin D0 does not have PWM | |
001 | 2023-03-13 | RK | Removed preliminary banner |
002 | 2023-04-05 | RK | Added Device OS 5.3.1 information for SPI and retained memory |
003 | 2023-05-05 | RK | Fix available RAM |
004 | 2024-03-15 | RK | The UART baud rate 2400, 4800, 380400, 460800 are supported but were not listed |