UPDI High-Voltage Activation Information

The UPDI one-wire interface is implemented on AVR® devices in various forms:

  • Dedicated UPDI pin. This implementation is generally used on devices with a large number of pins. The UPDI line is always present, and thus the concept of high-voltage programming does not apply. Examples include megaAVR® 0-series devices and AVR DA and DB family devices.
  • Shared UPDI pin. This implementation is generally used on devices with smaller packages. The UPDI pin can be re-configured into a GPIO or /RESET pin. In this case, the UPDI functionality is disabled, and a high-voltage source is required to re-enable it. Examples include tinyAVR 0-series, 1-series, and 2-series devices.

We highly recommend removing any circuitry from the UPDI line which may interfere with the activation sequence or even be damaged by the high voltage pulse when using UPDI high-voltage activation. For example, if using the STK600 as a carrier, we recommend removing the RESET jumper and any other components on the UPDI line.

High-Voltage Activation Mechanism Overview

When a high-voltage pulse is detected on the disabled UPDI pin, the pad switches its behaviour over from its previous functionality (GPIO or /RESET) into UPDI mode. However, in order to safeguard against an ESD discharge event disabling functionality in doing so, a valid UPDI key must be clocked in within a 65 ms window after the high-voltage event. Either the NVM enable key or chip erase key can be used. Once a key is clocked into UPDI, a UPDI reset must be issued for the key action to be activated. Once the reset has been processed successfully, the UPDI pin is enabled properly for that session.

In the event that a valid key is not clocked into UPDI within the window, the high-voltage event is assumed to be an ESD discharge, and the device will be reset. The functionality of the UPDI pin will once again be loaded from the fuses and user code will start to execute as expected.

Volatility of UPDI Pin Functionality

After the UPDI high-voltage sequence has been successful, the UPDI pin functionality is available for programming and debugging. However, it should be noted that this state is volatile, and the original UPDI pin behaviour will be reloaded from fuses when any one of these conditions occur:

  • Power toggle
  • Reset
  • Leave programming mode

This is evident in some front-end implementations (for example Atmel Studio) which may enter and leave programming mode several times in order to perform certain tasks, like read-modify-write of fuse bits. In this case, a high-voltage re-entry may be required several times.

When debugging a board in which the UPDI pin is intended for use for another function, it may be preferable to use HV entry to re-enable the UPDI functionality in the fuses - this will circumvent the need for repeated high-voltage entries during the debugging process.

High-Voltage Activation Signal Requirements

High voltage activation for UPDI is a simple pulse, rising from Vdd to the high-voltage threshold, and falling back to Vdd. Unlike some other high-voltage interfaces, the high-voltage source plays no part in the programming of memory, it is simply an activation mechanism for UPDI physical interface.

The amplitude of the high-voltage pulse required is process dependent, so the device datasheet should be consulted for exact details for the part in question.

High-Voltage Activation for an Input Pin

When the UPDI pin is configured as /RESET or a GPIO that is input, it will not drive a logic level out, and thus contention with the high-voltage signal is not an issue. This means that a simple high-voltage pulse can be applied safely at any time to the UPDI pin to activate the interface, provided that no other components are connected. The power toggle procedure below is of course also valid
in this case, but not required by any means.

High-Voltage Activation for an Output Pin

When the UPDI pin is configured as a GPIO, it can be driven either high or low by the application. When using UPDI high-voltage activation on a device driving out any logic level, there is a risk that contention may damage both the pad on the device and possibly the programming tool being used. We highly advise against applying a simple high-voltage pulse to a part in this state!

To cater to this, the UPDI pad has a built-in hold-off time of about 10 ms after reset during which it is incapable of driving out its given logic value, making it safe to apply a high-voltage. However, if the UPDI pin is configured as /RESET, then it is by definition an input, and applying a simple high-voltage pulse is always safe, so the only valid form of reset is thus a power-on reset.

To support this, two modes can be supported by development tools:

  • user-power toggle - the user is prompted to toggle power
  • auto-power-toggle - the development tool toggles power itself

In both of these modes, Vdd of the target system is monitored as it rises after toggling power. Once Vdd is detected to be above a minimum threshold, the high-voltage mechanism generates a pulse and enters the key, enabling UPDI.

If Vdd ramps up extremely slowly, high-voltage UPDI activation may be unreliable or the device may start to execute code that is capable of driving a value to the UPDI pin. We recommend using the jumper to toggle power if using the STK600 as a carrier since the power supply has a very slow ramp .

High-Voltage Support in Microchip Tools

The following Microchip hardware tools support UPDI high voltage activation:

  • MPLAB® PICkit™ 4 - this tool can apply a variable voltage to the UPDI line for high-voltage activation. However, due to a hardware limitation, high-voltage drive is not possible when the target operating voltage is below 2.8 V. PICkit4 does not provide power to target devices, so only the simple-pulse and user-power-toggle modes are supported.
  • Power Debugger - this tool can apply a fixed 12 V pulse to the UPDI line for high-voltage activation. Simple-pulse and user-power-toggle modes are always supported, and if the target device is powered using the on-board power supply (VOUT), then the auto-power toggle mode can also be used for safer high-voltage activation.

The following Microchip software development tools support UPDI high-voltage activation:

  • MPLAB X IDE
  • Atmel Studio debugger
  • Atmel Studio device programming dialog
  • atprogram command line programming utility
  • pymcuprog python programming package
© 2022 Microchip Technology, Inc.
Notice: ARM and Cortex are the registered trademarks of ARM Limited in the EU and other countries.
Information contained on this site regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer's risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.