Entwicklung eines Debug-Boards für K1986BE1QI (Luftfahrt)

Entwicklung eines Debug-Boards für K1986BE1QI (Luftfahrt)

Vor einigen Jahren lernte ich die russischen Mikrocontroller von Milandr kennen. Es war das Jahr 2013, als Ingenieure heftig über die ersten Ergebnisse des Bundeszielprogramms „Entwicklung der Basis elektronischer Komponenten und der Funkelektronik“ für 2008-2015 diskutierten. Zu diesem Zeitpunkt war der K1986BE9x-Controller (Cortex-M3-Kern) bereits veröffentlicht worden, und der 1986BE1T-Controller (Cortex-M1-Kern) war gerade erschienen. Im LQFP-144-Kunststoffgehäuse trug er in der Dokumentation die Bezeichnung K1986BE1QI (Luftfahrt) und auf dem Chip selbst die Bezeichnung MDR32F1QI. Auf der Website des Herstellers trägt es den Zusatz „air“, da es über spezifische Schnittstellen für die Flugzeugindustrie verfügt (ARINC 429, MIL_STD_1553).

Überraschenderweise bereitete die Firma Milander zum Zeitpunkt der Verbreitung dieser Controller Debug-Kits und eine Bibliothek von Unterprogrammen für die Arbeit mit Peripheriegeräten vor, „allerdings ohne zusätzliche Garantien und Verpflichtungen hinsichtlich der Korrektheit der Bibliothek“. Die Bibliothek ähnelt der Standard Peripheral Library von STMicroelectronics. Im Allgemeinen haben alle auf dem Cortex-M-Kern basierenden ARM-Controller viele Gemeinsamkeiten. Aus diesem Grund verlief die Bekanntschaft mit den neuen russischen Controllern schnell. Und für diejenigen, die proprietäre Debug-Kits kauften, wurde während der Nutzung technischer Support bereitgestellt.

Entwicklung eines Debug-Boards für K1986BE1QI (Luftfahrt)
Debugging-Kit für Mikrocontroller 1986BE1T, © Milandr

Im Laufe der Zeit traten jedoch „Kinderkrankheiten“ neuer Chips und Bibliotheken auf. Testbeispiele der Firmware funktionierten ohne sichtbare Probleme, bei erheblichen Modifikationen kam es jedoch zu Abstürzen und Fehlern. Der erste „Schluck“ in meiner Praxis waren unerklärliche Ausfälle im CAN-Controller. Ein Jahr später wurde ein Problem mit dem Modul am 1986BE1T (Luft)-Controller einer frühen Revision entdeckt MCIO (Multiplex-Informationsaustauschkanal). Generell waren alle Revisionen dieser Mikrocontroller bis 2016 von begrenztem Nutzen. Es hat viel Zeit und Nerven gekostet, diese Probleme zu identifizieren, deren Bestätigung nun in zu finden ist Fehlerlisten (Errata).

Ein unangenehmes Merkmal war, dass nicht auf Debug-Boards gearbeitet und Fehler behoben werden mussten, sondern auf Boards von Prototypengeräten, die für die Serienfertigung im Werk geplant waren. Außer dem JTAG-Anschluss war dort meist nichts zu finden. Der Anschluss an einen Logikanalysator war schwierig und umständlich und es gab normalerweise keine LEDs und Bildschirme. Aus diesem Grund kam mir die Idee, ein eigenes Debug-Board zu erstellen.

Einerseits gab es Marken-Debug-Kits auf dem Markt, aber auch wunderbare Boards von LDM-Systems aus Zelenograd. Andererseits treiben die Preise für diese Produkte einen ins Staunen und die Grundfunktionalität ohne Erweiterungskarten entspricht nicht den Erwartungen. Eine Platine mit angelötetem Controller und Stiftleiste ist für mich uninteressant. Und interessantere Boards sind teuer.

Entwicklung eines Debug-Boards für K1986BE1QI (Luftfahrt)
Entwicklungsboard MILANDR LDM-HELPER-K1986BE1QI-FULL, © LDM Systems

