Zhvillimi i një bordi zhvillimi për K1986BE1QI (aviacion)

Zhvillimi i një bordi zhvillimi për K1986BE1QI (aviacion)

Disa vite më parë u njoha me mikrokontrolluesit rusë nga Milander. Ishte viti 2013, kur inxhinierët po diskutonin fuqishëm rezultatet e para të Programit Federal të Targetit "Zhvillimi i bazës së komponentëve elektronikë dhe elektronikës radio" për 2008-2015. Në atë kohë, kontrolluesi K1986BE9x (core Cortex-M3) ishte lëshuar tashmë, dhe kontrolluesi 1986BE1T (core Cortex-M1) sapo ishte shfaqur. Në kutinë plastike, LQFP-144, ai kishte përcaktimin K1986BE1QI (aviacion) në dokumentacion, dhe në vetë çipin përcaktimin MDR32F1QI. Në faqen e internetit të prodhuesit ka prapashtesën "avia", pasi ka ndërfaqe specifike për industrinë e avionëve (ARINC 429, MIL_STD_1553).

ÇuditĂ«risht, nĂ« kohĂ«n e shpĂ«rndarjes sĂ« kĂ«tyre kontrollorĂ«ve, kompania Milander pĂ«rgatiti komplete korrigjimi dhe njĂ« bibliotekĂ« nĂ«nprogramesh pĂ«r tĂ« punuar me pajisjet periferike, "por pa asnjĂ« garanci ose detyrim shtesĂ« nĂ« lidhje me korrektĂ«sinĂ« e bibliotekĂ«s". Biblioteka Ă«shtĂ« e ngjashme me bibliotekĂ«n standarde periferike nga STMicroelectronics. NĂ« pĂ«rgjithĂ«si, tĂ« gjithĂ« kontrollorĂ«t ARM tĂ« ndĂ«rtuar nĂ« bĂ«rthamĂ«n Cortex-M kanĂ« shumĂ« tĂ« pĂ«rbashkĂ«ta. PĂ«r kĂ«tĂ« arsye, njohja me kontrollorĂ«t e rinj rusĂ« vazhdoi shpejt. Dhe pĂ«r ata qĂ« blenĂ« komplete korrigjimi tĂ« markĂ«s, u ofrua mbĂ«shtetje teknike gjatĂ« pĂ«rdorimit.

Zhvillimi i një bordi zhvillimi për K1986BE1QI (aviacion)
Kompleti i korrigjimit për mikrokontrolluesin 1986BE1T, © Milander

Sidoqoftë, me kalimin e kohës, filluan të shfaqen "sëmundjet e fëmijërisë" të mikroqarqeve dhe bibliotekave të reja. Shembujt e testimit të firmuerit funksionuan pa probleme të dukshme, por me modifikime të rëndësishme, ndodhën përplasje dhe gabime. "Gëlltitja" e parë në praktikën time ishin dështimet e pashpjegueshme në funksionimin e kontrolluesit CAN. Një vit më vonë, një problem me modulin u zbulua në kontrolluesin 1986BE1T (aviacioni) të një rishikimi të hershëm MKIO (kanal multipleks i shkëmbimit të informacionit). Në përgjithësi, të gjitha rishikimet e këtyre mikrokontrolluesve deri në vitin 2016 ishin me përdorim të kufizuar. Kaluan shumë kohë dhe nerva për të identifikuar këto probleme, konfirmimi i të cilave tani mund të gjendet në listat e gabimeve (Errata).

Një tipar i pakëndshëm ishte se ishte e nevojshme të punohej dhe të merrej me gabimet jo në bordet e korrigjimit, por në bordet prototipe të pajisjeve që ishin planifikuar për prodhimin serik të fabrikës. Zakonisht nuk kishte asgjë tjetër përveç lidhësit JTAG. Lidhja me një analizues logjik ishte e vështirë dhe e papërshtatshme, dhe zakonisht nuk kishte LED ose ekrane. Për këtë arsye, ideja për të krijuar bordin tim të korrigjimit u shfaq në kokën time.

