Dezvoltarea unei plăci de testare pentru K1986VE1QI (aviatic)

Dezvoltarea unei plăci de testare pentru K1986VE1QI (aviatic)

Câțiva ani în urmă, am făcut cunoștință cu microcontrolerele rusești de la compania Milandr. Era anul 2013, când inginerii discutau intens despre primele rezultate ale programului național "Dezvoltarea bazei de componente electronice și a radioelectronicii" pentru anii 2008-2015. La acea vreme, fusese deja lansat controlerul K1986VE9x (nucleu Cortex-M3) și tocmai se făcuse cunoscut controlerul 1986VE1T (nucleu Cortex-M1). Acesta din urmă, într-un carcasă din plastic LQFP-144, avea în documentație denumirea K1986VE1QI (aeronautic), iar pe microcip era marcat MDR32F1QI. Pe site-ul producătorului, acesta avea un sufix "aeronautic", deoarece dispune de interfețe specifice industriei aeronautice (ARINC 429, MIL_STD_1553).

Este surprinzător, dar la momentul difuzării acestor controlere, compania "Milandr" pregătise kituri de dezvoltare și o bibliotecă de subprograme pentru lucrul cu perifericele, "dar fără nicio garanție suplimentară și fără obligații privind corectitudinea bibliotecii". Biblioteca este similară cu Standard Peripheral Library de la compania STMicroelectronics. În general, toate controlerele ARM bazate pe nucleul Cortex-M au multe trăsături comune. Din acest motiv, familiarizarea cu noile controlere rusești s-a desfășurat rapid. Iar pentru cei care achiziționaseră kituri oficiale de dezvoltare, s-a oferit suport tehnic în timpul utilizării.

Dezvoltarea unei plăci de testare pentru K1986VE1QI (aviatic)
Kit de dezvoltare pentru microcontrolerul 1986VE1T, © Milandr

Cu toate acestea, în timp, au început să apară "bolile de copil" ale noilor cipuri și biblioteci. Exemplele de testare ale firmware-ului au funcționat fără probleme vizibile, dar la modificări semnificative au apărut erori și defecțiuni. Prima "zburătoare" în experiența mea au fost defecțiuni inexplicabile în funcționarea controlerului CAN. După un an, pe controlerul 1986VE1T (aeronautic) de revizie timpurie a apărut o problemă cu modulul MKIO (canal multiplu de schimb de informații). În general, toate reviziile acestor microcontrolere până în anul 2016 au fost limitat funcționale. Mult timp și nervi au fost consumate pentru identificarea acestor probleme, confirmările pot fi acum găsite în listele de erori (Errata).

O caracter neplăcut a fost că a trebuit să lucrăm și să diagnosticăm erorile nu pe plăci de dezvoltare, ci pe plăci prototip pentru dispozitive, care erau planificate pentru producția industrială în serie. În afară de conectorul JTAG, de obicei nu mai exista nimic. A fost dificil și incomod să ne conectăm cu un analizator logic, iar LED-urile și ecranele nu existau de obicei. Din acest motiv, mi-a venit în minte ideea de a crea o placă de dezvoltare proprie.

Pe de o parte, pe piață existau seturi de dezvoltare de marcă, precum și plăci remarcabile de la compania LDM-Systems din Zelenograd. Pe de altă parte, prețurile pentru aceste produse sunt copleșitoare, iar funcționalitatea de bază, fără plăci de extensie, nu corespunde așteptărilor. O placă cu un controler montat și un conector de tip pin nu mă interesează. Iar plăcile mai interesante sunt foarte scumpe.

Dezvoltarea unei plăci de testare pentru K1986VE1QI (aviatic)
Placa de dezvoltare MILANDR LDM-HELPER-K1986BE1QI-FULL, © LDM Systems

