ICSP oder vorprogrammierter Mikrocontroller


11

Ich habe eine Leiterplatte für die Produktion in kleinem Maßstab entworfen. Derzeit löte ich sie von Hand in Chargen von jeweils 20 Stück. Diese Platine verwendet einen ATMEGA168-Mikrocontroller, den ich vor dem Löten auf die Platine programmiere - diese Methode funktioniert im Moment gut für mich.

Ich möchte eine Serie von 200 Boards für mich herstellen und montieren lassen, da das von mir entworfene Produkt sehr beliebt zu sein scheint. Wäre es besser, entweder einen ICSP-Header auf die Platine zu setzen oder die ICs selbst weiter vorzuprogrammieren? Eine Neuprogrammierung der Platine nach Herstellung oder Montage ist keine beabsichtigte oder erforderliche Funktion.

Ich bin mir nicht sicher, wie dies in einer größeren Produktionsumgebung durchgeführt wird. Das Hinzufügen eines ICSP-Headers würde die Herstellungskosten geringfügig erhöhen. Ist die Vorprogrammierung eine Standardpraxis?

Antworten:


18

Ich würde vorschlagen, immer einen Header in dieser Menge (klein) aufzunehmen. Wenn Sie größere Mengen erreichen, können Sie Pads für Pogo-Pins in Betracht ziehen (Sie müssten eine Vorrichtung herstellen, um die Leiterplatte in Ausrichtung zu halten), oder Sie können in Ihren Mengen eines der Tag Connect-Kabel verwenden , die nur Löcher benötigen und nicht bestückt sind Pads (sie rasten auf dem Brett ein).

Geben Sie hier die Bildbeschreibung ein

Auf diese Weise können Sie sich nicht nur von der Notwendigkeit eines Programmierupdates erholen, sondern auch die Platinen vor der Programmierung von einem Montagehaus füllen lassen, was die Logistik verbessern könnte.

Vorprogrammierung ist sicherlich eine Option, selbst in Produktionsmengen (Sie können sie sogar vom Distributor für Sie erledigen lassen), aber sie scheint hauptsächlich in den einfachsten Anwendungen verwendet zu werden. Normalerweise werden Chips auf Platinen nach dem Zusammenbau programmiert (oder können programmiert werden).


Dies scheint eine gute Lösung zu sein - danke für Ihre Hilfe, diese Kabel sehen ziemlich nützlich aus!
Edcs

1
Tag-Connect funktioniert hierfür gut. Sie können auch Versionen ohne die Verriegelungsstifte (den schwarzen Kunststoff rechts im Bild) erhalten, die stattdessen auf Druck oder eine Rückplatte angewiesen sind, die die Stifte erfasst. Beachten Sie, dass das abgebildete Kabel etwa 50 US-Dollar kostet. Auf der positiven Seite sind die PCB-Kontakte ungefähr $ 0.
Ben Jackson

20

Wenn Sie Platz für einen Header haben, ist dies wahrscheinlich die beste Option. Die leicht versetzten Stifte, die Majenko empfiehlt, sind eine gute Möglichkeit, einen Anschluss an Ort und Stelle zu halten, ohne die Komplexität zu erhöhen.

Hier ist jedoch ein alternativer Ansatz für Boards, bei denen Sie keinen Platz für einen Header haben oder der Standard-Header nicht alle Ihre Programmier- / Setup- / Board-Testaufgaben erfüllt.

Bei einer kleinen Formfaktor-Leiterplatte wie hier (33 mm Durchmesser) Geben Sie hier die Bildbeschreibung ein

Sie können es mit Testpunkten auslegen (auf der Rückseite beschriftet). Geben Sie hier die Bildbeschreibung ein

und erstellen Sie eine Testvorrichtung dafür (mit Pogo Pins ) Geben Sie hier die Bildbeschreibung ein