Das Unternehmen „Milandr“ verfügt über eine einzigartige Preispolitik und ein einzigartiges Marketing. Es ist also möglich, Muster einiger Mikroschaltungen kostenlos zu erhalten, dies steht jedoch nur juristischen Personen zur Verfügung und ist mit einer bürokratischen Suche verbunden. Im Allgemeinen sind Mikroschaltungen in einem Keramik-Metall-Gehäuse im wörtlichen und übertragenen Sinne Gold. Beispielsweise kostet der 1986BE1T-Controller in Moskau 14 bis 24 Rubel. Der statische Speicherchip 1645RU6U kostet ab 15000 Rubel. Und das ist die Reihenfolge der Preise für alle Produkte. Dadurch sparen selbst spezialisierte Forschungsinstitute mit staatlichen Aufträgen Geld und scheuen solche Preise. Chips im Plastikgehäuse für den zivilen Einsatz sind deutlich günstiger, bei gängigen Anbietern sind sie jedoch nicht erhältlich. Außerdem ist die Qualität der Chips in einem Kunststoffgehäuse meiner Meinung nach schlechter als bei „Gold“. Beispielsweise konnte ich den K1986BE1QI-Controller nicht mit 128 MHz betreiben, ohne die Einstellung für die Flash-Latenz zu erhöhen. Gleichzeitig stieg die Temperatur dieses Reglers auf 40–50 °C. Aber der 1986BE1T („Gold“)-Controller startete ohne weitere Einstellungen mit 128 MHz und blieb kalt. Er ist wirklich gut.

Entwicklung eines Debug-Boards für K1986BE1QI (Luftfahrt)
„Gold“ Mikrocontroller 1986BE1T, (c) Milandr

Ich hatte das Glück, dass der Mikrocontroller im Kunststoffgehäuse noch im Handel bei LDM Systems erhältlich ist und alle Platinen frei erhältlich sind. Das Schlimme ist, dass auf der Website auf dem Foto des Controllers eine Markierung zu sehen ist, die besagt, dass es sich um die 4. Revision von 2014 handelt, also mit Mängeln. Ich habe lange überlegt – kaufen oder nicht kaufen. So vergingen mehrere Jahre...

Die Idee, ein Debug-Board zu erstellen, ist nirgendwo verschwunden. Nach und nach habe ich alle Anforderungen formuliert und darüber nachgedacht, wie ich das alles auf einer Platine unterbringen kann, damit es kompakt und nicht teuer wird. Parallel dazu habe ich die fehlenden Komponenten bei den Chinesen bestellt. Ich hatte es nicht eilig – ich habe alles für mich getan. Chinesische Lieferanten sind für ihre Schlamperei bekannt – ich musste an verschiedenen Orten das Gleiche bestellen, um alles zu bekommen, was ich brauchte. Darüber hinaus stellte sich heraus, dass einige der Speicherchips gebraucht waren – offensichtlich aus kaputten Geräten gelötet. Das fiel mir später ein.

Der Kauf eines Mikrocontrollers Milandr K1986BE1QI (Luftfahrt) ist keine leichte Aufgabe. Im selben Chip and Dip-Laden habe ich in der Rubrik „Bestellpositionen“ nur K1986BE92QI für 740 Rubel gefunden, aber es hat mir nicht gepasst. Die einzige Möglichkeit besteht darin, eine nicht frische Revision für 2000 Rubel bei LDM-Systems zu kaufen. Da ich nirgendwo anders einen Ersatz finden konnte, beschloss ich, das zu kaufen, was vorhanden war. Zu meiner angenehmen Überraschung verkauften sie mir einen brandneuen Release-Controller vom Dezember 2018, Revision 6+ (1820). Und auf der Seite gibt es noch ein altes Foto, und zum Zeitpunkt des Schreibens ist der Controller nicht verfügbar ...

Entwicklung eines Debug-Boards für K1986BE1QI (Luftfahrt)
Mikrocontroller K1986BE1QI (Luftfahrt) in technologischer Verpackung, (c) Foto vom Autor