Compania «Milandr» are o politică de prețuri și marketing aparte. Astfel, există posibilitatea de a obține gratuit mostre pentru anumite cipuri, dar acest lucru este disponibil doar persoanelor juridice și implică o cursă birocratică. În general, cipurile din carcasă metaloceramică sunt de aur atât în sensul propriu, cât și în cel figurat. De exemplu, controlerul 1986BE1T costă în Moscova între 14 și 24 de mii de ruble. Cipul de memorie statică 1645RU6U costă de la 15.000 de ruble. Și această ordine de prețuri se aplică la întreaga gamă de produse. În cele din urmă, chiar și institutele de cercetare cu comenzi de stat economisesc și se feresc de aceste prețuri. Cipurile din carcasă de plastic pentru utilizare civilă sunt semnificativ mai ieftine, dar nu sunt disponibile la furnizorii populari. În plus, calitatea cipurilor din carcasă de plastic, după părerea mea, este mai slabă decât cea a „cipurilor de aur”. De exemplu, nu am reușit să pornesc controlerul K1986BE1QI la frecvența de 128 MHz fără a crește parametrii de latență flash. Între timp, temperatura acestui controler a crescut la 40-50°C. În schimb, controlerul 1986BE1T („de aur”) s-a pornit la 128 MHz fără setări suplimentare și a rămas rece. Este într-adevăr bun.

Dezvoltarea unei plăci de testare pentru K1986VE1QI (aviatic)
Cipul „de aur” 1986BE1T, (c) Milandr

Am avut noroc că am reușit să cumpăr microcontrolerul într-o carcasă din plastic de la compania LDM Systems, iar toate schemele plăcilor sunt disponibile public. Problema este că pe site, în fotografia controller-ului, apare marcajul care indică faptul că este revizia 4 din 2014, adică cu defecte. M-am gândit mult - să cumpăr sau nu. Așa au trecut câțiva ani...

Gândul de a crea o placă de testare nu a dispărut nicăieri. Treptat, am formulat toate cerințele și m-am gândit cum să le așez pe o singură placă pentru a obține o variantă compactă și accesibilă. În paralel, am comandat de la chinezi componentele lipsă. Nu m-am grăbit - totul l-am făcut pentru mine. Furnizorii chinezi sunt renumiți pentru nepăsarea lor - a trebuit să comand același lucru din locuri diferite pentru a obține tot ce aveam nevoie. Mai mult, unele dintre cipurile de memorie s-au dovedit a fi folosite anterior - evident, au fost extrase din aparate defecte. Asta m-a afectat mai târziu.

Achiziționarea microcontrolerului Milandr K1986BE1QI (aeronautic) nu este o sarcină simplă. În aceleași magazin „Chip și Dip”, la secțiunea „Produse la comandă”, am găsit doar K1986BE92QI la 740 de ruble, dar acesta nu era potrivit pentru mine. Singura opțiune era să cumpăr de la compania LDM-Systems o revizie mai veche la 2000 de ruble. Găsind o alternativă nicăieri altundeva, am decis să cumpăr ceea ce era disponibil. Spre surprinderea mea plăcută, mi-au vândut un controller nou, fabricat în decembrie 2018, revizia 6+ (1820). Iar pe site încă se afișează o fotografie veche, iar la momentul redactării articolului controllerul nu era disponibil...

Dezvoltarea unei plăci de testare pentru K1986VE1QI (aviatic)
Microcontrolerul K1986BE1QI (aeronautic) în ambalaj tehnologic, (c) Foto autor

Specificațiile tehnice principale ale plăcii mele de testare MDB1986 sunt următoarele:

  • debagger-programator integrat, compatibil cu J-Link și CMSIS-DAP;
  • memorie statică de 4 Mbit (256k x 16, 10 ns);
  • chip de memorie flash de 64 Mbit, Winbond 25Q64FVSIG;
  • transceiver pentru interfața RS-232 cu liniile RTS și CTS;
  • interfețe și conectori pentru Ethernet, USB, CAN;
  • controller pentru afișaj cu 7 segmente MAX7221;
  • conector pentru interacțiune cu MKIO (MIL_STD_1553) și ARINC429;
  • fototransistor Everlight PT17-21C;
  • cinci LED-uri colorate, un buton de resetare și două butoane personalizate;
  • alimentare de la portul USB 5 volți;
  • dimensiunile plăcii de circuit 100 x 80 mm