Nga njëra anë, kishte në treg komplete korrigjimi të markave, si dhe borde të mrekullueshme nga kompania LDM-Systems nga Zelenograd. Nga ana tjetër, çmimet për këto produkte janë marramendëse, dhe funksionaliteti bazë pa kartat e zgjerimit nuk i përmbush pritshmëritë. Një tabelë me një kontrollues të bashkuar dhe një lidhës pin nuk është më interes për mua. Dhe bordet më interesante janë të shtrenjta.

Zhvillimi i një bordi zhvillimi për K1986BE1QI (aviacion)
Pllakë zhvillimi MILANDR LDM-HELPER-K1986BE1QI-FULL, © LDM Systems

Kompania Milander ka njĂ« politikĂ« çmimesh dhe marketingu unike. Pra, Ă«shtĂ« e mundur tĂ« merrni mostra falas tĂ« disa mikroqarqeve, por kjo Ă«shtĂ« nĂ« dispozicion vetĂ«m pĂ«r personat juridikĂ« dhe shoqĂ«rohet me njĂ« kĂ«rkim burokratik. NĂ« pĂ«rgjithĂ«si, mikroqarqet nĂ« njĂ« kuti metal-qeramike janĂ« ari nĂ« kuptimin e mirĂ«filltĂ« dhe figurativ. PĂ«r shembull, njĂ« kontrollues 1986BE1T kushton nga 14 nĂ« 24 mijĂ« rubla nĂ« MoskĂ«. Çipi i memories statike 1645RU6U kushton nga 15000 rubla. Dhe ky Ă«shtĂ« rendi i çmimeve pĂ«r tĂ« gjitha produktet. Si rezultat, edhe institutet e specializuara kĂ«rkimore me urdhra qeveritarĂ« kursejnĂ« para dhe i shmangen çmimeve tĂ« tilla. Mikroqarqet nĂ« njĂ« kuti plastike pĂ«r pĂ«rdorim civil janĂ« dukshĂ«m mĂ« tĂ« lirĂ«, por ato nuk janĂ« tĂ« disponueshme nga furnizuesit e njohur. PĂ«r mĂ« tepĂ«r, cilĂ«sia e mikroqarqeve nĂ« njĂ« kuti plastike, mĂ« duket, Ă«shtĂ« mĂ« e keqe se ato "ari". PĂ«r shembull, nuk mund ta ekzekutoja kontrolluesin K1986BE1QI nĂ« 128 MHz pa rritur parametrin e vonesĂ«s sĂ« blicit. NĂ« tĂ« njĂ«jtĂ«n kohĂ«, temperatura e kĂ«tij kontrolluesi u rrit nĂ« 40-50C. Por kontrolluesi 1986BE1T ("ari") filloi nĂ« 128 MHz pa cilĂ«sime shtesĂ« dhe mbeti i ftohtĂ«. Ai Ă«shtĂ« vĂ«rtet i mirĂ«.

Zhvillimi i një bordi zhvillimi për K1986BE1QI (aviacion)
Mikrokontrollues “Golden” 1986BE1T, (c) Milander

Unë isha me fat që një mikrokontrollues në një kuti plastike mund të blihet ende me pakicë nga LDM Systems, dhe të gjitha diagramet e bordit janë të disponueshme falas. E keqja është se në faqen e internetit në foton e kontrolluesit mund të shihni një shënim që thotë se ky është rishikimi i 4-të i vitit 2014, d.m.th. me defekte. Kam menduar për një kohë të gjatë nëse do të blej apo jo. Kështu kaluan disa vite...

Ideja e krijimit të një bordi korrigjimi nuk është zhdukur askund. Gradualisht, formova të gjitha kërkesat dhe mendova se si t'i vendosja të gjitha në një tabelë, në mënyrë që të ishte kompakte dhe jo e shtrenjtë. Në të njëjtën kohë, unë porosita komponentët që mungojnë nga kinezët. Nuk nxitova - bëra gjithçka për veten time. Furnizuesit kinezë janë tejet të ngathët - më duhej të porosisja të njëjtën gjë nga vende të ndryshme për të marrë gjithçka që më duhej. Për më tepër, disa nga çipat e kujtesës rezultuan të përdoreshin - me sa duket të ngjitura nga pajisjet e prishura. Kjo më përndjek më vonë.