Dies erfordert einige Bearbeitungsfähigkeiten und mindestens einen Säulenbohrer (da die Pogo-Stifte genau vertikal sein müssen). Wenn Sie jedoch bereit sind, eine Prototyp-Leiterplatte zu riskieren, können Sie sie auf eine Materialbahn klemmen und durch die Testpunktlöcher "punktieren", um die Pogo-Stifte genau an der richtigen Stelle zu platzieren. (Ich bekomme 10 Leiterplatten für einen lächerlich niedrigen Preis von Itead, daher ist es keine große Sache, eine zu verlieren).

Mit einer Drehmaschine und einer Mühle ist es ein Kinderspiel, die Säulen und Klemmen so zu platzieren, dass die Leiterplatte genau an der richtigen Stelle positioniert wird, aber mit einfacheren Werkzeugen ist dies nicht allzu schwierig.

Dann montieren Sie einfach jede Platine, programmieren und testen sie. Der lose Stecker führt normalerweise zu den Header-Pins eines TI-Launchpads, das zum Programmieren dieser MPU (TI MSP430) über die SBW-Schnittstelle verwendet wird. Das gleiche Prinzip würde jedoch für JTAG oder andere Schnittstellen gelten. (Das braune Kabel oben ist ein Koaxialkabel, das ein Kalibrierungssignal zu einem Frequenzzähler führt.) Geben Sie hier die Bildbeschreibung ein

Die polierte Mahagonibasis ist optional; Ich bevorzuge zufällig einen Steampunk-Stil für meine Testgeräte.


Dies ist eine großartige Antwort und vielen Dank, dass Sie sich die Zeit genommen haben, eine so nützliche detaillierte Antwort zu geben! Ich habe es nicht als Antwort markiert, weil ich in meinem Fall Platz für einen ICSP-Header habe, aber ich werde es mir merken, wenn ich etwas Winziges bauen muss.
Edcs

2
Das ist eine hübsche Schablone (oder ist es eine Befestigung?). Gibt es irgendetwas, um die Leiterplatte in einem Winkel zu tasten, oder ist sie nur mit dem Auge ausgerichtet?
Spehro Pefhany

Ich mustere die Pogo-Stifte durch die sichtbaren Testpunktlöcher, bevor ich die Klammern nach unten drücke und einschwinge. Roh, aber es funktioniert. Auf einer größeren Leiterplatte würde ich ein paar Positionierungsstifte empfehlen, z. B. in den Befestigungslöchern der Leiterplatte.
Brian Drummond

13

Ich füge immer Platz für einen ICSP-Header hinzu, auch wenn dieser nicht ausgefüllt ist. Ich habe im Moment drei Möglichkeiten, es je nach Situation zu tun.

Eines meiner Designs hat einen sehr feinen Header, für den ich einen Adapter gebaut habe (0,6 mm Massivdraht ist perfekt dafür):

Geben Sie hier die Bildbeschreibung ein

Ich benutze diesen Anschluss, wenn der Platz knapp ist. (Tut mir leid, es ist verschwommen, die Kamera meines Telefons ist naff).

Die zweite Anordnung, die ich häufig verwende, besteht darin, den ICSP in einen anderen Header zu integrieren. Wenn die ICSP-Pins auch als GPIO-Pins verwendet werden können und Sie sie mit einer abnehmbaren Verbindung verwenden können, ist es einfach genug, andere ICSP-Verbindungen, die Sie möglicherweise benötigen (z. B. MCLR), zu minimalen Kosten einzuschließen. Dann stecken Sie Ihren Programmierer einfach mit einem Adapter in diesen Header, der einfach zu erstellen sein sollte.

Die dritte Möglichkeit besteht darin, einen "gestaffelten" oder "versetzten" Header-Footprint für ICSP bereitzustellen. Ich verwende dies hauptsächlich auf Entwicklungsplatinen, bei denen der Endbenutzer möglicherweise ICSP ausführen möchte, seine Platine jedoch nicht durch dauerhaftes Einlöten eines Headers ruinieren möchte. Dieser Platzbedarf ermöglicht es einem Standard-Header, ohne Lötmittel zu passen und einen guten festen Kontakt herzustellen:

Geben Sie hier die Bildbeschreibung ein

Wenn Sie anfangen, mit viel größeren Mengen umzugehen, kann es sicherlich kostengünstiger sein, den Chiphersteller zu veranlassen, die Chips mit Ihrer Firmware für Sie vorzuprogrammieren. Ich denke, alle großen Hersteller bieten diese Möglichkeit.


Vielen Dank für die ausführliche Antwort - auf jeden Fall nützliche Informationen hier! Ich habe Ihre Antwort nicht akzeptiert, da ich das vorgeschlagene Tag Connect-Kabel verwenden werde, obwohl die versetzte Pin-Methode genauso gut funktionieren würde.
Edcs

Atmel bietet es definitiv als Option.
Ignacio Vazquez-Abrams

2
Der gestaffelte Header-Footprint ist einfach genial. +1
Vladimir Cravero

5

Wenn man einen Prozessor verwendet, der in der Schaltung neu programmiert werden kann, würde ich dringend empfehlen, die Platinen so zu gestalten, dass sie verwendet werden können, auch wenn für die tatsächliche Verwendung der Funktion ein Gerät für diesen speziellen Zweck gebaut werden muss und dies nicht der Fall ist Ich habe nicht vor, einen bauen zu müssen. Wenn nach der Herstellung einer großen Anzahl von Karten ein Firmware-Problem festgestellt wird, ist der Bau einer Vorrichtung, mit der diese Karten neu programmiert werden können, möglicherweise viel billiger als die Nacharbeit oder der Umbau.

In einigen Fällen kann ein guter Ansatz darin bestehen, das E / A-Layout einer Karte so auszuwählen, dass die für die Neuprogrammierung im Schaltkreis erforderlichen Steuerungsstifte für Zwecke verwendet werden, die "natürlich" dazu führen, dass sie leicht zugänglichen Kontaktpunkten ausgesetzt werden. Beispielsweise können bei einer Platine, die für die Verwendung mit Metallkuppelkontakten ausgelegt ist, die Kontakte selbst mit den Programmierstiften im Schaltkreis verdrahtet sein. Ein solches Design würde keinen Platz im Layout für einen Programmieranschluss erfordern, aber - insbesondere wenn der Batteriekontakt auch allgemein dimensioniert wäre - lassen Sie einen Programmieranschluss mit einfachen federbelasteten Kontakten auskommen.

Beachten Sie, dass es nicht unbedingt wichtig ist, ob der Code gut getestet zu sein scheint. Änderungen von einer Charge Chips zur nächsten können immer noch unerwartete Probleme verursachen. Zum Beispiel habe ich ein Produkt entworfen, das sich unter Prozessorsteuerung ausschalten sollte, indem der Prozessorausgang an einem Pin "hoch" war, wenn er "an" sein sollte. Bei der ersten Charge von 10.000 Einheiten funktionierte alles einwandfrei, aber bei einer späteren Charge begann der Prozessor eine Fehlfunktion, wenn seine Spannung etwa 2 Volt erreichte, und konnte diesen Pin wieder auf "hoch" schalten. Der 2-Volt-Ausgang "high" reichte kaum aus, um das Gerät wieder einzuschalten. Da der Prozessor so spezifiziert wurde, dass er bis zu IIRC 1,6 Volt im Ruhemodus bleibt, Das Problem konnte behoben werden, indem die Geräte so umprogrammiert wurden, dass sie beim Aktivieren ihres Abschaltzustands in den Ruhemodus wechseln. Wäre eine solche Neuprogrammierung nicht möglich gewesen, wäre eine viel teurere Nacharbeit (oder Verschrottung und Umbau) erforderlich gewesen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.