Wichtigste technische Spezifikationen meines Entwicklungsboards MDB1986 wie folgt vor:

  • integrierter Debugger-Programmierer, kompatibel mit J-Link und CMSIS-DAP;
  • 4 Mbit statischer Speicher (256 KB x 16, 10 ns);
  • Flash-Speicherchip 64 Mbit, Winbond 25Q64FVSIG;
  • RS-232-Schnittstellen-Transceiver mit RTS- und CTS-Leitungen;
  • Schnittstellen und Anschlüsse für Ethernet, USB, CAN;
  • 7-Segment-Anzeigecontroller MAX7221;
  • Pin-Anschluss für die Arbeit mit MCIO (MIL_STD_1553) und ARINC429;
  • Fototransistor Everlight PT17-21C;
  • fünf farbige LEDs, eine Reset-Taste und zwei Benutzertasten;
  • Die Stromversorgung erfolgt über einen USB-Anschluss mit 5 Volt.
  • Leiterplattenabmessungen 100 x 80 mm

Mir gefielen die Boards der STM-Discovery-Serie, weil sie über einen integrierten Programmierer-Debugger verfügen – ST-Link. Der Marken-ST-Link funktioniert nur mit STMicroelectronics-Controllern, aber vor ein paar Jahren wurde es möglich, die Firmware in ST-Link zu aktualisieren und den SEGGER J-Link OB (on-board) Debugger zu erhalten. Rechtlich gesehen gibt es eine Einschränkung, einen solchen Debugger nur mit STMicroelectronics-Boards zu verwenden, aber tatsächlich ist das Potenzial nicht begrenzt. Mit J-Link OB können Sie also einen integrierten Programmierer-Debugger auf der Debug-Karte haben. Ich stelle fest, dass die Produkte von LDM-Systems den Konverter CP2102 (Usb2Uart) verwenden, der nur flashen kann.

Entwicklung eines Debug-Boards für K1986BE1QI (Luftfahrt)
STM32F103C8T6-Mikrocontroller, echt und nicht so, (c) Foto vom Autor

Daher war es notwendig, das Original STM32F103C8T6 zu kaufen, da die Marken-Firmware mit dem Klon nicht richtig funktioniert. Ich bezweifelte diese These und beschloss, den CS32F103C8T6-Controller der chinesischen Firma CKS auszuprobieren. Über den Controller selbst habe ich keine Beschwerden, aber die proprietäre ST-Link-Firmware funktionierte darin nicht. J-Link funktionierte teilweise – das USB-Gerät wurde erkannt, aber der Programmierer führte seine Funktionen nicht aus und erinnerte ständig daran, dass es „defekt“ war.

Entwicklung eines Debug-Boards für K1986BE1QI (Luftfahrt)
Fehler beim Ausführen des Debuggers auf einem nicht originalen Controller

Ich habe mich nicht beruhigt und zuerst die Firmware zum Blinken der LED geschrieben und dann die IDCODE-Anfrage mithilfe des JTAG-Protokolls implementiert. Der ST-Link-Programmierer, den ich auf dem Discovery-Board hatte, und das ST-Link-Utility-Programm haben CS32F103C8T6 ohne Probleme geflasht. Dadurch habe ich sichergestellt, dass mein Board funktioniert. Zu meiner Freude gab der Ziellotse K1986BE1QI (Luftfahrt) fröhlich seinen IDCODE über die TDO-Leitung heraus.

Entwicklung eines Debug-Boards für K1986BE1QI (Luftfahrt)
Oszillogramm der TDO-Signalleitung mit IDCODE-codierter Antwort, (c) Foto vom Autor

Entwicklung eines Debug-Boards für K1986BE1QI (Luftfahrt)
Daher erwies sich der SWD-Port als praktisch, um den Debugger selbst zu debuggen und den IDCODE zu überprüfen