Blerja e një mikrokontrollues Milander K1986BE1QI (ajri) nuk është një detyrë e lehtë. Në të njëjtin dyqan Chip and Dip, në seksionin "Artikuj për porosi", gjeta vetëm K1986BE92QI për 740 rubla, por nuk më përshtatej. Mundësia e vetme është të blini një rishikim jo të freskët nga LDM-Systems për 2000 rubla. Meqenëse nuk mund të gjeja një zëvendësues askund tjetër, vendosa të blej atë që kisha. Për habinë time të këndshme, ata më shitën një kontrollues krejt të ri të prodhuar në dhjetor 2018, rishikimi 6+ (1820). Por faqja ka ende një foto të vjetër, dhe në momentin e shkrimit kontrolluesi nuk është i disponueshëm...

Zhvillimi i një bordi zhvillimi për K1986BE1QI (aviacion)
Mikrokontrolluesi K1986BE1QI (aviacioni) ne paketim teknologjik, (c) Foto nga autori

Karakteristikat kryesore teknike të bordit tim të korrigjimit MDB1986 në vijim:

  • korrigjues-programues i integruar, i pajtueshĂ«m me J-Link dhe CMSIS-DAP;
  • memorie statike 4 Mbit (256k x 16, 10 ns);
  • çip memorie flash 64 Mbit, Winbond 25Q64FVSIG;
  • Transmetues i ndĂ«rfaqes RS-232 me linja RTS dhe CTS;
  • ndĂ«rfaqet dhe lidhĂ«sit pĂ«r Ethernet, USB, CAN;
  • MAX7 kontrollues ekrani me 7221 segmente;
  • lidhĂ«s pin pĂ«r tĂ« punuar me MKIO (MIL_STD_1553) dhe ARINC429;
  • fototransistor Everlight PT17-21C;
  • LED me pesĂ« ngjyra, njĂ« buton rivendosjeje dhe dy butona pĂ«rdoruesi;
  • furnizimi me energji nĂ« portĂ«n USB Ă«shtĂ« 5 volt;
  • PĂ«rmasat e tabelĂ«s sĂ« qarkut tĂ« printuar 100 x 80, mm

Më pëlqyen tabelat e serisë STM-Discovery sepse kanë një programues të integruar - ST-Link. Marka ST-Link funksionon vetëm me kontrollues nga STMicroelectronics, por disa vjet më parë u bë e mundur të përditësohej firmware në ST-Link dhe të merrej SEGGER J-Link OB (në bord) Debugger. Ligjërisht, ekziston një kufizim për përdorimin e një korrigjuesi të tillë vetëm me bordet STMicroelectronics, por në fakt potenciali nuk është i kufizuar. Kështu, duke pasur një J-Link OB, mund të keni një programues-debugger të integruar në bordin e korrigjimit. Vërej se produktet LDM-Systems përdorin konvertuesin CP2102 (Usb2Uart), i cili mund të ndizet vetëm.

Zhvillimi i një bordi zhvillimi për K1986BE1QI (aviacion)
Mikrokontrollues STM32F103C8T6, real dhe jo aq real, (c) Foto nga autori

Pra, ishte e nevojshme të blini STM32F103C8T6 origjinale, pasi firmware-i i pronarit nuk do të funksionojë siç duhet me klon. Dyshova në këtë tezë dhe vendosa të provoj kontrolluesin CS32F103C8T6 nga kompania kineze CKS. Nuk kam ankesa për vetë kontrolluesin, por firmware-i i pronarit ST-Link nuk funksionoi në të. J-Link funksionoi pjesërisht - pajisja USB u zbulua, por programuesi nuk i kreu funksionet e tij dhe vazhdimisht kujtoi se ishte "me defekt".

Zhvillimi i një bordi zhvillimi për K1986BE1QI (aviacion)
Gabim gjatë ekzekutimit të korrigjuesit në një kontrollues jo origjinal

UnĂ« nuk isha i kĂ«naqur me kĂ«tĂ« dhe fillimisht shkrova firmware-in pĂ«r ndezjen e LED-it, dhe mĂ« pas zbatova kĂ«rkesĂ«n IDCODE duke pĂ«rdorur protokollin JTAG. Programuesi ST-Link qĂ« e kisha nĂ« tabelĂ«n Discovery dhe programi ST-Link Utility ndezĂ«n pa problem CS32F103C8T6. NĂ« fund u binda se bordi im po funksiononte. PĂ«r kĂ«naqĂ«sinĂ« time, kontrolluesi i synuar K1986BE1QI (aviacioni) lĂ«shoi ​​me gĂ«zim IDCODE-nĂ« e tij nĂ«pĂ«rmjet linjĂ«s TDO.

