
Vor einigen Jahren machte ich Bekanntschaft mit den russischen Mikrocontrollern der Firma Milandr. Es war 2013, als Ingenieure die ersten Ergebnisse des Programms „Entwicklung der elektronischen Bauelementebasis und der Radioelektronik“ für die Jahre 2008-2015 lebhaft diskutierten. Zu diesem Zeitpunkt war bereits der Controller К1986ВЕ9x (Cortex-M3-Kern) veröffentlicht worden und gerade erst der Controller 1986ВЕ1Т (Cortex-M1-Kern) erschienen. Letzterer wurde im Kunststoffgehäuse LQFP-144 unter der Bezeichnung К1986ВЕ1QI (Aviation) im Dokumentation und als MDR32F1QI auf dem Chip selbst gekennzeichnet. Auf der Website des Herstellers trägt er das Suffix „Aviation“, da er Schnittstellen besitzt, die für die Luftfahrt spezifisch sind (ARINC 429, MIL_STD_1553).
Unerwartet, aber zum Zeitpunkt der Verbreitung dieser Controller hatte die Firma „Milandr“ bereits Debugging-Kits und eine Bibliothek mit Unterprogrammen für die Arbeit mit Peripheriegeräten vorbereitet, „aber ohne jegliche zusätzlichen Garantien oder Verpflichtungen hinsichtlich der Richtigkeit der Bibliothek“. Die Bibliothek ähnelt der Standard Peripheral Library von STMicroelectronics. Insgesamt haben alle ARM-Controller, die auf dem Cortex-M-Kern basieren, viele Gemeinsamkeiten. Aus diesem Grund verlief die Einarbeitung in die neuen russischen Controller schnell. Und für diejenigen, die die offiziellen Debugging-Kits kauften, wurde während der Nutzung technische Unterstützung bereitgestellt.

Debugging-Kit für den Mikrocontroller 1986ВЕ1Т, © Milandr
Mit der Zeit traten jedoch die „Kinderkrankheiten“ der neuen Chips und Bibliotheken zutage. Die Testbeispiele der Firmware funktionierten ohne sichtbare Probleme, aber bei wesentlichen Modifikationen traten häufig Fehler und Abstürze auf. Die erste „Schwalbe“ in meiner Praxis waren unerklärliche Abstürze des CAN-Controllers. Nach einem Jahr wurde bei dem frühen Revision des Controllers 1986ВЕ1Т (Aviation) ein Problem mit dem Modul entdeckt. . Insgesamt waren alle Revisionen dieser Mikrocontroller bis 2016 nur eingeschränkt brauchbar. Viel Zeit und Nerven wurden auf die Identifizierung dieser Probleme verwendet, deren Bestätigung man heute in den .
Eine unangenehme Besonderheit war, dass ich nicht auf Testplatinen, sondern auf Prototypenplatten von Geräten arbeiten und Fehler beheben musste, die für die serielle industrielle Produktion geplant waren. Abgesehen vom JTAG-Anschluss war in der Regel nichts vorhanden. Es war schwierig und unpraktisch, sich mit einem Logikanalysator zu verbinden, und in der Regel gab es keine LEDs und Bildschirme. Aus diesem Grund kam mir der Gedanke, meine eigene Testplatine zu entwickeln.
Einerseits gab es auf dem Markt Marken-Testkits sowie hervorragende Platten von der Firma LDM-Systems aus Zelenograd. Andererseits bringen die Preise für diese Produkte in eine Blockade, und die grundlegenden Funktionen ohne Erweiterungsplatinen entsprechen nicht den Erwartungen. Eine Platine mit einem montierten Controller und einem Stiftsteckanschluss ist für mich uninteressant. Interessantere Platinen sind teuer.

