Welche Möglichkeiten gibt es, MCUs in der Produktion zu programmieren?

Für mein Super-OSD-Projekt muss ich große Chargen von MCUs programmieren, wahrscheinlich etwa 10-15 Boards pro Stunde. Ich könnte einfach mein zuverlässiges PICkit 2 verwenden, um sie zu programmieren (es gibt zwei - vielleicht drei - auf jeder Platine), aber es wäre sehr mühsam, jede Datei (bis zu 128 KB und 256 KB groß) zu laden, auf "Programm" zu klicken und für jede zu wiederholen MCU, und würde es mir wahrscheinlich nicht erlauben, meine Zielgeschwindigkeit zu erreichen. Außerdem sind die MCUs oberflächenmontiert, daher muss ich Header auf der Platine haben, um dies zu ermöglichen. Idealerweise möchte ich diese Header entfernen, aber es ist möglicherweise keine Option.

Welche Optionen gibt es also für die Massenprogrammierung von MCUs - gibt es schnellere Möglichkeiten, dies zu tun? Ich habe ein Budget von weniger als 100 US-Dollar, also wären Dinge wie der MPLAB PM3 von Microchip für 895 US-Dollar zwar nett, aber keine Option.

Ich beschäftige mich mit PIC-Mikrocontrollern verschiedener Typen. Es gibt einen PIC16F887, PIC24FJ64GA002 und dsPIC33FJ128GP802. Allerdings interessiere ich mich auch für Optionen für AT32- und STM32-Prozessoren, da ich diese möglicherweise auch verwende.

Bitte beachten Sie, dass ich derzeit nicht erwäge, vorprogrammierte Chips bei den Herstellern zu bestellen, da sich die Software bis zum Eintreffen der Chips ändern kann und wegen der damit verbundenen zusätzlichen Kosten.

15 Bretter pro Stunde sind vier Minuten pro Brett. Wie lange braucht das PICkit 2, um Ihr Teil zu programmieren?
@markrages: Es sind ungefähr 20 Sekunden mit einer kleinen Codebasis (~ 6 KB). Ich stelle mir vor, dass es mit mehr Code bis zu anderthalb Minuten für jedes Board dauern könnte, was mir nicht viel Raum zum Atmen lässt.
@Markrages, ich kann bezeugen, ich habe ein sehr großes Projekt mit dem ICD2 LE geschrieben und es würde 2 oder 3 Minuten dauern, es zu programmieren. Ziemlich nervig. Mit dem Pickit 3 schreit es jedoch schnell.

Antworten (7)