Zhvillimi i një bordi zhvillimi për K1986BE1QI (aviacion)
Oshilogrami i një linje sinjali TDO me një përgjigje të koduar IDCODE, (c) Foto nga autori

Zhvillimi i një bordi zhvillimi për K1986BE1QI (aviacion)
Pra, porta SWD erdhi në ndihmë për korrigjimin e vetë korrigjuesit dhe kontrollimin e IDCODE

Kishte një opsion me një korrigjues CMSIS-DAP (Portë e qasjes për korrigjimin e gabimeve). Ndërtimi i një projekti nga burimet e ARM-së nuk është një detyrë e lehtë, unë e mora projektin nga X893, dhe më pas provova DAP42. Fatkeqësisht, Keil uVision ngriu dhe nuk donte të punonte me ta. Si rezultat, unë zëvendësova çipin e korrigjuesit me një STM32F103C8T6 të pronarit dhe nuk u ktheva më në këtë problem.

Zhvillimi i një bordi zhvillimi për K1986BE1QI (aviacion)
Funksionimi i suksesshëm i korrigjuesit të integruar J-Link STLink V2

Kur të gjithë përbërësit kryesorë të bordit të zhvillimit të ardhshëm ishin të disponueshëm, hyra në Eagle CAD dhe zbulova se ato nuk ishin në bibliotekën e elementeve. Nuk kishte ku të shkoja - duhej t'i vizatoja vetë. Në të njëjtën kohë, bëra pika montimi për memorie, një lidhës HanRun për Ethernet dhe shtova korniza për rezistorët dhe kondensatorët. Mund të gjenden skedari i projektit dhe biblioteka e komponentëve në GitHub-in tim.

Diagrami skematik i bordit të zhvillimit MDB1986Zhvillimi i një bordi zhvillimi për K1986BE1QI (aviacion)

Pllaka mundësohet nga një burim DC 5 volt i marrë nga porta USB. Ka gjithsej dy porte USB Type-B në tabelë. Njëra është për programuesin, e dyta është për kontrolluesin K1986BE1QI. Bordi mund të funksionojë nga njëri prej këtyre burimeve ose të dyja njëkohësisht. Rregullimi më i thjeshtë i ngarkesës dhe mbrojtja e linjës së energjisë zbatohen duke përdorur diodat Schottky, në qarkun D2 dhe D3 (SS24). Gjithashtu në diagram mund të shihni siguresat vetë-rikthyese F1 dhe F2 në 500 mA. Linjat e sinjalit të portës USB mbrohen nga një montim diodë USBLC6-2SC6.

Qarku i korrigjuesit-programues ST-Link është i njohur për shumë njerëz; ai mund të gjendet në dokumentacionin për bordet STM32-Discovery dhe burime të tjera. Për firmuerin fillestar të klonit ST-Link/J-Link-OB/DAP (opsionale), nxora linjat SWDIO (PA13), SWCLK (PA14), GND. Shumë njerëz përdorin UART për firmware dhe janë të detyruar të tërheqin kërcyesit BOOT. Por më duket SWD më i përshtatshëm, dhe ky protokoll lejon korrigjimin e gabimeve.

Pothuajse të gjithë përbërësit e tabelës furnizohen me 3.3 volt, të cilat vijnë nga rregullatori i tensionit AMS1117-3.3. Për të shtypur ndërhyrjet elektromagnetike dhe mbingarkesat e rrymës, përdoren filtra LC nga kondensatorët dhe mbytjet e serisë BLM31PG.

