Een debug/programmeer-connector kiezen voor een microcontroller

TL;DR samenvatting: voor ARM SWD, TI Spy-Bi-Wire of Microchip ICD, gebruik de Tag-Connect No-Legs footprint met standaard pin/pad-toewijzingen, en schaf Tag-Connect kabels aan.

Bij het ontwerpen van apparaten die microcontrollers gebruiken, moet men een debug- en programmeerconnector voorzien. Deze kan alleen voor ontwikkeling worden gebruikt, bij het schrijven en debuggen van software, of kan ook in productie-eenheden worden gelaten voor programmering in de fabriek.

Fabrikanten en gereedschapsmakers hebben ervoor gezorgd dat we in een wereld leven met een veelheid aan debug-connectoren en veel verwarring eromheen. Daarom eindigen we hiermee:

Dus, welke connector te kiezen voor een nieuw ontwerp?

Dit artikel richt zich voornamelijk op ARM-apparaten die de SWD (Single-Wire Debug) interface hebben, maar het is ook van toepassing op andere componenten, zoals Texas Instruments MSP430 die het Spy Bi-Wire (2-draads JTAG) protocol gebruikt, Microchip ICD, of zelfs componenten die een completere set JTAG-pinnen nodig hebben.

Populaire debug-connectoren

Enkele veelvoorkomende keuzes die vaak worden overwogen:

  • 10-pins JTAG op een 0,1" IDC-header. Meestal wordt een mannelijke header gebruikt. Nadeel: het is enorm en de header kost geld.
  • Cortex Debug Connector met een 0,05" micro-header (10-pins of 20-pins, Samtec FTSH-110 en FTSH-105). De 10-pins connector is redelijk klein en verkrijgbaar als SMD-onderdeel, maar duurder dan IDC-connectoren.
  • 20-pins 0,1" IDC-connector. U overweegt die dinosaurus toch niet serieus? Hij is groter dan sommige borden die ik heb ontworpen.
  • Aangepaste set van 4 of 6 pinnen (of via's, of koperen pads). Het probleem hier is het "aangepaste" gedeelte. Het zal u in de toekomst onvermijdelijk achtervolgen, op de dag dat uw aangepaste connector breekt op de fabrieksvloer en u een nieuwe moet laten overkomen uit het buitenland, terwijl de productie stil ligt.
  • Tag-Connect 6-pins footprint in een van de varianten (met pootjes of zonder pootjes). Merk op dat hier geen connector is: alleen een gestandaardiseerde footprint op de PCB.
  • Tag-Connect 6-pins + Tag-Connect 10-pins (voor ETM-signalen): voor deze combinatie is er zelfs een kant-en-klare kabel beschikbaar, met een 20-pins IDC-connector en standaard ARM Cortex 20-pins pintoewijzingen.

Een onmiddellijke observatie is dat de meeste van deze connectoren, nou ja, connectoren vereisen. Dat is een extra component die u op het bord moet plaatsen, wat geld kost. Voor productie-eenheden of grotere prototype-runs wordt die connector slechts één keer in de hele levensduur van het product gebruikt, wat verspilling is.

De Tag-Connect-oplossingen of aangepaste footprints met op pogo-pin gebaseerde connectoren hebben hier een duidelijk voordeel omdat ze geen componenten vereisen die op de PCB moeten worden geplaatst, dus de kosten voor de debug-connector per bord dalen naar 0, wat geweldig is!

Zo ziet een Tag-Connect footprint eruit op een echte printplaat:

En zo ziet de kabel met pogo-pins eruit: De tweede belangrijke overweging is de grootte en de resulterende benodigde ruimte op de printplaat. De enige kanshebbers zijn de 10-pins 0,05" micro-header en een Tag-Connect 6-pins footprint. De 10-pins micro-header is in één richting eigenlijk iets kleiner, maar het verschil is niet significant. Hier is hoe een 10-pins 0,05" micro-header eruitziet (deze is van een Nordic Semiconductor nRF52832 ontwikkelbord, de PCA10040):

Pootjes of geen pootjes?

Er zijn twee varianten van een Tag-Connect connectorkabel: een met "pootjes" en een met "geen pootjes". Wat is het verschil?

Tag-Connect gebruikt pogo-pins, die veren aan de binnenkant hebben en tegen de PCB duwen. Als u wilt dat de connector op zijn plaats blijft, moet u er continu kracht op uitoefenen. Dit is prima voor snel programmeren, waarbij u één hand kunt gebruiken om de connector op zijn plaats te houden en de andere om die programmeertaak te starten, maar werkt niet zo goed voor langdurige debug-sessies. Daarvoor werkt de "legs" footprint (en connector) veel beter. De pootjes fungeren als kleine klemmetjes, dus zodra u de connector plaatst, klikken ze op hun plaats en houden ze de pogo-pins stevig tegen het bord, voor onbepaalde tijd.

Het probleem met de "legs" footprint is de grootte: deze is aanzienlijk groter dan de "no-legs" variant. Wat erger is, is dat er vier grote gaten in de printplaat nodig zijn. Grote gaten zijn altijd een probleem: ze moeten (uiteraard) door alle lagen gaan, en je hebt er ook een keepout-gebied omheen nodig. Dit betekent dat de impact van een "legs" footprint op je ontwerp veel groter is dan die van de "no legs" variant.

Voor productie-eenheden, waar de verbinding waarschijnlijk maar één keer in de levensduur van een product wordt gemaakt en gemakkelijk de hele tijd met de hand kan worden vastgehouden, is er geen twijfel mogelijk: u geeft zeker de voorkeur aan de "no-legs" footprint, die bordruimte bespaart. Maar wat te doen met de prototypes? Aan de ene kant kunt u zich de bordruimte veroorloven, maar aan de andere kant wilt u de PCB niet opnieuw ontwerpen alleen omdat u de gaten in de definitieve revisie moet verwijderen.

Gelukkig is er een andere oplossing. Tag-Connect verkoopt een kleine borgclip. Het is een stukje PCB met drie aansluitingen die op de pinnen van de Tag-Connect-kabel passen. Het is geen mechanisch perfecte oplossing en de clips hebben de neiging om na verloop van tijd te slijten (ze zijn ook ongelooflijk gemakkelijk te verliezen!), maar in de praktijk werkt het vrij goed.

Mijn aanbeveling is om altijd te kiezen voor de footprint zonder pootjes en kabels, een aantal bevestigingsclips te kopen en te besparen op bordruimte en het herontwerpen van de borden.

Gebruik een standaard signaaltoewijzing

Ik heb hardware in het wild gezien, waar ontwerpers een Tag-Connect footprint gebruikten voor ARM SWD (op een Cortex-M0), maar signalen anders toewezen. Waarschijnlijk was de motivatie om de interface te verhullen.

Dit is niet iets wat ik zou aanraden: de verhulling wordt gemakkelijk ontdekt, en men eindigt met een incompatibele footprint, wat onvermijdelijk problemen zal veroorzaken in de toekomst.

Praktische zaken

Tag-Connect raadt aan om geen componenten te plaatsen (of sporen te routeren) aan de andere kant van de footprint. Hoewel dat een goede aanbeveling is, heeft men niet altijd die luxe, vooral niet op kleine borden met krappe lay-outbeperkingen.

Zoals ik heb ontdekt, kun je wegkomen met het plaatsen van componenten aan de andere kant, zelfs als je de bevestigingsclip gebruikt om de kabel op zijn plaats te houden. Ik zou echter aanraden om een stukje isolator tussen de componenten en de bevestigingsclip te gebruiken om mogelijke kortsluiting te voorkomen (papier werkt goed). Hoewel dit niet de aanbevolen praktijk is, werkt het wel, hoewel het vastzetten van de debug-connector wat ingewikkelder wordt.

Hier is een voorbeeld van een prototypebord (excuses voor de soldeerkwaliteit van het prototype) waarbij componenten binnen het gebied van de debug-footprint zijn geplaatst:

Kritiek

Het is niet allemaal rozengeur en maneschijn met Tag-Connect. De website is niet goed georganiseerd, dus het is moeilijk om de informatie te vinden die u zoekt. Er wordt een veelvoud aan varianten aangeboden, en hoewel de meeste mensen één type kabel nodig hebben, wordt dit niet prominent weergegeven. Helaas lijkt dit een traditie te zijn bij bedrijven die debug- en programmeerapparatuur maken in de embedded wereld.

De tweede klacht die ik heb is dat het bedrijf downloadbare CAD-bibliotheken met Tag-Connect footprints aanbiedt, maar stelt dat:

Deze bestanden worden geleverd 'ZOALS ZE ZIJN' en zonder garantie dat ze compleet, foutloos of geschikt voor gebruik zijn. Controleer de geïmporteerde decals zorgvuldig aan de hand van de laatste datasheet op de Tag-Connect website (zie hieronder). Let in het bijzonder op de gatgroottes, pinnummering en besteed veel aandacht aan de soldeerpasta-maskerlaag om ervoor te zorgen dat er geen soldeerpasta op de footprint-pads wordt afgezet.

Als u in de meegeleverde ZIP-bestanden kijkt, zijn er meestal verschillende footprint-varianten voor een bepaalde CAD. Welke moet ik gebruiken? En waarom is het mijn verantwoordelijkheid om dit te verifiëren?

Ik vind dat Tag-Connect deze bibliotheek moet opschonen en een set ondersteunde footprints moet aanbieden, op zijn minst voor de populairdere CAD-pakketten, zonder disclaimer. Het zou deel moeten uitmaken van de waarde van deze oplossing.

Conclusie

Alles welbeschouwd is Tag-Connect nog steeds de beste kant-en-klare debugging- en programmeeroplossing. Ik zou aanraden om hierop te standaardiseren en het in al uw ontwerpen te gebruiken.

Eerdere blogposts: KiCon 2019 (2019-03-27)
Latere blogposts: Wat is nieuw: mei 2020 (2020-05-16)

PartsBox is een online app waarmee u de controle krijgt over uw voorraad elektronische componenten, stuklijst-prijzen en kleinschalige productie. Het houdt bij waar componenten zijn opgeslagen, wat de huidige voorraadniveaus zijn en welke componenten in welke projecten/stuklijsten worden gebruikt.

Blog Index