Îmi plăceau plăcile din seria STM-Discovery pentru că au un programator-debbuger încorporat – ST-Link. ST-Link funcționează doar cu microcontrolerele firmei STMicroelectronics, dar cu câțiva ani în urmă a apărut posibilitatea de a actualiza firmware-ul ST-Link pentru a obține Debugger-ul SEGGER J-Link OB (on-board). Legal, există o restricție privind utilizarea acestui debugger doar cu plăcile STMicroelectronics, dar în practică potențialul nu este limitat. Astfel, având J-Link OB, poți avea un programator-debbuger încorporat pe placa de dezvoltare. Voi menționa că în produsele „LDM-Systems” este utilizat convertorul CP2102 (Usb2Uart), care poate doar să încarce firmware.

Dezvoltarea unei plăci de testare pentru K1986VE1QI (aviatic)
Microcontrolerele STM32F103C8T6, originale și nu numai, (c) Foto autor

Așadar, a fost necesar să cumpăr un STM32F103C8T6 original, deoarece firmware-urile originale nu vor funcționa corect cu clonele. M-am îndoit de această afirmație și am decis să încerc să lucrez cu microcontrolerul CS32F103C8T6 al firmei chineze CKS. Nu am avut plângeri legate de microcontroler, dar firmware-ul oficial ST-Link nu a funcționat. J-Link a funcționat parțial - dispozitivul USB a fost recunoscut, dar programatorul nu și-a îndeplinit funcțiile și a tot avertizat că este „defect”.

Dezvoltarea unei plăci de testare pentru K1986VE1QI (aviatic)
Eroare la utilizarea debugger-ului pe un microcontroler neoriginal

Nu m-am oprit aici și am scris întâi firmware-ul pentru a face LED-ul să clipească, iar apoi am implementat cererea IDCODE prin protocolul JTAG. Programatorul ST-Link, pe care îl aveam pe placa Discovery, și programul ST-Link Utility au reușit să încarce fără probleme CS32F103C8T6. În cele din urmă, m-am convins că placa mea funcționează. Spre bucuria mea, microcontrolerul țintă K1986VE1QI (aeronautic) a livrat cu promptitudine IDCODE-ul său pe linia TDO.

Dezvoltarea unei plăci de testare pentru K1986VE1QI (aviatic)
Oscilograma liniei de semnal TDO cu răspunsul IDCODE codificat, (c) Foto autor

Dezvoltarea unei plăci de testare pentru K1986VE1QI (aviatic)
Așa că portul SWD s-a dovedit util pentru debuggingul debugger-ului în sine și pentru verificarea IDCODE-ului

Rămânea varianta cu debugger-ul CMSIS-DAP (Debug Access Port). A aduna proiectul din surse de la ARM nu este o sarcină simplă, am luat un proiect de la X893, și apoi am încercat și DAP42. Din păcate, Keil uVision s-a blocat și nu a vrut să colaboreze cu ele. În cele din urmă, am înlocuit chip-ul debugger-ului cu unul original STM32F103C8T6 și nu am mai revenit la această problemă.

Dezvoltarea unei plăci de testare pentru K1986VE1QI (aviatic)
Funcționarea de succes a debugger-ului încorporat J-Link STLink V2

Când toate componentele cheie ale plăcii de dezvoltare viitoare au fost disponibile, am deschis Eagle CAD și am descoperit că nu se află în biblioteca de elemente. Nu aveam de ales – a trebuit să le desenez singur. De asemenea, am creat locuri pentru memorie, conectorul HanRun pentru Ethernet, iar pentru rezistori și condensatori am adăugat rame. Fișierul proiectului și biblioteca de componente pot fi găsite pe GitHub-ul meu.