MĂ« vete, vlen tĂ« pĂ«rmendet drejtuesi i ekranit me 7 segmente MAX7221. Sipas specifikimeve, furnizimi me energji elektrike i rekomanduar Ă«shtĂ« nga 4 nĂ« 5.5 volt, dhe niveli i lartĂ« i sinjalit (logjik) Ă«shtĂ« tĂ« paktĂ«n 3.5 V (0.7 x VCC), me njĂ« furnizim 5 V. PĂ«r kontrolluesin K1986BE1QI (aviacioni), dalja e njĂ« njĂ«sie logjike korrespondon me njĂ« tension nga 2.8 nĂ« 3.3 V. ËshtĂ« e qartĂ« se ka njĂ« mospĂ«rputhje midis niveleve tĂ« sinjalit qĂ« mund tĂ« ndĂ«rhyjĂ« nĂ« funksionimin normal. Vendosa tĂ« fuqizoj MAX7221 nĂ« 4V dhe tĂ« zvogĂ«loj nivelet e sinjalit nĂ« 2.8V (0.7 x 4 = 2.8). PĂ«r ta bĂ«rĂ« kĂ«tĂ«, dioda D4 (RS1A ose FR103) Ă«shtĂ« instaluar nĂ« seri nĂ« qarkun e fuqisĂ« sĂ« drejtuesit. RĂ«nia totale e tensionit Ă«shtĂ« 0.9 V (dioda Schottky 0.3 V dhe dioda 0.6 V), dhe gjithçka funksionon.

Shumica e porteve tĂ« mikrokontrolluesit K1986BE1QI (aviacionit) janĂ« tĂ« pajtueshme me sinjale deri nĂ« 5V. Prandaj, nuk ka asnjĂ« problem me pĂ«rdorimin e transmetuesit MCP2551 CAN, i cili gjithashtu funksionon nĂ« 5V. Çipi MAX232 tregohet si njĂ« marrĂ«s RS-3232 nĂ« diagram, por nĂ« fakt unĂ« pĂ«rdora SN65C3232D nga Texas Instruments, sepse funksionon nga 3.3V dhe ofron shpejtĂ«si deri nĂ« 1Mbit/s.

Pllaka përmban 4 rezonatorë kuarci - një për korrigjuesin (8 MHz) dhe tre për mikrokontrolluesin e synuar K1986BE1QI (aviacioni) me shkallë 32.768 kHz, 16 MHz, 25 MHz. Këto janë komponentë të domosdoshëm, sepse Parametrat e oshilatorit të integruar RC janë brenda një diapazoni të gjerë nga 6 në 10 MHz. Një frekuencë prej 25 MHz kërkohet për funksionimin e kontrolluesit të integruar Ethernet. Për disa arsye, faqja e internetit e Milandra (ndoshta gabimisht) thotë se kutia plastike nuk ka Ethernet. Por ne do të mbështetemi në specifikimet dhe faktet.

Një nxitje e rëndësishme për krijimin e bordit tim të zhvillimit ishte mundësia për të punuar me autobusin e sistemit të jashtëm EBC (kontrollues i jashtëm i autobusit), i cili në thelb është një port paralel. Mikrokontrolluesi (avioni) K1986BE1QI ju lejon të lidheni dhe të punoni me çipa memorie të jashtme dhe pajisje periferike, për shembull, ADC, FPGA, etj. Aftësitë e autobusit të sistemit të jashtëm janë mjaft të mëdha - mund të punoni me RAM statike 8-bit, 16-bit dhe 32-bit, ROM dhe NAND Flash. Për të lexuar/shkruar të dhëna 32-bitësh, kontrolluesi mund të kryejë automatikisht 2 operacione përkatëse për çipat 16-bit dhe 8 operacione për çipat 4-bit. Natyrisht, një operacion I/O 32-bitësh do të përfundojë më shpejt me një autobus të dhënash 32-bit. Disavantazhet përfshijnë nevojën që programi të funksionojë me të dhëna 32-bit, dhe bordi do të duhet të vendosë 32 këngë.

Zhvillimi i një bordi zhvillimi për K1986BE1QI (aviacion)
Çipa statike RAM, tĂ« pĂ«rdorura (mendoni se cili Ă«shtĂ« i dĂ«mtuar)

