ICSP oder vorprogrammierter Mikrocontroller

Ich habe eine Leiterplatte für die Kleinserienfertigung entworfen; Derzeit löte ich sie in Chargen von 20 Stück von Hand. 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 habe vor, eine Charge von 200 Boards für mich herstellen und montieren zu lassen, da das von mir entworfene Produkt ziemlich beliebt zu sein scheint. Wäre es besser, entweder einen ICSP-Header auf die Platine zu integrieren oder die ICs weiterhin selbst vorzuprogrammieren? Die Neuprogrammierung der Platine nach der Herstellung oder Montage ist keine beabsichtigte oder erforderliche Funktion.

Ich bin mir nicht sicher, wie das in einer größeren Produktionsumgebung gemacht wird? Das Hinzufügen eines ICSP-Headers würde die Herstellungskosten leicht erhöhen, ist die Vorprogrammierung also eine Standardpraxis?

Antworten (4)

Ich würde vorschlagen, immer einen Header in dieser Menge (klein) einzufügen. Wenn Sie zu größeren Mengen kommen, können Sie Pads für Pogo-Pins in Betracht ziehen (Sie müssten eine Halterung herstellen, um die PCB in Ausrichtung zu halten) oder in Ihren Mengen eines der Tag Connect-Kabel verwenden , die nur Löcher benötigen und unbestückt sind Pads (sie rasten auf der Platine ein).

Geben Sie hier die Bildbeschreibung ein

Dies ermöglicht Ihnen nicht nur, sich von der Notwendigkeit einer Programmieraktualisierung zu erholen, sondern ermöglicht es Ihnen auch, die Platinen vor der Programmierung von einem Montagehaus bestücken zu lassen, was die Logistik verbessern könnte.

Vorprogrammierung ist sicherlich eine Option, auch in Produktionsmengen (Sie können dies sogar vom Händler für Sie erledigen lassen), scheint jedoch hauptsächlich in den einfachsten Anwendungen verwendet zu werden. Gewöhnlich werden Chips auf Platinen nach dem Zusammenbau programmiert (oder können programmiert werden).