Schema circuitului plăcii de dezvoltare MDB1986Dezvoltarea unei plăci de testare pentru K1986VE1QI (aviatic)

Placa este alimentată de o sursă de curent continuu cu tensiunea de 5 volți, obținută din portul USB. Există două porturi USB Type-B pe placă. Unul este pentru programator, iar celălalt pentru controlerul K1986BE1QI. Placa poate funcționa de la oricare dintre aceste surse sau de la ambele simultan. Regularea simplă a sarcinii și protecția liniilor de alimentare sunt realizate cu diode Schottky, pe schema D2 și D3 (SS24). De asemenea, pe schemă se pot observa siguranțele auto-reparabile F1 și F2 de 500mA. Liniile de semnal ale portului USB sunt protejate de un ansamblu de diode USBLC6-2SC6.

Schema debugger-ului programator ST-Link este bine cunoscută, poate fi găsită în documentația plăcilor STM32-Discovery și alte surse. Pentru programarea inițială a clonei ST-Link/J-Link-OB/DAP (la alegere), am scos liniile SWDIO (PA13), SWCLK (PA14), GND. Mulți folosesc UART pentru programare și sunt nevoiți să schimbe jumper-urile BOOT. Dar mie îmi este mai convenabil SWD, mai ales că acest protocol permite desfășurarea de debugging.

Aproape toate componentele plăcii sunt alimentate de 3.3 volți, care provin de la regulatorul de tensiune AMS1117-3.3. Pentru a suprima interferențele electromagnetice și vârfurile de curent, sunt utilizate filtre LC din condensatori și inductori din seria BLM31PG.

Merită menționat separat despre driverul pentru afișajul cu 7 segmente MAX7221. Conform specificației, alimentarea recomandată este între 4 și 5.5 volți, iar nivelul semnalului înalt (logica 1) este de cel puțin 3.5V (0.7 x VCC) la alimentarea de 5V. La controlerul K1986BE1QI (aviație), ieșirea logicii 1 corespunde unei tensiuni între 2.8 și 3.3V. Este evident că există o nepotrivire a nivelurilor semnalelor, ceea ce ar putea afecta funcționarea normală. Am decis să alimentez MAX7221 cu 4V și să reduc nivelurile semnalelor la 2.8V (0.7 x 4 = 2.8). Pentru aceasta, am instalat în serie în circuitul de alimentare al driverului un diod D4 (RS1A sau FR103). Astfel, căderea de tensiune totală este de 0.9V (diodă Schottky de 0.3V și diodă de 0.6V), și totul funcționează.

Majoritatea porturilor microcontrolerului K1986BE1QI (aeronautic) sunt compatibile cu semnalele de până la 5V. De aceea, utilizarea transceiver-ului CAN MCP2551, care funcționează tot la 5V, nu prezintă probleme. Ca transceiver RS-232 pe schemă este indicat circuitul integrat MAX3232, dar eu am folosit de fapt SN65C3232D de la Texas Instruments, deoarece acesta funcționează la 3.3V și oferă viteze de până la 1Mbit/s.

Pe placă sunt plasate 4 rezonatori cu cuarț – unul pentru debugger (8MHz) și trei pentru microcontrolerul țintă K1986BE1QI (aeronautic) cu nominalizări de 32.768kHz, 16MHz, 25MHz. Acestea sunt componente necesare, deoarece parametrii generatorului RC încorporat se află în intervale mari, de la 6 la 10 MHz. Frecvența de 25MHz este necesară pentru funcționarea controller-ului Ethernet încorporat. Pe site-ul Milandr (posibil din greșeală), este indicat că în carcasa din plastic Ethernetul lipsește. Dar ne vom baza pe specificații și fapte.