Testplatine MILANDR LDM-HELPER-K1986BE1QI-FULL, © LDM Systems
Die Preispolitik und das Marketing der Firma „Milandr“ sind eigenwillig. So gibt es die Möglichkeit, kostenlos Muster einiger Mikrochips zu erhalten, aber dies ist nur juristischen Personen zugänglich und mit einem bürokratischen Abenteuer verbunden. Insgesamt sind Mikroschaltungen in metallkeramischen Gehäusen im wahrsten Sinne des Wortes Gold wert. Beispielsweise kostet der Controller 1986ВЕ1Т in Moskau zwischen 14.000 und 24.000 Rubel. Der Mikrochip für statischen Speicher 1645РУ6У kostet ab 15.000 Rubel. Und solche Preise gelten für das gesamte Sortiment. Infolgedessen sparen selbst spezialisierte Forschungsinstitute mit staatlichen Aufträgen und meiden solche Preise. Mikroschaltungen in Kunststoffgehäusen für zivile Anwendungen sind deutlich günstiger, aber sie sind bei beliebten Anbietern nicht verfügbar. Zudem ist die Qualität von Mikroschaltungen in Kunststoffgehäusen, wie mir scheint, schlechter als die der „goldenen“. Beispielsweise konnte ich den Controller K1986BE1QI nicht bei 128MHz ohne Erhöhung des Parameters Flash-Latenz starten. Gleichzeitig stieg die Temperatur dieses Controllers auf 40-50°C. Der Controller 1986BE1T („golden“) hingegen startete bei 128MHz ohne zusätzliche Einstellungen und blieb kühl. Er ist wirklich gut.

„Goldener“ Mikrocontroller 1986BE1T, (c) Миландр
Ich hatte Glück, dass der Mikrocontroller im Kunststoffgehäuse tatsächlich im Einzelhandel bei LDM Systems erhältlich ist und alle Schaltpläne frei zugänglich sind. Schlecht ist, dass auf der Website auf dem Foto des Controllers eine Markierung zu sehen ist, die besagt, dass es sich um die Revision 4 aus dem Jahr 2014 handelt, also mit Mängeln. Ich habe lange darüber nachgedacht – kaufen oder nicht kaufen. So vergingen einige Jahre…
Der Gedanke, eine Testplatine zu erstellen, ist nicht verschwunden. Allmählich habe ich alle Anforderungen formuliert und überlegt, wie ich alles auf einer Platine unterbringen kann, um es kompakt und kostengünstig zu gestalten. Parallel dazu bestellte ich bei Chinesen die fehlenden Komponenten. Ich hatte es nicht eilig – ich machte alles für mich selbst. Chinesische Lieferanten sind für ihre Nachlässigkeit bekannt – ich musste das Gleiche an verschiedenen Orten bestellen, um alles zu bekommen, was ich brauchte. Darüber hinaus stellte sich heraus, dass einige Speicherchips gebraucht waren – offensichtlich aus defekten Geräten herausgelöst. Das holte mich später ein.
Den Mikrocontroller Milandr K1986ВЕ1QI (Luftfahrt) zu kaufen, ist keine einfache Aufgabe. Im selben Geschäft „Chip und Dip“ fand ich nur K1986BE92QI im Bereich „Positionen auf Bestellung“ für 740 Rubel, aber der war für mich nicht geeignet. Die einzige Möglichkeit war, bei LDM-Systems eine nicht frische Revision für 2000 Rubel zu kaufen. Da ich nirgendwo anders ein Ersatzteil finden konnte, entschied ich mich, das zu kaufen, was verfügbar war. Zu meiner angenehmen Überraschung verkauften sie mir einen brandneuen Controller aus Dezember 2018, Revision 6+ (1820). Auf der Website ist jedoch immer noch das alte Foto zu finden, und zum Zeitpunkt des Schreibens des Artikels ist der Controller nicht auf Lager…

