Compartir pines ARM SWD con función de pin normal (en Atmel SAM D09 D10 D11)

El Atmel SAM D09 (un MCU ARM Cortex M0+) puede habilitar funciones de pines normales en los pines que normalmente se usan para la programación (SWD). Pero al hacerlo, supongo que la depuración será imposible después de programar el dispositivo.

¿Es esto correcto o puede ser posible compartir ciertas funciones (como I2C/UART/SPI/entrada digital) sin interrumpir la depuración?

En segundo lugar, la hoja de datos D09 tiene esta frase curiosa: " Solo el pin SWCLK se asigna a las funciones normales de PUERTO. Una detección de conexión en frío o conexión en caliente del depurador cambiará automáticamente el puerto SWDIO a la función SWDIO ".

Entonces parece que puedo usar al menos un pin en un modo compartido con SWD. Pero esta frase es bastante ambigua: ¿qué pin sería y qué funciones se pueden compartir en el pin compartible?

Lo que pido es específico para el protocolo ARM SWD, y el caso en cuestión son los chips Atmel SAM D09/D10/D11 baratos.

Respuestas (1)

Eso dependerá del programador que estés usando. De hecho, estoy trabajando con el SAMD20 usando el programador AVRISP mkll de Atmel y no tiene que preocuparse por compartir esos pines. La función principal del pin seguirá funcionando incluso si tienes el programador conectado allí. De hecho, eso es lo que significa ISP (en la programación del sistema). Si está utilizando el kit de evaluación Xplain Pro, puede programar el dispositivo mediante el cable USB y todos los pines de programación seguirán funcionando en su función principal.

Entonces, la función pin programada se suspendería (no funcionaría) durante la depuración, pero al menos la depuración funcionaría. Tenga en cuenta que mi enfoque no está en programar el dispositivo, sino en depurarlo.
Para ser honesto, nunca probé la depuración, pero estoy bastante seguro de que la función principal en esos pines seguirá funcionando durante la depuración. ¡Prueba y cuéntanos!
Encontré más información en la hoja de datos. Parece que se necesita SWCLK para detectar el depurador (el depurador lo baja), el chip luego cambia SWDIO a la función de depuración. Cuando el código asigna una función al pin SWCLK (sea lo que sea), la depuración ya no es posible, pero sí la programación (después de un reinicio). Resumiendo: SWDIO se puede usar libremente y el uso de SWCLK deshabilitará la depuración.