Un stimulent important pentru crearea propriului placii de dezvoltare a fost posibilitatea de a lucra cu bus-ul extern EBC (controller de bus extern), care este, în esență, un port paralel. Microcontrolerul K1986BE1QI (aeronautic) permite conectarea și lucrul cu chip-uri externe de memorie și dispozitive periferice, precum ADC, FPGA etc. Capacitățile bus-ului extern sunt destul de mari – se pot utiliza memorii SRAM statice de 8 biți, 16 biți și 32 biți, ROM și NAND Flash. Pentru citirea/scrierea de date de 32 de biți, controller-ul poate efectua automat 2 operații corespunzătoare pentru chip-uri de 16 biți, iar pentru 8 biți – 4 operații. Este evident că operațiunea de intrare-ieșire de 32 de biți va fi realizată cel mai rapid cu un bus de date de 32 de biți. Un dezavantaj poate fi necesitatea ca programul să opereze cu date de 32 de biți, iar pe placă va trebui să fie trase 32 de piste.

Dezvoltarea unei plăci de testare pentru K1986VE1QI (aviatic)
Chip-uri SRAM statice, SH (ghici care este defectă)

O soluție echilibrată este utilizarea chip-urilor de memorie de 16 biți. Am avut la dispoziție chip-uri de la Integrated Silicon Solutions Inc. (ISSI IS61LV25616AL, 16 x 256k, 10 ns, 3.3V). Desigur, compania „Milandr” are propriile chip-uri de memorie statică. seria 1645RU, dar sunt prea scumpe și inaccesibile. Ca alternativă, există memorii compatibile Samsung K6R4016V1D. Am menționat anterior că cipurile erau folosite, iar exemplarul pe care l-am instalat inițial a prezentat erori și valori haotice pe linia de date 15. Au fost necesare câteva zile pentru a găsi erorile de hardware, iar satisfacția a fost cu atât mai mare când am înlocuit cipul defect cu unul funcțional. Oricum, viteza de lucru cu memoria externă lasă de dorit.

Bus-ul extern și modul StandAloneMicrocontrollerul K1986VE1QI (aeronautic) are un mod unic StandAlone, care permite accesul direct din exterior la controlerele Ethernet și MKIO (MIL_STD_1553) prin bus-ul extern, iar nucleul se află în stare de resetare, adică nu este utilizat. Acest mod este convenabil pentru procesoarele și FPGA-urile care nu au Ethernet și/sau MKIO.
Schema de conectare este următoarea:

  • bus-ul de date MCU(D0-D15) => SRAM(I/O0-I/O15),
  • bus-ul de adresă MCU(A1-A18) => SRAM(A0-A17),
  • controlul MCU(nWR,nRD,PortC2) => SRAM (WE,OE,CE),
  • SRAM(UB,LB) sunt conectate sau trase la masă printr-un rezistor.

Linia CE este trasă la alimentare printr-un rezistor, iar pinurile pentru selecția byte MCU(BE0-BE3) nu sunt folosite. Sub spoiler, ofer codul de inițializare a porturilor și controlerului bus-ului extern.

Inițializarea porturilor și a controlerului EBC (controler de bus extern)

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 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);

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

Microcontrolerul în carcasa LQFP-144 și memoria în carcasa TSOP-44 au multe pini conectați și ocupă mult spațiu pe placa de circuit. Având în spate experiența de a rezolva probleme de optimizare în domeniul economic, mi-a fost evident că aceste cipuri trebuie plasate pe placă în primul rând. Am întâlnit în diverse surse recenzii laudative despre CAD TopoR (Router Topologic). Am descărcat versiunea demo (trial) și am reușit să export proiectul meu din Eagle CAD doar după ce am șters aproape toate componentele. Din păcate, nici 10 elemente programul TopoR nu mi-a ajutat să le plasez pe placă. La început, toate componentele au fost plasate într-un colț, iar apoi aranjate pe margine. Această variantă nu m-a mulțumit, așa că am efectuat racordarea plăcii manual în mediul familiar Eagle CAD.