Mikrocontroller K1986ВЕ1QI (Luftfahrt) in technologischem Gehäuse, (c) Foto des Autors
Die wichtigsten technischen Merkmale meiner Testplatine MDB1986 folgende:
- eingebauter Debugger-Programmierer, kompatibel mit J-Link und CMSIS-DAP;
- statischer Speicher 4 Mbit (256 k x 16, 10 ns);
- Flashspeicherchip 64 Mbit, Winbond 25Q64FVSIG;
- Sender-Empfänger-Interface RS-232 mit RTS- und CTS-Leitungen;
- Schnittstellen und Anschlüsse für Ethernet, USB, CAN;
- Controller für 7-Segment-Displays MAX7221;
- Stiftanschluss für die Arbeit mit MKIO (MIL_STD_1553) und ARINC429;
- Fototransistor Everlight PT17-21C;
- fünf farbige LEDs, ein Reset-Knopfdruck und zwei benutzerdefinierte Tasten;
- Stromversorgung über den USB-Port 5 Volt;
- Abmessungen der Leiterplatte 100 x 80 mm
Ich mochte die STM-Discovery-Boards, weil sie einen integrierten Programmier-Debugger – ST-Link – haben. Der originale ST-Link funktioniert nur mit Controllern von STMicroelectronics, aber vor ein paar Jahren gab es die Möglichkeit, die Firmware von ST-Link zu aktualisieren und den SEGGER J-Link OB (on-board) Debugger zu erhalten. Juristisch gibt es eine Einschränkung in der Nutzung dieses Debuggers nur mit STMicroelectronics-Boards, jedoch ist das tatsächliche Potenzial unbegrenzt. Somit kann man mit J-Link OB auf einem Debugging-Board einen integrierten Programmier-Debugger haben. Ich möchte darauf hinweisen, dass im Produkt „LDM-Systems“ der CP2102 (Usb2Uart) Konverter verwendet wird, der ausschließlich für das Flashen geeignet ist.

Die Mikrocontroller STM32F103C8T6, echt und unecht, (c) Foto des Autors
Also musste ich einen originalen STM32F103C8T6 kaufen, da die Originalfirmware nicht korrekt mit dem Klon funktionieren würde. Ich hatte Zweifel an dieser Aussage und beschloss, den Controller CS32F103C8T6 der chinesischen Firma CKS auszuprobieren. Mit dem Controller selbst hatte ich keine Beschwerden, aber die Originalfirmware von ST-Link funktionierte nicht. J-Link funktionierte teilweise – das USB-Gerät wurde erkannt, aber der Programmer erfüllte seine Funktionen nicht und erinnerte ständig daran, dass es „defective“ war.

Fehler beim Arbeiten des Debuggers mit einem nicht-originalen Controller
Ich habe mich damit nicht zufrieden gegeben und zuerst eine Firmware zum Blinken der LED geschrieben, dann die IDCODE-Anfrage über das JTAG-Protokoll implementiert. Der ST-Link-Programmierer, den ich auf meinem Discovery-Board hatte, und das Programm ST-Link Utility haben CS32F103C8T6 problemlos geflasht. Letztendlich habe ich mich davon überzeugt, dass mein Board funktioniert. Zu meiner Freude gab der Ziel-Controller K1986ВЕ1QI (aviation) brav seinen IDCODE über die TDO-Leitung aus.

Oszi-Graph der Signalleitung TDO mit dem kodierten IDCODE-Antwort, (c) Foto des Autors

Da kam der SWD-Port zur Debuggung des Debuggers und zur Überprüfung des IDCODE zur Hilfe.
Es blieb die Option mit dem Debugger . Ein Projekt aus den Quellen von ARM zusammenzustellen, ist keine leichte Aufgabe. Ich nahm das Projekt von , und dann versuchte ich noch DAP42. Leider hing Keil uVision und wollte nicht mit ihnen arbeiten. Schließlich habe ich den Debugger-Chip durch den Original STM32F103C8T6 ersetzt und habe das Thema nicht weiter verfolgt.