Një zgjidhje e ekuilibruar është përdorimi i çipave të memories 16-bit. Më rastisi të kisha çipa të integruar të Silicon Solutions Inc. në magazinë. (ISSI IS61LV25616AL, 16 x 256k, 10 ns, 3.3V). Sigurisht, kompania Milander ka çipat e saj të memories statike seria 1645RU, por ato janë shumë të shtrenjta dhe të padisponueshme. Si alternativë, ka Samsung K6R4016V1D të pajtueshme me pin. Më herët përmenda se mikroqarqet rezultuan të përdoreshin dhe kopja që instalova fillimisht dha dështime dhe vlera kaotike në linjën e 15-të të të dhënave. U deshën disa ditë për të gjetur gabime harduerike dhe aq më e madhe ishte ndjenja e kënaqësisë kur zëvendësova çipin e dëmtuar me një të punës. Sido që të jetë, shpejtësia e punës me memorie të jashtme lë shumë për të dëshiruar.

Autobusi i jashtëm dhe modaliteti StandAloneMikrokontrolluesi (avioni) K1986BE1QI ka një modalitet unik StandAlone, i cili është projektuar për akses të jashtëm të drejtpërdrejtë në kontrollorët Ethernet dhe MKIO (MIL_STD_1553) nëpërmjet një autobusi të jashtëm, me bërthamën në gjendje të rivendosur, d.m.th. nuk përdoret. Ky modalitet është i përshtatshëm për procesorë dhe FPGA që nuk kanë Ethernet dhe/ose MKIO.
Diagrami i lidhjes është si më poshtë:

  • autobusi i tĂ« dhĂ«nave MCU(D0-D15) => SRAM(I/O0-I/O15),
  • autobusi i adresave MCU(A1-A18) => SRAM(A0-A17),
  • kontrolli MCU(nWR,nRD,PortC2) => SRAM (WE,OE,CE),
  • SRAM (UB, LB) lidhen ose tĂ«rhiqen nĂ« tokĂ« pĂ«rmes njĂ« rezistence.

Linja CE është e lidhur me furnizimin me energji përmes një rezistence; kunjat për marrjen e mostrave të bajtit MCU (BE0-BE3) nuk përdoren. Nën spoiler, unë jap kodin për inicializimin e porteve dhe kontrolluesin e jashtëm të autobusit.

Inicializimi i porteve dhe kontrolluesi EBC (kontrolluesi i autobusit të jashtëm)

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

Mikrokontrolluesi nĂ« paketĂ«n LQFP-144 dhe memoria nĂ« paketĂ«n TSOP-44 kanĂ« shumĂ« kunja tĂ« lidhura dhe zĂ«nĂ« shumĂ« hapĂ«sirĂ« ​​nĂ« tabelĂ«n e qarkut tĂ« printuar. Duke pasur pĂ«rvojĂ« nĂ« zgjidhjen e problemeve tĂ« optimizimit nĂ« fushĂ«n e ekonomisĂ«, ishte e qartĂ« pĂ«r mua se ishte e nevojshme qĂ« fillimisht tĂ« vendoseshin kĂ«to mikroqarqe nĂ« tabelĂ«. NĂ« burime tĂ« ndryshme kam hasur nĂ« komente lavdĂ«ruese rreth CAD TopoR (Ruter topologjik). Shkarkova versionin e provĂ«s dhe munda ta eksportoja projektin tim nga Eagle CAD atje vetĂ«m pasi hoqa pothuajse tĂ« gjithĂ« komponentĂ«t. FatkeqĂ«sisht, programi TopoR nuk mĂ« ndihmoi tĂ« vendosja as 10 elementĂ« nĂ« tabelĂ«. SĂ« pari, tĂ« gjithĂ« pĂ«rbĂ«rĂ«sit u vendosĂ«n nĂ« njĂ« cep, dhe mĂ« pas u vendosĂ«n pĂ«rgjatĂ« skajit. Nuk isha i kĂ«naqur me kĂ«tĂ« opsion dhe pĂ«r njĂ« kohĂ« tĂ« gjatĂ« e gjurmova tabelĂ«n me dorĂ« nĂ« mjedisin e njohur Eagle CAD.

Një element i rëndësishëm i një bord qarku të printuar është printimi me ekran mëndafshi. Bordi i zhvillimit nuk duhet të ketë vetëm etiketa për komponentët elektronikë, por të gjithë lidhësit duhet gjithashtu të etiketohen. Në anën e pasme të tabelës vendosa tabela me funksionet e portave të kontrolluesit (kryesore, alternative, e tejkaluar, aktuale). Kam porositur prodhimin e pllakave të qarkut të printuar në Kinë nga zyra e njohur PCBWay. Nuk do ta lavdëroj sepse cilësia është e mirë. Ata mund të bëjnë më mirë, me toleranca më të forta, por për një tarifë.

