The following pins have some restrictions that need to be taken into account when using them:
- D2/NFC2: The D2 pin is uses the same pad as one-half of the NFC antenna pins. By default, the nRF52840 Feather ships with these pins configured for GPIO mode, which is done by writing a value to the UICR flash config memory. If you wish to use NFC, you will need to erase the UICR memory which requires erasing the entire chip, and you will need a Segger J-Link to reflash the bootloader and firmware.
- 3V: This pin is connected to the output of the on board 3.3V regulator. It can be used to supply 3.3V power to external sensors, breakouts or Feather Wings.
- LIPO Input (Bat): This is the voltage supply off the optional LIPO cell that can be connected via the JST PH connector. It is nominally ~3.5-4.2V.
- VREG Enable (En): This pin can be set to GND to disable the 3.3V output from the on board voltage regulator. By default it is set high via a pullup resistor.
- USB Power (USB): This is the voltage supply off USB connector, nominally 4.5-5.2V.
The 6 available analog inputs (A0 .. A5) can be configured to generate 8, 10 or 12-bit data (or 14-bits with over-sampling), at speeds up to 200kHz (depending on the bit-width of the values generated), based on either an internal 0.6V reference or the external supply.
The following default values are used:
- Default voltage range: 0-3.6V (uses the internal 0.6V reference with 1/6 gain)
- Default resolution: 12-bit (0..4096)
- Default mV per lsb (assuming 3.6V and 12-bit resolution): 1 LSB = 0.87890625 mV
An additional two ADC pins are available but pre-connected to provide specific functionality:
- AREF (A7 / P0.31), which can be used as an optional external analog reference. This pin can be accessed in code via PIN_AREF or A7. If using an external AREF, this must be less than or equal to VDD, which is usually 3.3V!
- VDIV (A6 / P0.29): This pin is hard wired to a voltage-divider on the LIPO battery input, allowing you to safely measure the LIPO battery level on your device. If possible, you should avoid using this pin as an input because you will lose the ability to read the battery voltage. You can use it as an output just make sure to switch the pin to analog input when you want to do the battery read, then back to output when toggling pins
Any GPIO pin can be configured as a PWM output, using the dedicated PWM block.
Three PWM modules can provide up to 12 PWM channels with individual frequency control in groups of up to four channels.
I2C pins on the nRF52840 require external pullup resistors to function, which are not present on the Adafruit nRF52840 Feather by default. You will need to supply external pullups to use these. All Adafruit I2C breakouts have appropriate pullups on them already, so this normally won't be an issue for you.
A tactile switch is provided for use in your projects, which is connected to P1.02 and is accessible in code as D7.
Holding this button down coming out of a board reset will also force the device to enter and remain in USB bootloader mode, which can be useful if you lock your board up with bad application code!
For advanced debugging or to reprogram your nRF52840 Feather Express, a 2*5 pin 0.05" standard SWD header is populated on the boards. This allows you to use something like a Segger J-Link and a 1.27mm SWD cable to connect from your PC to the nRF52840.
There are numerous LEDs available on the nRF52840 Feather Express which can be used as status indicators, or be placed under user control in your application:
There are three basic LEDs available on the nRF52840 Feather Express:
- D3 is a general-purpose RED LED that can be used for blinky, or other purposes. When running in bootloader mode it is used under the control of the bootloader as a status indicator, with a rapid blinky pattern indicating that the board is currently in DFU bootloader mode. This LED is on D3 (or P1.15). Programmatically you can access this LED as LED_RED.
- CONN can be used as a general-purpose BLUE LED, but is generally controlled by the examples to indicate connection status for BLE. This LED is on P1.10. Programmatically you can access this LED as BLUE_LED.
- CHG indicates that the on-board LIPO charger is currently charging the connected LIPO battery cell, using USB as a power supply.
In addition to the basic LEDs, there is also a single RGB NeoPixel (connected to P0.16), which can be programmatically access as PIN_NEOPIXEL.
Since this board is part of the Express family for CircuitPython, a 2MB Quad-SPI flash is also included on the board by default. QSPI requires 6 pins, which are not broken out on the 0.1" pin headers to avoid conflicts.
QSPI is neat because it allows you to have 4 data in/out lines instead of just SPI's single line in and single line out. This means that QSPI is at least 4 times faster. But in reality is at least 10x faster because you can clock the QSPI peripheral much faster than a plain SPI peripheral