Was wir für die Produktion tun, ist, zuerst ein Programm in den PIC zu laden, das die Platine testet (unter Verwendung einer kleinen Testplatine, die unabhängig überprüft, ob die 3,3-V-Schiene mit ein paar Komparatoren innerhalb der Spezifikation liegt, und dann verwenden wir den ADC auf dem PIC, um alles andere zu überprüfen.Wir hatten genug Pins übrig, um dies zu ermöglichen (es waren einige zusätzliche Widerstände erforderlich, um als Spannungsteiler für die Spannungen über 3 V zu fungieren).

Nachdem die Tests bestanden sind, wird der echte Produktionscode in das Mikro geflasht. Es werden einige zusätzliche Tests durchgeführt, und die Leiterplatte ist bereit für den Einbau in ein Gehäuse.

Dies geschieht alles über ein Programm auf dem PC, bei dem ein Bediener nur die Platine anschließen, auf eine Schaltfläche klicken und auf das Ergebnis PASS/FAIL warten muss. Alle Testergebnisse (einschließlich ADC-Messungen) werden protokolliert. Der gesamte Prozess (einschließlich der Programmierung der PICs über einen ICD 3) wird über das PC-Programm gesteuert, das Batch-Skripte ausführt, um die eigentliche Programmierung vorzunehmen. Die Kommunikation mit dem PIC zur Steuerung der Tests erfolgt über einen der UARTs, dessen Pins auf die Testplatine geführt werden (zusätzlich zu den für die Programmierung erforderlichen Pins haben wir also auch mindestens TX/RX).

Bei unserem Lohnfertiger haben wir mehrere solcher Stationen aufgebaut.

Übrigens ist der ICD 3 viel schneller als der ICD 2 (USB 2.0 vs. 1.1).

Das Pickit 3 läuft auch mit USB 2.0, weshalb ich es liebe. ICD3 ist ein wenig teuer für mich. Meine Firma verwendet MSP430s, also ist es ganz anders.
Können Sie erklären, wie Sie den IC programmieren? Dein selbst gebrautes ICSP oder was?
@ErikFriesen Ich verwende entweder einen ICD 3 oder REAL Ice für Microchip PICs. Beide sind wahrscheinlich für die meisten Bastler zu teuer (200 $ bzw. 500 $). Andere Chipfamilien (Freescale, Silicon Labs usw.) haben ihre eigene Reihe von Programmierern. Ich schließe Header auf den PCBs ein, um sie mit den Programmierern zu verbinden. Nachdem ein Gerät im Außeneinsatz ist und über eine drahtlose Verbindung (Mobilfunk oder WiFi) verfügt, kann es drahtlos aktualisiert werden.
Ich habe beide und die pm3. Die pm3 erledigt nicht alle Teile ohne Verbindung zum PC auf > X2.15, sie teilt sich auf der pic32-Leitung auf.

Holen Sie sich ein Pickit 3 und versetzen Sie es in den Programmer-to-Go-Modus.

Sie sagen ihm, Sie möchten, dass der Programmierer in den Modus wechselt, und Sie laden Ihr Rom. Dann benötigen Sie keinen USB-Anschluss mehr für mehr als Strom (ja, Sie brauchen ihn immer noch für Strom).

Wenn Sie Geräte anschließen, drücken Sie die Programmtaste und es lädt das Programm und lässt Sie wissen, wann es fertig ist, dauert weniger als 20 Sekunden pro Board. Kostet nicht mehr als 50$

Das PICkit 2 ist kein Produktionsprogrammierer. Sie müssen sich wirklich einen ICD 3 besorgen, der als Produktionsprogrammierer eingestuft wird, wenn Sie sicher sein wollen, dass die Geräte richtig programmiert werden. Alternativ können Sie Ihre vorprogrammierten Chips bei Microchip oder einem Händler kaufen, wenn Sie den Code fertig haben.

Dies wäre der richtige Weg, um dies zu tun.
Bitte geben Sie ein Zitat für den Kommentar "Produktionsprogrammierer" an. Offensichtlich ist das Pickit physikalisch nicht robust genug für eine industrielle Anwendung. Aber die Signale, die es dem Ziel präsentiert, sind die gleichen wie bei jedem anderen Programmierer. (Die ursprüngliche Bedeutung von "Produktionsprogrammierer" ist, dass bestimmte Programmierer in der Lage waren, die Versorgungsspannung zu variieren und den Programminhalt zurückzulesen, um die korrekte Programmierung zu überprüfen. Microchip hat dies seit etwa einem Jahrzehnt nicht mehr in seinen Datenblättern erwähnt, aber die Folklore lebt weiter .. Ironischerweise kann das PICkit 2 die Versorgungsspannung variieren...)
Dies ist kürzlich im Microchip-Forum aufgetaucht. Die ICD 3-Dokumentation besagt, dass es sich um einen Produktionsprogrammierer handelt, im Gegensatz zum PICkit 2/3, von dem jemand von Microchip sagte, dass es sich nicht um Produktionsprogrammierer handelt.

Die Programmierung von Mikrocontrollern ist normalerweise ein kleiner Teil eines größeren Funktionstestprozesses. Wie sieht der Rest Ihres Testplans aus?

Für jedes nicht triviale Produkt müssen Sie ein weiteres Board entwerfen, um das Board in der Produktion zu testen. Im Allgemeinen verfügt das Testboard über eine Computerschnittstelle und verbindet das Target mit Testgeräten mit RS-232- oder GPIB-Fähigkeiten. Dann kann ein Computer ein Skript durchlaufen, das Board programmieren und dann alle geeigneten Tests ausführen.

Es ist hilfreich, dieses Testboard auch für die Firmware-Entwicklung laufen zu lassen. Implementieren Sie genügend Tests, um Regressionen in der Firmware zu erkennen.

Der Anfang Ihres Testboards ist wahrscheinlich die PICkit 2-Schaltung. Die Firmware ist Open Source, sie kümmert sich um den Programmierteil, sie hat einen praktischen Bootloader und Sie können sie erweitern, um alles andere zu tun, was Ihr Funktionstest benötigt.

Ich schreibe meine Produktionstestskripte gerne in Python, aber ich denke, der Industriestandard ist Labview.

Ich verwende Python viel, aber nie für allgemeines Skripting - normalerweise überlasse ich das Bash/Shell oder Perl. Danke für die Tipps.

Eine Methode, die Sie verwenden könnten, besteht darin, eine Klemme oder etwas Ähnliches wie ein Testbett ( Beispielvideo ) mit Pogo-Pins herzustellen , sodass Sie keine Pins für die Programmieranschlüsse löten müssen. Ein PCB-Edge-Steckverbinder, wie z. B. ein Diskettenkabel im alten Stil, ist möglicherweise eine billigere (aber mehr Platinenfläche beanspruchende) Option.

Sie müssen einen Weg finden, jeden Mikrocontroller zu programmieren, wahrscheinlich mit mehreren Programmierern oder einer Batch-Datei, wie David vorgeschlagen hat. Sie könnten es mit einem großen Schalter (vielleicht einem der Drehschalter einer alten Druckerfreigabe-Schaltbox oder einigen Relais) kombinieren, um den Programmierer wieder von einem PIC zu einem anderen zu verbinden, ohne den Stecker zu bewegen.

Die Techniken gelten auch für andere programmierbare Steuerungen im System, obwohl die JTAG-fähigen es noch einfacher machen können, da JTAG TAP für die Verkettung ausgelegt ist, sodass der Programmierer nicht von Chip zu Chip bewegt werden muss. Auch für Chips wie AVRs, die normale Logikpegel zum Programmieren verwenden können, könnte das Umschalten einfacher werden.

Sie brauchen nicht einmal Pogo-Pins: Ich habe einen Header-Pin in das PICkit 2 gesteckt und kann programmieren, indem ich ihn in die Löcher in der Platine stecke und ein wenig zur Seite drücke, dann halte diesen Druck aufrecht, bis die Programmierung abgeschlossen ist.
@Markrages, so mache ich das bei der Arbeit.

Es gibt ein Befehlszeilenprogramm namens PK2CMD für Windows und Linux, mit dem Sie Ihre PICs mit dem PicKit programmieren können (so dass Sie MPLAB oder eine andere GUI nicht verwenden müssen). Sie könnten Ihre bevorzugte Skriptsprache verwenden, um ein kleines Programm zu erstellen, das den richtigen PK2CMD-Befehl ausführt, wenn Sie eine Taste drücken. Dies würde die Computerseite Ihrer Produktion weniger mühsam machen (nur 1 Tastendruck pro MCU), aber Sie bräuchten immer noch eine Möglichkeit, das PicKit mit jeder Ihrer 3 MCUs zu verbinden.

Der Programmierservice von Microchip war sehr billig, als ich ihn das letzte Mal benutzt habe. Sobald Sie die Einrichtungskosten decken, ist er sehr billig - ein paar Cent pro Chip für 12F - nicht auf High-End-Chips. Sie können auch Markierungen/Beschriftungen usw. vornehmen. Selbst wenn Sie beabsichtigen, die FW zu ändern, kann dies durch einen vorprogrammierten Bootloader einfacher werden.

Als Produktionsprogrammierer mag ich den Asix Presto – tonnenweise Optionen für Sachen wie Serialisierung und sehr schnell