Zhvillimi i një bordi zhvillimi për K1986BE1QI (aviacion)
Pllakat e qarkut të printuar të prodhuar MDB1986, (c) Foto nga autori

Më është dashur t'i bashkoj komponentët "në gjunjë" me një saldim 40 vat dhe me saldim POS-61, sepse bashkoj rrallë, 1-2 herë në vit, dhe pasta e saldimit ishte tharë. Më duhej gjithashtu të ndryshoja kontrolluesin kinez CS32F103 në STM32F103 origjinal, dhe më pas të zëvendësoja gjithashtu kujtesën. Në përgjithësi, tani jam plotësisht i kënaqur me rezultatin, megjithëse nuk e kam kontrolluar ende funksionimin e RS-232 dhe CAN.

Zhvillimi i një bordi zhvillimi për K1986BE1QI (aviacion)
Bordi i korrigjimit MDB1986 në funksionim - ai shkëlqen dhe ngroh, (c) Foto nga autori

Në faqen e internetit Milandra mund të gjeni mjaftueshëm materiale edukative për kontrollorët e mësimit seria 1986BE9 (bërthama Cortex-M3), por për mikrokontrolluesin K1986BE1QI (aviacioni) nuk shoh asgjë atje. Duke parë materialet, manualet dhe punën laboratorike për universitetet e botuara atje, më vjen mirë që personeli po trajnohet në të gjithë vendin për të punuar me kontrollorët rusë. Shumica e materialeve të trajnimit përgatiten për të punuar me portet I/O, kohëmatësit, ADC, DAC, SPI, UART. Përdoren mjedise të ndryshme zhvillimi IDE (Keil, IAR, CodeMaster). Diku ata programojnë duke përdorur regjistrat CMSIS, dhe diku përdorin Bibliotekën MDR. Burimi duhet të përmendet Filloni Milandr, i cili përmban shumë artikuj nga programues praktikues. Dhe, natyrisht, nuk duhet të harrojmë Forumi Milandra.

Mendova për MilandrënMikroelektronika po zhvillohet në Rusi dhe kompania Milander luan një rol të rëndësishëm në këtë proces. Mikrokontrolluesit e rinj interesantë shfaqen, për shembull, 1986BE81T dhe Elektrosila me ndërfaqe SpaceWire dhe MKIO (njëlloj si në 1986BE1 dhe, ndoshta, me të njëjtat probleme), etj. Por studentët e zakonshëm, mësuesit dhe inxhinierët e ndërtimit nuk mund të blejnë mikroqarqe të tilla. Kjo do të thotë që komuniteti inxhinierik nuk do të jetë në gjendje të identifikojë shpejt gabimet dhe problemet me këtë çip. Më duket se fillimisht është e nevojshme të prodhohen mikroqarqe në një kuti plastike, t'u shpërndahen të gjithë të interesuarve dhe pas miratimit (latinisht approbatio - miratim, njohje) nga specialistë, ata mund të përgatisin një rishikim në një kuti metalo-qeramike me mbrojtje nga të gjithë faktorët e tmerrshëm. Shpresoj se në të ardhmen e afërt do të jemi të gjithë të kënaqur me projektet e reja të shpallura në ekspozita.
Bordi i korrigjimit që kam zhvilluar mund të përsëritet, modifikohet dhe përdoret nga kushdo në procesin arsimor. Para së gjithash, unë e bëra tabelën për vete, por doli aq mirë sa Vendosa ta ndaj me të gjithë.

K1986BE1QI (ajri) është një kontrollues shumë interesant me ndërfaqe unike që mund të përdoret në universitete për të mësuar studentët. Unë mendoj se pas korrigjimit të gabimeve të identifikuara në kontrollues dhe kalimit të testeve të certifikimit, kontrolluesi do të fluturojë në kuptimin e vërtetë të fjalës!

Burimi: www.habr.com

Bleni njĂ« host tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, serverĂ« VPS VDS đŸ”„ Bleni hosting tĂ« besueshĂ«m tĂ« faqeve tĂ« internetit me mbrojtje DDoS, servera VPS VDS | ProHoster