Das sieht nach einer guten Lösung aus - danke für deine Hilfe, diese Kabel sehen ziemlich nützlich aus!
Tag-Connect funktioniert dafür gut. Sie können auch Versionen ohne die Sicherungsstifte (das schwarze Plastik 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 etwa 0 $.

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

Aber hier ist 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 Leiterplatte mit kleinem Formfaktor wie hier (33 mm Durchmesser)Geben Sie hier die Bildbeschreibung ein

Sie können es mit Testpunkten belegen (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 eine gewisse Bearbeitungsfähigkeit und mindestens einen Säulenbohrer (weil die Pogo-Stifte genau vertikal sein müssen). Wenn Sie jedoch bereit sind, eine Prototyp-Leiterplatte zu riskieren, können Sie sie an eine Materialbahn klemmen und durch die Testpunktlöcher "stellen", um die Pogo-Stifte genau an der richtigen Stelle zu platzieren. (Ich bekomme 10 PCBs für einen lächerlich niedrigen Preis von Itead, also ist es keine große Sache, eine zu verlieren).

Mit einer Drehbank und Fräse ist es ein Kinderspiel, die Säulen und Klemmen herzustellen, um die Leiterplatte genau an der richtigen Stelle zu platzieren, aber mit einfacheren Werkzeugen ist es nicht allzu schwierig.

Dann bestücken Sie einfach jede Leiterplatte, programmieren und testen sie. Der lose Stecker geht normalerweise zu Header-Pins auf einem TI Launchpad, das zum Programmieren dieser MPU (TI MSP430) über die SBW-Schnittstelle verwendet wird, aber das gleiche Prinzip würde für JTAG oder andere Schnittstellen gelten. (Das braune Kabel oben ist ein Koaxialkabel, das ein Kalibrierungssignal zu einem Frequenzzähler überträgt).Geben Sie hier die Bildbeschreibung ein

Der Sockel aus poliertem Mahagoni ist optional; Ich bevorzuge einfach einen Steampunk-Stil für meine Testvorrichtungen.

Dies ist eine großartige Antwort und vielen Dank, dass Sie sich die Zeit genommen haben, eine so nützliche und detaillierte Antwort zu geben! Ich habe es nicht als Antwort markiert, weil ich in meinem Fall den Platz habe, um in einen ICSP-Header zu passen, aber es ist etwas, das ich im Hinterkopf behalten werde, wenn ich etwas Winziges bauen muss.
Das ist eine hübsche Vorrichtung (oder ist es eine Befestigung?). Gibt es etwas, um die Leiterplatte winkelmäßig zu codieren, oder ist sie nur nach Augenmaß ausgerichtet?
Ich beäuge die Pogo-Stifte durch die sichtbaren Testpunktlöcher, bevor ich die Klemmen nach unten drücke und einschwenke. Grob, aber es funktioniert. Auf einer größeren Platine würde ich ein paar Positionsstifte empfehlen, zB in den Montagelöchern der Platine.

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

Eines meiner Designs hat einen Stift mit sehr feinem Raster, für den ich einen Adapter gebaut habe (0,6 mm Vollkerndraht ist perfekt dafür):

Geben Sie hier die Bildbeschreibung ein

Ich verwende diesen Anschluss, wenn der Platz knapp ist. (Entschuldigung, es ist verschwommen, die Kamera meines Telefons ist naff).

Die zweite Anordnung, die ich oft verwende, besteht darin, den ICSP in einen anderen Header einzufügen. Wenn die ICSP-Pins auch als GPIO-Pins verwendet werden können und Sie sie mit einer lösbaren Verbindung verwenden können, ist es einfach genug, alle anderen ICSP-Verbindungen, die Sie möglicherweise benötigen (z. B. MCLR), zu minimalen Kosten hinzuzufügen. Dann stecken Sie einfach Ihren Programmierer mit einem Adapter, der einfach genug zu machen sein sollte, in diesen Header.

Der dritte Weg besteht darin, einen "gestaffelten" oder "versetzten" Header-Footprint für ICSP bereitzustellen. Ich verwende dies hauptsächlich auf Entwicklungsboards, auf denen der Endbenutzer vielleicht ICSP machen möchte, aber sein Board nicht ruinieren möchte, indem er einen Header dauerhaft einlötet. Diese Grundfläche ermöglicht es einem Standard-Header, ohne Lötmittel einzustecken und einen guten festen Kontakt herzustellen:

Geben Sie hier die Bildbeschreibung ein

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

Danke für die ausführliche Antwort - definitiv nützliche Informationen hier! Ich habe Ihre Antwort nicht akzeptiert, weil ich das vorgeschlagene Tag Connect-Kabel verwenden werde, obwohl die gestaffelte Pin-Methode genauso gut funktionieren würde.
Atmel bietet es definitiv als Option an.
Die gestaffelte Header-Grundfläche ist einfach genial. +1

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, selbst wenn die tatsächliche Verwendung der Funktion den Bau eines Geräts für diesen speziellen Zweck erfordern würde und man dies tut Planen Sie nicht, einen zu bauen. Wenn nach der Herstellung einer großen Charge von Platinen ein Firmware-Problem entdeckt wird, kann der Bau einer Vorrichtung, die diese Platinen neu programmieren kann, viel billiger sein, als sie zu überarbeiten oder neu zu bauen.

In einigen Fällen kann es ein guter Ansatz sein, das E/A-Layout einer Platine so auszuwählen, dass die für die In-Circuit-Neuprogrammierung erforderlichen Controller-Pins für Zwecke verwendet werden, die "natürlich" dazu führen, dass sie leicht zugänglichen Kontaktpunkten ausgesetzt sind. Beispielsweise könnten bei einer Platine, die für die Verwendung mit Metallkuppelkontakten ausgelegt ist, die Kontakte selbst mit den In-Circuit-Programmierstiften verdrahtet sein. Ein solches Design würde keinen Platz im Layout für einen Programmierstecker erfordern, sondern – insbesondere wenn der Batteriekontakt auch allgemein bemessen wäre – ermöglichen, dass ein Programmierstecker mit einfachen federbelasteten Kontakten auskommt.

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 entwarf ich ein Produkt, das sich unter Prozessorsteuerung selbst ausschalten sollte, indem der Prozessor an einem Pin "high" ausgab, wenn es "an" sein sollte. Bei der ersten Charge von 10.000 Einheiten funktionierte alles einwandfrei, aber bei einer späteren Charge begann der Prozessor zu versagen, 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, Es war möglich, das Problem zu beheben, indem die Einheiten neu programmiert wurden, sodass sie beim Aktivieren des Abschaltzustands in den Schlafmodus wechseln würden. Wäre eine solche Neuprogrammierung nicht möglich gewesen, wäre eine viel teurere Nacharbeit (oder auch Verschrottung und Neuaufbau) erforderlich gewesen.