Erfolgreiche Arbeit des integrierten Debuggers J-Link STLink V2
Als alle Schlüsselkomponenten der zukünftigen Testplatine vorhanden waren, tauchte ich in Eagle CAD ein und stellte fest, dass sie nicht in der Bauteilebibliothek waren. Es blieb mir nichts anderes übrig, als sie selbst zu zeichnen. Dabei habe ich auch die Platzierungen für den Speicher, den HanRun-Anschluss für Ethernet sowie Rahmen für die Widerstände und Kondensatoren hinzugefügt. Die Projektdatei und die Bauteilibibliothek sind zu finden .
Schaltung der Testplatine MDB1986
Die Platine wird von einer Gleichstromquelle mit 5 Volt versorgt, die aus dem USB-Port abgezweigt wird. Insgesamt gibt es auf der Platine zwei USB Type-B-Ports. Einer ist für den Programmer, der andere für den K1986BE1QI-Controller. Die Platine kann von einer dieser Quellen oder von beiden gleichzeitig betrieben werden. Eine einfache Belastungsregelung und Schutz der Stromleitungen sind mit Schottky-Dioden realisiert, auf dem Schaltplan D2 und D3 (SS24). Außerdem sieht man auf dem Schaltplan die selbstheilenden Sicherungen F1 und F2 mit 500 mA. Die Signalleitungen des USB-Ports sind durch die USBLC6-2SC6-Diodenbaugruppe geschützt.
Der Schaltplan des ST-Link-Debuggers/Programmers ist vielen bekannt und kann in den Dokumentationen zu den STM32-Discovery-Platinen und anderen Quellen gefunden werden. Für das initiale Flashen des ST-Link/J-Link-OB/DAP Klons (nach Wahl) habe ich die Linien SWDIO (PA13), SWCLK (PA14) und GND herausgeführt. Viele verwenden für das Flashen UART und müssen die BOOT-Jumper ziehen. Mir ist SWD jedoch bequemer, zudem ermöglicht dieses Protokoll das Debugging.
Fast alle Komponenten der Platine werden mit 3,3 Volt versorgt, die von dem Spannungsregler AMS1117-3.3 kommen. Zur Unterdrückung von elektromagnetischen Störungen und Stromspitzen werden LC-Filter aus Kondensatoren und Drosseln der Serie BLM31PG verwendet.
Besonders erwähnenswert ist der Treiber des 7-Segment-Displays MAX7221. Laut Spezifikation wird eine Versorgungsspannung von 4 bis 5,5 Volt empfohlen, und das hohe Signalniveau (logische Eins) beträgt mindestens 3,5 V (0,7 x VCC) bei 5 V Versorgung. Beim K1986BE1QI-Controller (Aviation) entspricht der logische Eins Ausgangniveau einer Spannung von 2,8 bis 3,3 V. Offensichtlich gibt es eine Diskrepanz bei den Signalpegeln, die die normale Funktion beeinträchtigen könnte. Ich habe beschlossen, den MAX7221 mit 4 V zu speisen und die Signalpegel auf 2,8 V (0,7 x 4 = 2,8) zu senken. Dazu wird eine Schottky-Diode D4 (RS1A oder FR103) in die Versorgungskette des Treibers geschaltet. Insgesamt beträgt der Spannungsabfall 0,9 V (Schottky-Diode 0,3 V und Diode 0,6 V), und alles funktioniert.
Die meisten Ports des Mikrocontrollers K1986ВЕ1QI (Aviation) sind mit Signalen bis zu 5V kompatibel. Daher gibt es keine Probleme bei der Verwendung des CAN-Transceivers MCP2551, der ebenfalls mit 5V betrieben wird. Als RS-232-Transceiver ist in dem Schaltplan der Chip MAX3232 angegeben, aber tatsächlich habe ich den SN65C3232D von Texas Instruments verwendet, da dieser mit 3,3V arbeitet und Geschwindigkeiten von bis zu 1Mbit/s ermöglicht.
Auf der Platine befinden sich 4 Quarzresonatoren – einer für den Debugger (8MHz) und drei für den Zielmikrocontroller K1986ВЕ1QI (Aviation) mit Nennfrequenzen von 32,768kHz, 16MHz, 25MHz. Diese Komponenten sind notwendig, da die Parameter des eingebauten RC-Generators große Abweichungen von 6 bis 10 MHz aufweisen. Eine Frequenz von 25MHz ist erforderlich für den Betrieb des integrierten Ethernet-Controllers. Auf der Website von Milandr ist aus unerklärlichen Gründen vermerkt, dass der Ethernet-Anschluss im Kunststoffgehäuse fehlt. Wir werden jedoch auf die Spezifikationen und Fakten achten.
Ein wichtiger Anreiz für die Entwicklung meines eigenen Debugging-Boards war die Möglichkeit, mit dem externen Systembus EBC (External Bus Controller) zu arbeiten, der im Grunde genommen ein paralleler Port ist. Der Mikrocontroller K1986ВЕ1QI (Aviation) ermöglicht das Anschließen und Arbeiten mit externen Speicherchips und Peripheriegeräten, wie z.B. AD-Wandler, FPGAs usw. Die Möglichkeiten des externen Systembusses sind ziemlich groß – es ist möglich, mit 8-Bit-, 16-Bit- und 32-Bit-statischen RAMs, ROMs und NAND-Flash zu arbeiten. Für das Lesen/Schreiben von 32-Bit-Daten kann der Controller automatisch 2 entsprechende Operationen für 16-Bit-Chips ausführen, und für 8-Bit-Chips sind es 4 Operationen. Es ist offensichtlich, dass eine 32-Bit-Eingabe-/Ausgabe-Operation am schnellsten mit einem 32-Bit-Datenbus durchgeführt werden kann. Zu den Nachteilen zählt die Notwendigkeit, im Programm mit 32-Bit-Daten zu arbeiten, während auf der Platine 32 Leiterbahnen verlegt werden müssen.