Un element important al plăcii de circuit este serigrafia. Pe placa de testare ar trebui să existe nu doar etichete pentru componentele electronice, ci și toate conectorii trebuie să fie etichetați. Pe partea din spate a plăcii am plasat tabele-memento cu funcțiile porturilor controlerului (principal, alternativ, redefinit, efectiv). Am comandat fabricarea plăcilor de circuit în China, la binecunoscuta companie PCBWay. Nu o să laud, pentru că calitatea este bună. Ei pot face mai bine, cu toleranțe mai mici, dar contra unei sume suplimentare.

Dezvoltarea unei plăci de testare pentru K1986VE1QI (aviatic)
Plăcile de circuit fabricate MDB1986, (c) Fotografia autorului

Am fost nevoit să lipesc componentele „pe genunchi” cu un fier de lipit de 40 de wați și cu solder POS-61, deoarece lipesc rar, de 1-2 ori pe an, și pasta de lipit s-a uscat. A trebuit să înlocuiesc și controllerul chinezesc CS32F103 cu originalul STM32F103, și apoi să schimb și memoria. În general, acum sunt complet mulțumit de rezultat, deși încă nu am verificat funcționarea RS-232 și CAN.

Dezvoltarea unei plăci de testare pentru K1986VE1QI (aviatic)
Placa de testare MDB1986 în funcțiune — luminează și se încălzește, (c) Fotografia autorului

Pe site-ul „Milandra” se pot găsi destul de multe materiale didactice pentru studiul controlerelor seria 1986BE9 (nucleu Cortex-M3), dar pentru microcontrolerul K1986BE1QI (aeronautic) nu văd nimic acolo. După ce am revizuit materialele publicate, documentele tehnice și lucrările de laborator pentru instituțiile de învățământ superior, mă bucur că se pregătesc cadre în toată țara pentru a lucra cu controlerele rusești. Majoritatea materialelor didactice se concentrează pe lucru cu porturile de intrare-ieșire, temporizatoarele, ADC, DAC, SPI, UART. Se folosesc diverse medii de dezvoltare IDE (Keil, IAR, CodeMaster). Undeva se programează folosind registrele CMSIS, iar în altă parte se utilizează MDR Library. Este necesar să menționăm resursa Start Milandr, care conține destule articole de la programatori practicieni. Și, desigur, nu trebuie să uităm de forumul Milandr.

Adunarea MilandrMicroelektronica în Rusia se dezvoltă, iar în acest proces compania „Milandr” joacă un rol important. Apar microcontrolere noi și interesante, de exemplu, 1986BE81T și „Electrosila” cu interfețe SpaceWire și MКIO (similar cu 1986BE1 și, probabil, cu aceleași probleme) etc. Dar este imposibil pentru studenți, profesori și ingineri civili să cumpere astfel de microcipuri. Asta înseamnă că comunitatea inginerilor nu va putea identifica rapid erorile și problemele acestui microcip. Mi se pare că ar trebui mai întâi să se lanseze microcipuri în carcase din plastic, să fie distribuite tuturor celor interesați, iar după testarea (lat. approbatio — aprobat, recunoscut) de către specialiști, să se pregătească o revizie în carcase metaloceramice cu protecții împotriva tuturor factorilor dăunători. Sper ca în viitorul apropiat toți să ne bucurăm de noile proiecte anunțate la expoziții.
Placa de dezvoltare pe care am conceput-o poate fi replicată, modificată și utilizată în procesul didactic de către oricine. În primul rând, am creat placa pentru mine, dar a ieșit atât de bine încât am decis să împărtășesc cu toții.

K1986BE1QI (aeronautic) – este un controler foarte interesant cu interfețe unice, care poate fi utilizat în universități pentru a instrui studenții. Cred că, după corectarea erorilor identificate în controler și trecerea testelor de certificare, controlerul va zbura în sensul literal al cuvântului!

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster