SAMD21G18 (M0 Bootloader) at 2.0v with USB?

I'm using 2.0v as the main supply for my board, including a SAMD21G18A. However, I would like to maintain the use of the native USB functionality so I can use the Arduino interface and a USB cable for debugging (this project needs to be portable after the initial programming with an ATMEL-ICE). The datasheet does state in USB Characteristics, "The operating voltages must be 3.3V (Min. 3.0V, Max. 3.6V)."

I have a feeling this means that the USB module is shutdown below 3.0v, which leaves me with no solution. Does anyone have experience using USB in a ~1.8v system? I tried a simple level converter to no avail, but it's not clear if the circuit I used, based on a JFET, fits within the USB specs (line impedance, etc.).


Hi mattgaidica,

I haven't tried it myself, but to run the SAMD21 at 1.8V I believe that you have to disable the 3.3V Brown Out Detection by clearing the BOD33 fuse bit and modify the bootloader to run the Non-Volatile Memory (NVM) with 3 wait states. This has been discussed on the Arduino forum here:

Although the USB may not operate at this lower voltage, I know that the original Arduino Zero bootloader is able to perform uploads via its Serial1 port on digital pins D0 and D1. I imagine this would require a FTDI USB to Serial adapter with a 1.8V logic level converter, as well as the board to be placed into bootloader mode with a double tap of the reset button each time. (I haven't yet experimented to see if the FTDI is also capable of auto-reseting the SAMD21 during uploads using this method like the Arduino Pro Mini).

Thanks MartinL. It sounds like this would all be a bit of a hack. Directly from Microchip:

USB cannot be operated below 3.0V as it falls below the minimum operating range.
One way of accomplishing your requirement is to use two supplies. Use 3.3V supply voltage during USB programming and switch to 2V for running the chip.

I have a few chips that are not 3V tolerant, so it would require some extra work.

You should be able to just use serial or swd for debug and upload...