Es gab eine Option mit einem Debugger CMSIS-DAP (Debug-Zugriffsport). Ein Projekt aus ARM-Quellen zu erstellen ist keine leichte Aufgabe, ich habe das Projekt übernommen X893, und dann habe ich auch DAP42 ausprobiert. Leider blieb Keil uVision stecken und wollte nicht mit ihnen zusammenarbeiten. Infolgedessen habe ich den Debugger-Chip durch einen proprietären STM32F103C8T6 ersetzt und bin nie wieder auf dieses Problem zurückgekommen.

Entwicklung eines Debug-Boards für K1986BE1QI (Luftfahrt)
Erfolgreicher Betrieb des integrierten Debuggers J-Link STLink V2

Als alle Schlüsselkomponenten des zukünftigen Debug-Boards verfügbar waren, ging ich zu Eagle CAD und stellte fest, dass sie nicht in der Elementbibliothek enthalten waren. Es gibt keinen Ort, an den ich gehen kann – ich musste sie selbst zeichnen. Gleichzeitig habe ich Sitze für den Speicher und den HanRun-Anschluss für Ethernet hergestellt und Rahmen für die Widerstände und Kondensatoren hinzugefügt. Die Projektdatei und die Komponentenbibliothek sind zu finden Ich habe es auf GitHub.

Schematische Darstellung des MDB1986-DebugboardsEntwicklung eines Debug-Boards für K1986BE1QI (Luftfahrt)

Die Stromversorgung der Platine erfolgt über eine 5-Volt-Gleichstromquelle über den USB-Anschluss. Auf der Platine befinden sich zwei USB-Typ-B-Anschlüsse. Einer ist für den Programmierer, der zweite für den K1986BE1QI-Controller. Das Board kann aus einer dieser Quellen oder aus beiden gleichzeitig arbeiten. Die einfachste Lastanpassung und der Schutz von Stromleitungen werden über Schottky-Dioden in den Schaltkreisen D2 und D3 (SS24) realisiert. Im Diagramm sind auch die selbstwiederherstellenden Sicherungen F1 und F2 bei 500 mA zu sehen. Die Signalleitungen des USB-Anschlusses werden durch die Diodenbaugruppe USBLC6-2SC6 geschützt.

Die ST-Link-Debugger-Programmierschaltung ist vielen bekannt, sie ist in der Dokumentation der STM32-Discovery-Boards und anderen Quellen zu finden. Für die primäre Firmware des ST-Link / J-Link-OB / DAP-Klons (optional) habe ich die Leitungen SWDIO (PA13), SWCLK (PA14) und GND herausgebracht. Viele verwenden UART für die Firmware und sind gezwungen, die BOOT-Jumper zu ziehen. Aber SWD ist für mich praktischer, außerdem ermöglicht dieses Protokoll das Debuggen.

Fast alle Komponenten der Platine werden mit 3.3 Volt betrieben, die vom Spannungsregler AMS1117-3.3 stammen. Zur Unterdrückung elektromagnetischer Störungen und Stromstöße werden LC-Filter aus Kondensatoren und Drosseln der Serie BLM31PG eingesetzt.

Unabhängig davon ist der 7-Segment-Anzeigetreiber MAX7221 zu erwähnen. Gemäß der Spezifikation beträgt die empfohlene Stromversorgung 4 bis 5.5 Volt und der hohe Signalpegel (logisch eins) beträgt mindestens 3.5 V (0.7 x VCC), wenn die Stromversorgung mit 5 V erfolgt. Beim K1986BE1QI-Controller (Luftfahrt) entspricht der Ausgang einer logischen Einheit einer Spannung von 2.8 bis 3.3 V. Offensichtlich gibt es eine Diskrepanz zwischen den Signalpegeln, die den normalen Betrieb stören kann. Ich habe beschlossen, den MAX7221 mit 4 V zu versorgen und die Signalpegel auf 2.8 V (0.7 x 4 = 2.8) zu senken. Dazu wird im Treiberstromkreis eine Diode D4 (RS1A oder FR103) in Reihe geschaltet. Der gesamte Spannungsabfall beträgt 0.9 V (0.3 V Schottky-Diode und 0.6 V Diode), und alles funktioniert.