Chips für statisches RAM, gebraucht (rate mal, welcher defekt ist)
Eine ausgewogene Lösung ist die Verwendung von 16-Bit-Speicherchips. Ich habe zur Verfügung stehende Chips von Integrated Silicon Solutions Inc. (ISSI IS61LV25616AL, 16 x 256k, 10 ns, 3.3V). Natürlich hat die Firma 'Milandr' ihre eigenen statischen Speichermodule. , aber sie sind zu teuer und nicht verfügbar. Eine Alternative sind die kompatiblen Samsung K6R4016V1D. Ich hatte bereits erwähnt, dass die Chips gebraucht waren und das Exemplar, das ich ursprünglich installiert hatte, fehlerhaft war und chaotische Werte in der 15. Datenleitung lieferte. Es dauerte mehrere Tage, um Hardwarefehler zu finden, und umso mehr war das Gefühl der Zufriedenheit, als ich den defekten Chip durch einen funktionierenden ersetzte. Wie dem auch sei, die Geschwindigkeit im Umgang mit dem externen Speicher lässt zu wünschen übrig.
Externe Bus und StandAlone-ModusDer Mikrocontroller К1986ВЕ1QI (Avionik) verfügt über einen einzigartigen StandAlone-Modus, der den direkten Zugriff von extern auf die Ethernet-Controller und MKIO (MIL_STD_1553) über den externen Bus ermöglicht, während sich der Kern im Reset-Zustand befindet, d.h. nicht verwendet wird. Dieser Modus ist praktisch für Prozessoren und FPGAs, die über kein Ethernet und/oder MKIO verfügen.
Das Anschlusschema ist wie folgt:
- Datenbus MCU(D0-D15) => SRAM(I/O0-I/O15),
- Adressbus MCU(A1-A18) => SRAM(A0-A17),
- Steuerung MCU(nWR,nRD,PortC2) => SRAM (WE,OE,CE),
- SRAM(UB,LB) sind entweder angeschlossen oder mit einem Widerstand auf Masse gezogen.
Die CE-Leitung ist über einen Widerstand mit der Stromversorgung verbunden, die Ausgänge zur Byteauswahl des MCU(BE0-BE3) werden nicht verwendet. Unter dem Spoiler finden Sie den Code zur Initialisierung der Ports und des externen Buscontrollers.
Initialisierung der Ports und des EBC (externen Buscontrollers)
void SRAM_Init (void)
{
EBC_InitTypeDef EBC_InitStruct = { 0 };
EBC_MemRegionInitTypeDef EBC_MemRegionInitStruct = { 0 };
PORT_InitTypeDef initStruct = { 0 };
RST_CLK_PCLKcmd (RST_CLK_PCLK_EBC, ENABLE);
PORT_StructInit (&initStruct);
//--------------------------------------------//
// DATEN PA0..PA15 (D0..D15) //
//--------------------------------------------//
initStruct.PORT_MODE = PORT_MODE_DIGITAL;
initStruct.PORT_PD_SHM = PORT_PD_SHM_ON;
initStruct.PORT_SPEED = PORT_SPEED_FAST;
initStruct.PORT_FUNC = PORT_FUNC_MAIN;
initStruct.PORT_Pin = PORT_Pin_All;
PORT_Init (MDR_PORTA, &initStruct);
//--------------------------------------------//
// Adresse PF3-PF15 (A0..A12), A0 - nicht benutzt. //
//--------------------------------------------//
initStruct.PORT_FUNC = PORT_FUNC_ALTER;
initStruct.PORT_Pin = PORT_Pin_4 | PORT_Pin_5 |
PORT_Pin_6 | PORT_Pin_7 |
PORT_Pin_8 | PORT_Pin_9 |
PORT_Pin_10 | PORT_Pin_11 |
PORT_Pin_12 | PORT_Pin_13 |
PORT_Pin_14 | PORT_Pin_15;
PORT_Init (MDR_PORTF, &initStruct);
//--------------------------------------------//
// Adresse PD3..PD0 (A13..A16) //
//--------------------------------------------//
initStruct.PORT_FUNC = PORT_FUNC_OVERRID;
initStruct.PORT_Pin = PORT_Pin_0 | PORT_Pin_1 |
PORT_Pin_2 | PORT_Pin_3;
PORT_Init (MDR_PORTD, &initStruct);
//--------------------------------------------//
// Adresse PE3, PE4 (A17, A18) //
//--------------------------------------------//
initStruct.PORT_FUNC = PORT_FUNC_ALTER;
initStruct.PORT_Pin = PORT_Pin_3 | PORT_Pin_4;
PORT_Init (MDR_PORTE, &initStruct);
//--------------------------------------------//
// Steuerung PC0,PC1 (nWE,nOE) //
//--------------------------------------------//
initStruct.PORT_FUNC = PORT_FUNC_MAIN;
initStruct.PORT_Pin = PORT_Pin_0 | PORT_Pin_1;
PORT_Init (MDR_PORTC, &initStruct);
//--------------------------------------------//
// Steuerung PC2 (nCE) //
//--------------------------------------------//
initStruct.PORT_PD = PORT_PD_DRIVER;
initStruct.PORT_OE = PORT_OE_OUT;
initStruct.PORT_FUNC = PORT_FUNC_PORT;
initStruct.PORT_Pin = MDB_SRAM_CE;
PORT_Init (MDR_PORTC, &initStruct);
//--------------------------------------------//
// Initialisiere den EBC-Controller //
//--------------------------------------------//
EBC_DeInit();
EBC_StructInit(&EBC_InitStruct);
EBC_InitStruct.EBC_Mode = EBC_MODE_RAM;
EBC_InitStruct.EBC_WaitState = EBC_WAIT_STATE_3HCLK;
EBC_InitStruct.EBC_DataAlignment = EBC_EBC_DATA_ALIGNMENT_16;
EBC_Init(&EBC_InitStruct);
EBC_MemRegionStructInit(&EBC_MemRegionInitStruct);
EBC_MemRegionInitStruct.WS_Active = 2;
EBC_MemRegionInitStruct.WS_Setup = EBC_WS_SETUP_CYCLE_1HCLK;
EBC_MemRegionInitStruct.WS_Hold = EBC_WS_HOLD_CYCLE_1HCLK;
EBC_MemRegionInitStruct.Enable_Tune = ENABLE;
EBC_MemRegionInit (&EBC_MemRegionInitStruct, EBC_MEM_REGION_60000000);
EBC_MemRegionCMD(EBC_MEM_REGION_60000000, ENABLE);
// RAM aktivieren (nCE)
PORT_ResetBits (MDR_PORTC, MDB_SRAM_CE);
}
Ein Mikrocontroller im LQFP-144-Gehäuse und ein Speicher im TSOP-44-Gehäuse haben viele verbundene Pins und nehmen viel Platz auf der Platine ein. Mit meiner Erfahrung in der Lösung von Optimierungsproblemen im Bereich Wirtschaft war es für mich offensichtlich, dass diese Chips zuerst auf der Platine platziert werden müssen. In verschiedenen Quellen habe ich lobende Bewertungen über . Ich habe die Testversion heruntergeladen und konnte mein Projekt aus Eagle CAD nur exportieren, nachdem ich fast alle Komponenten gelöscht hatte. Leider konnte mir das Programm TopoR nicht einmal helfen, 10 Elemente auf der Platine anzuordnen. Zuerst wurden alle Komponenten in die Ecke gesetzt und dann am Rand platziert. Diese Variante hat mich nicht zufrieden gestellt, und ich habe lange manuelle Layout-Designs in meiner gewohnten Umgebung Eagle CAD durchgeführt.
Ein wichtiges Element der Platine ist die Siebdruckgrafik. Auf der Platine für das Debugging sollten nicht nur die Bezeichnungen der elektronischen Komponenten, sondern auch alle Anschlüsse beschriftet sein. Auf der Rückseite der Platine habe ich Erinnerungstabellen mit den Funktionen der Ports des Controllers (Grundfunktion, alternative, übertragene, tatsächliche) angebracht. Die Herstellung der Platinen habe ich in China bei dem bekannten Unternehmen PCBWay bestellt. Ich möchte nicht übertreiben, denn die Qualität ist gut. Sie können es besser machen, mit geringeren Toleranzen, aber .