Die meisten Anschlüsse des Mikrocontrollers K1986BE1QI (Luftfahrt) sind mit Signalen bis zu 5 V kompatibel. Daher bereitet der Einsatz des CAN-Transceivers MCP2551, der auch mit 5V betrieben wird, keine Probleme. Das Diagramm zeigt den MAX232-Chip als RS-3232-Transceiver, aber tatsächlich habe ich SN65C3232D von Texas Instruments verwendet, weil Es funktioniert ab 3.3 V und bietet eine Geschwindigkeit von bis zu 1 Mbit/s.

Auf der Platine befinden sich 4 Quarzresonatoren – einer für den Debugger (8 MHz) und drei für den Ziel-Mikrocontroller K1986BE1QI (Luftfahrt) mit Nennwerten von 32.768 kHz, 16 MHz, 25 MHz. Das sind notwendige Komponenten, denn. Die Parameter des eingebauten RC-Generators liegen in einem weiten Bereich von 6 bis 10 MHz. Für den Betrieb des eingebauten Ethernet-Controllers ist die Frequenz von 25 MHz erforderlich. Aus irgendeinem Grund heißt es auf der Website von Milandra (vielleicht aus Versehen), dass das Plastikgehäuse kein Ethernet habe. Aber wir werden uns auf die Spezifikation und Fakten verlassen.

Ein wichtiger Anreiz für die Erstellung eines eigenen Debug-Boards war die Möglichkeit, mit einem externen EBC-Systembus (External Bus Controller) zu arbeiten, bei dem es sich im Wesentlichen um einen parallelen Port handelt. Der Mikrocontroller K1986BE1QI (Luftfahrt) ermöglicht den Anschluss und die Arbeit mit externen Speicherchips und Peripheriegeräten wie ADC, FPGA usw. Die Möglichkeiten des externen Systembusses sind recht groß – Sie können mit 8-Bit-, 16-Bit- und 32-Bit-statischem RAM, ROM und NAND-Flash arbeiten. Zum Lesen/Schreiben von 32-Bit-Daten kann der Controller automatisch 2 entsprechende Vorgänge für 16-Bit-Mikroschaltungen und 8 Vorgänge für 4-Bit-Mikroschaltungen ausführen. Offensichtlich ist ein 32-Bit-I/O-Vorgang mit einem 32-Bit-Datenbus am schnellsten. Zu den Nachteilen gehört, dass das Programm mit 32-Bit-Daten arbeiten muss und die Platine 32 Spuren verlegen muss.

Entwicklung eines Debug-Boards für K1986BE1QI (Luftfahrt)
SRAM-Chips, gebraucht (raten Sie mal, welcher defekt ist)

Eine ausgewogene Lösung ist die Verwendung von 16-Bit-Speicherchips. Am Ende landete ich bei Chips von Integrated Silicon Solutions Inc. (ISSI IS61LV25616AL, 16x256k, 10ns, 3.3V). Natürlich verfügt die Firma „Milandr“ über eigene statische Speicherchips Serie 1645RUaber sie sind zu teuer und nicht verfügbar. Alternativ gibt es pinkompatible Samsung K6R4016V1D. Ich habe bereits erwähnt, dass die ICs gebraucht waren und die von mir installierte Kopie zunächst in der 15. Datenleitung stockte und unregelmäßig war. Es dauerte mehrere Tage, bis ich Hardwarefehler fand, und umso größer war die Zufriedenheit, als ich den beschädigten Chip durch einen funktionierenden ersetzte. Wie dem auch sei, die Geschwindigkeit beim Arbeiten mit externem Speicher lässt zu wünschen übrig.