Die hergestellten Platinen MDB1986, (c) Foto des Autors
Ich musste die Komponenten „auf die Schnelle“ mit einem 40-Watt-Lötkolben und dem Lot ПОС-61 verlöten, weil ich selten lötete, 1-2 Mal im Jahr, und die Lötpaste eingetrocknet war. Ich musste auch den chinesischen Controller CS32F103 gegen den originalen STM32F103 austauschen und dann auch den Speicher wechseln. Insgesamt bin ich mit dem Ergebnis jetzt vollkommen zufrieden, obwohl ich die Funktionalität von RS-232 und CAN noch nicht getestet habe.

Die Debugging-Platine MDB1986 in Aktion — leuchtet und heizt, (c) Foto des Autors
Auf der Website „Milandra“ findet man genügend Serien 1986BE9 (Kern Cortex-M3), aber für den Mikrocontroller K1986ВЕ1QI (Aviation) sehe ich da nichts. Nach der Durchsicht der dort veröffentlichten Materialien, Lehrveranstaltungen und Laborarbeiten für Hochschulen freue ich mich, dass landesweit Fachkräfte für die Arbeit mit russischen Controllern ausgebildet werden. Die meisten Lehrmaterialien bereiten auf die Arbeit mit I/O-Ports, Timer, ADC, DAC, SPI, UART vor. Verschiedene Entwicklungsumgebungen IDE (Keil, IAR, CodeMaster) werden verwendet. In einigen Fällen wird mit CMSIS-Registern programmiert, während in anderen die MDR Library genutzt wird. Es ist notwendig, die Ressource , die zahlreiche Artikel von praktischen Programmierern enthält, nicht zu vergessen. Und natürlich sollte man das .
Duma von MilandrMikroelektronik in Russland entwickelt sich, und in diesem Prozess spielt die Firma „Milandr“ eine bedeutende Rolle. Es erscheinen neue interessante Mikrocontroller, wie zum Beispiel 1986ВЕ81Т und „Electrosila“ mit Schnittstellen wie SpaceWire und MKEO (gleich wie bei 1986BE1 und möglicherweise mit denselben Problemen) usw. Aber für einfache Studenten, Dozenten und Bauingenieure ist es nicht realistisch, solche Chips zu kaufen. Das bedeutet, dass die Gemeinschaft der Ingenieure nicht schnell Fehler und Probleme dieses Chips erkennen kann. Ich denke, dass zunächst Mikrochips in einem Kunststoffgehäuse hergestellt werden sollten, die unter allen Interessierten verteilt werden, und erst nach der Erprobung (lat. approbatio — Genehmigung, Anerkennung) durch Fachleute kann eine Revision im metallkeramischen Gehäuse mit Schutzmaßnahmen gegen alle erschreckenden Faktoren erfolgen. Ich hoffe, dass wir in naher Zukunft alle mit neuen Projekten, die auf Messen angekündigt wurden, erfreut werden.
Die von mir entwickelte Entwicklungsplatine kann jeder nachbauen, modifizieren und im Unterricht einsetzen. Zuerst habe ich die Platine für mich selbst erstellt, aber sie ist so gut gelungen, dass .
K1986ВЕ1QI (Aviation) ist ein sehr interessanter Controller mit einzigartigen Schnittstellen, der in Hochschulen zur Ausbildung von Studenten verwendet werden kann. Ich denke, dass der Controller, nachdem die festgestellten Fehler behoben und die Zertifizierungstests bestanden sind, tatsächlich abheben wird!
Quelle: habr.com