Externer Bus und StandAlone-ModusDer Mikrocontroller K1986BE1QI (Luftfahrt) verfügt über einen einzigartigen StandAlone-Modus, der für den direkten externen Zugriff auf Ethernet- und MCIO-Controller (MIL_STD_1553) über einen externen Bus ausgelegt ist, während sich der Kern im Reset-Zustand befindet, d. h. Wird nicht benutzt. Dieser Modus ist nützlich für Prozessoren und FPGAs, die nicht über Ethernet und/oder MCIO verfügen.
Der Anschlussplan sieht wie folgt aus:

  • Datenbus MCU(D0-D15) => SRAM(I/O0-I/O15),
  • Adressbus MCU(A1-A18) => SRAM(A0-A17),
  • MCU-Steuerung (nWR, nRD, PortC2) => SRAM (WE, OE, CE),
  • SRAM(UB,LB) werden über einen Widerstand mit Masse verbunden bzw. gezogen.

Die CE-Leitung wird über einen Widerstand mit Strom versorgt, die MCU-Byte-Abrufpins (BE0-BE3) werden nicht verwendet. Unter dem Spoiler gebe ich den Code zur Initialisierung der Ports und des externen Buscontrollers.

Initialisierung von Ports und EBC-Controller (externer Buscontroller)

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);
	//--------------------------------------------//
	// DATA 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);	
	//--------------------------------------------//
	// Address PF3-PF15 (A0..A12), A0 - not used. //
	//--------------------------------------------//
	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);	
	//--------------------------------------------//
	// Address 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);	
	//--------------------------------------------//
	// Address PE3, PE4 (A17, A18)                //
	//--------------------------------------------//
	initStruct.PORT_FUNC      = PORT_FUNC_ALTER;
	initStruct.PORT_Pin       = PORT_Pin_3 | PORT_Pin_4;
	PORT_Init (MDR_PORTE, &initStruct);	
	//--------------------------------------------//
	// Control PC0,PC1 (nWE,nOE)                  //
	//--------------------------------------------//
	initStruct.PORT_FUNC      = PORT_FUNC_MAIN;
	initStruct.PORT_Pin       = PORT_Pin_0 | PORT_Pin_1;
	PORT_Init (MDR_PORTC, &initStruct);	
	//--------------------------------------------//
	// Control 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);	

	//--------------------------------------------//
	// Initialize EBC controler                   //
	//--------------------------------------------//
	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);

	// Turn ON RAM (nCE)
	PORT_ResetBits (MDR_PORTC, MDB_SRAM_CE);
}

Der Mikrocontroller im LQFP-144-Gehäuse und der Speicher im TSOP-44-Gehäuse verfügen über viele verbundene Pins und nehmen viel Platz auf der Leiterplatte ein. Aufgrund meiner Erfahrung in der Lösung von Optimierungsproblemen im Bereich der Wirtschaftswissenschaften war es für mich klar, dass diese Mikroschaltungen überhaupt auf der Platine platziert werden sollten. In verschiedenen Quellen bin ich auf lobende Rezensionen dazu gestoßen CAD TopoR (Topologischer Router). Ich habe die Testversion heruntergeladen und konnte mein Projekt dort nur aus Eagle CAD exportieren, nachdem ich fast alle Komponenten entfernt hatte. Leider hat mir das TopoR-Programm nicht dabei geholfen, auch nur 10 Elemente auf der Tafel zu platzieren. Zunächst wurden alle Komponenten in einer Ecke platziert und dann entlang der Kante angeordnet. Diese Option befriedigte mich nicht und ich verbrachte lange Zeit damit, die Platine manuell in der vertrauten Eagle-CAD-Umgebung nachzuzeichnen.

Der Siebdruck ist ein wichtiges Element der Leiterplatte. Auf dem Debug-Board müssen nicht nur Signaturen für elektronische Komponenten vorhanden sein, sondern auch alle Anschlüsse müssen signiert sein. Auf der Rückseite der Platine habe ich Erinnerungstabellen mit den Funktionen der Controller-Ports (Haupt, Alternative, Überschrieben, Tatsächlich) platziert. Ich habe die Herstellung von Leiterplatten in China im bekannten PCBWay-Büro bestellt. Ich werde nicht loben, weil die Qualität gut ist. Mit kleineren Toleranzen können sie aber besser abschneiden gegen Gebühr.

Entwicklung eines Debug-Boards für K1986BE1QI (Luftfahrt)
Hergestellte Leiterplatten MDB1986, (c) Foto vom Autor

Ich musste die Bauteile „auf dem Knie“ mit einem 40-Watt-Lötkolben und POS-61-Lötmittel auslöten, da ich selten löte, 1-2 Mal im Jahr, und die Lotpaste eingetrocknet ist. Ich musste auch den chinesischen CS32F103-Controller gegen den ursprünglichen STM32F103 austauschen und dann auch den Speicher austauschen. Im Großen und Ganzen bin ich nun mit dem Ergebnis rundum zufrieden, obwohl ich die Funktion von RS-232 und CAN noch nicht überprüft habe.

Entwicklung eines Debug-Boards für K1986BE1QI (Luftfahrt)
Debug-Board MDB1986 in Betrieb – leuchtet und wärmt, (с) Foto vom Autor

Auf der Seite „Milandra“ findet man genug davon Lernmaterialien zum Lernen von Controllern 1986BE9-Serie (Cortex-M3-Kern), aber für den Mikrocontroller K1986BE1QI (Luftfahrt) sehe ich dort nichts. Nach Durchsicht der dort veröffentlichten Materialien, Handbücher und Laborarbeiten für Universitäten bin ich froh, dass im ganzen Land Personal für die Arbeit mit russischen Controllern geschult wird. Die meisten Schulungsmaterialien sind für die Arbeit mit E/A-Ports, Timern, ADC, DAC, SPI, UART vorbereitet. Es kommen verschiedene IDEs zum Einsatz (Keil, IAR, CodeMaster). Irgendwo programmieren sie mithilfe von CMSIS-Registern und irgendwo verwenden sie die MDR-Bibliothek. Die Ressource muss erwähnt werden Starten Sie Milandr, das viele Artikel von praktizierenden Programmierern enthält. Und das sollten wir natürlich nicht vergessen Forum Milandra.

Ich denke an MilandraDie Mikroelektronik in Russland entwickelt sich, und das Unternehmen „Milandr“ spielt in diesem Prozess eine bedeutende Rolle. Es erscheinen neue interessante Mikrocontroller, zum Beispiel 1986BE81T und Elektrosila mit SpaceWire- und MKIO-Schnittstellen (die gleichen wie 1986BE1 und möglicherweise mit den gleichen Problemen) usw. Für normale Schüler, Lehrer und Bauingenieure ist der Kauf solcher Mikroschaltungen jedoch unrealistisch. Dies bedeutet, dass die Ingenieursgemeinschaft die Fehler und Probleme dieses Chips nicht schnell erkennen kann. Mir scheint, dass es zunächst notwendig ist, Mikroschaltungen in einem Kunststoffgehäuse herzustellen, sie an alle Interessenten zu verteilen, und erst nach der Genehmigung (lateinisch approbatio – Genehmigung, Anerkennung) können Spezialisten eine Revision in einem Keramik-Metallgehäuse mit Schutz vor vorbereiten Alles schreckliche Faktoren. Ich hoffe, dass wir ALLE in naher Zukunft mit den auf den Messen angekündigten neuen Projekten zufrieden sein werden.
Jeder kann das Debug-Board, das ich im Bildungsprozess entwickelt habe, wiederholen, modifizieren und verwenden. Zuerst habe ich mir ein Brett gemacht, aber es ist so gut geworden Ich beschloss, es mit allen zu teilen.

K1986BE1QI (Luft) ist ein sehr interessanter Controller mit einzigartigen Schnittstellen, der an Universitäten für den Unterricht von Studenten eingesetzt werden kann. Ich denke, dass der Controller nach der Behebung der im Controller festgestellten Fehler und dem Bestehen der Zertifizierungstests im wahrsten Sinne des Wortes fliegen wird!

Source: habr.com

Kommentar hinzufügen