Antaŭ kelkaj jaroj mi konatiĝis kun rusaj mikroregiloj de Milander. Estis 2013, kiam inĝenieroj vigle diskutis pri la unuaj rezultoj de la Federacia Cel-Programo "Evoluo de elektronika kompona bazo kaj radioelektroniko" por 2008-2015. Tiutempe, la regilo K1986BE9x (kerno Cortex-M3) jam estis liberigita, kaj ĵus aperis la regilo 1986BE1T (kerno Cortex-M1). En la plasta kazo, LQFP-144, ĝi havis la nomon K1986BE1QI (aviado) en la dokumentado, kaj sur la blato mem la nomon MDR32F1QI. En la retejo de la fabrikanto ĝi havas la sufikson "avia", ĉar ĝi havas interfacojn specifajn por la aviadilindustrio (ARINC 429, MIL_STD_1553).
Mirinde, en la momento de distribuado de ĉi tiuj regiloj, la kompanio Milander preparis senararigantajn kompletojn kaj bibliotekon de subrutinoj por labori kun ekstercentraj, "sed sen aldonaj garantioj aŭ obligacioj pri la ĝusteco de la biblioteko." La biblioteko estas simila al la Standard Peripheral Library de STMicroelectronics. Ĝenerale, ĉiuj ARM-regiloj konstruitaj sur la Cortex-M-kerno havas multon komune. Tial, konatiĝo kun la novaj rusaj regiloj daŭrigis rapide. Kaj por tiuj, kiuj aĉetis markitajn sencimigajn ilarojn, teknika subteno estis provizita dum uzo.
Sencimiga ilaro por mikroregilo 1986BE1T, © Milander
Tamen, kun la tempo, "infanaj malsanoj" de novaj mikrocirkvitoj kaj bibliotekoj komencis aperi. Testekzemploj de la firmvaro funkciis sen videblaj problemoj, sed kun signifaj modifoj, kraŝoj kaj eraroj okazis. La unua "hirunto" en mia praktiko estis neklarigeblaj fiaskoj en la funkciado de la CAN-regilo. Jaron poste, problemo kun la modulo estis malkovrita sur la 1986BE1T (aviada) regilo de frua revizio
Malagrabla trajto estis, ke necesas labori kaj trakti erarojn ne sur sencimigaj tabuloj, sed sur prototipaj tabuloj de aparatoj, kiuj estis planitaj por seria fabrika produktado. Tie estis kutime nenio krom la JTAG-konektilo. Konekti kun logika analizilo estis malfacila kaj maloportuna, kaj kutime ne estis LED-oj aŭ ekranoj. Tial aperis en mia kapo la ideo krei mian propran sencimigan tabulon.
Unuflanke, estis markitaj sencimigaj ilaroj sur la merkato, kaj ankaŭ mirindaj tabuloj de la kompanio LDM-Systems de Zelenograd. Aliflanke, la prezoj por ĉi tiuj produktoj estas mirindaj, kaj la baza funkcieco sen ekspansiaj kartoj ne plenumas atendojn. Tabulo kun lutita regilo kaj pinkonektilo ne interesas min. Kaj pli interesaj tabuloj estas multekostaj.
Disvolva tabulo MILANDR LDM-HELPER-K1986BE1QI-FULL, © LDM Systems
La kompanio Milander havas unikan prezpolitikon kaj merkatadon. Do, eblas akiri senpagajn specimenojn de iuj mikrocirkvitoj, sed ĉi tio estas nur disponebla por juraj entoj kaj rilatas al burokratia serĉo. Ĝenerale, mikrocirkvitoj en metal-ceramika kazo estas oro en la laŭvorta kaj figura signifo. Ekzemple, regilo de 1986BE1T kostas de 14 ĝis 24 mil rubloj en Moskvo. La senmova memorpeto 1645RU6U kostas de 15000 1986 rubloj. Kaj ĉi tio estas la preza ordo por ĉiuj produktoj. Kiel rezulto, eĉ specialigitaj esplorinstitutoj kun registaraj ordonoj ŝparas monon kaj evitas tiajn prezojn. Mikrocirkvitoj en plasta kazo por civila uzo estas signife pli malmultekostaj, sed ili ne estas haveblaj de popularaj provizantoj. Krome, la kvalito de mikrocirkvitoj en plasta kazo, ŝajnas al mi, estas pli malbona ol "oraj". Ekzemple, mi ne povus ruli la regilon K1BE128QI ĉe 40 MHz sen pliigi la parametron de latencia fulmo. Samtempe, la temperaturo de ĉi tiu regilo altiĝis al 50-1986C. Sed la 1BE128T ("ora") regilo komenciĝis ĉe XNUMX MHz sen pliaj agordoj kaj restis malvarma. Li estas vere bona.
"Ora" mikroregilo 1986BE1T, (c) Milander
Mi estis bonŝanca, ke mikroregilo en plasta skatolo ankoraŭ aĉeteblas ĉe podetala komerco de LDM Systems, kaj ĉiuj tabulo-diagramoj estas libere haveblaj. La malbona afero estas, ke en la retejo en la foto de la regilo oni povas vidi markon, kiu diras, ke tio estas la 4-a revizio de 2014, t.e. kun difektoj. Mi longe pensis, ĉu aĉeti aŭ ne aĉeti. Pluraj jaroj pasis tiel...
La ideo krei sencimigan tabulon ne malaperis ie ajn. Iom post iom, mi formis ĉiujn postulojn kaj pensis pri kiel meti ĉion sur unu tabulo, por ke ĝi estu kompakta kaj ne multekosta. Samtempe mi mendis la mankantajn komponantojn de la ĉinoj. Mi ne hastis — ĉion mi faris por mi. Ĉinaj provizantoj estas fifame malzorgemaj - mi devis mendi la samon el diversaj lokoj por ricevi ĉion, kion mi bezonis. Krome, kelkaj el la memoraj blatoj montriĝis uzataj - ŝajne lutitaj de rompitaj aparatoj. Ĉi tio revenis por hanti min poste.
Aĉeti mikroregilon Milander K1986BE1QI (aero) ne estas facila tasko. En la sama vendejo de Chip and Dip, en la sekcio "Mendeblaj aĵoj", mi trovis nur K1986BE92QI por 740 rubloj, sed ĝi ne konvenis al mi. La sola opcio estas aĉeti ne freŝan revizion de LDM-Systems por 2000 2018 rubloj. Ĉar mi ne povis trovi anstataŭaĵon aliloke, mi decidis aĉeti tion, kion mi havis. Je mia agrabla surprizo, ili vendis al mi tute novan regilon fabrikitan en decembro 6, revizio 1820+ (XNUMX). Sed la retejo ankoraŭ havas malnovan foton, kaj dum la skribado la regilo ne disponeblas...
Mikroregilo K1986BE1QI (aviado) en teknologia pakaĵo, (c) Foto de la aŭtoro
Ĉefaj teknikaj karakterizaĵoj de mia sencimiga tabulo MDB1986 jen:
- enkonstruita erarserĉilo-programilo, kongrua kun J-Link kaj CMSIS-DAP;
- senmova memoro 4Mbit (256k x 16, 10 ns);
- fulmmemora blato 64Mbit, Winbond 25Q64FVSIG;
- RS-232-interfaco-ricevilo kun RTS kaj CTS-linioj;
- interfacoj kaj konektiloj por Ethernet, USB, CAN;
- MAX7 7221-segmenta ekranregilo;
- pinkonektilo por labori kun MKIO (MIL_STD_1553) kaj ARINC429;
- fototransistoro Everlight PT17-21C;
- kvin koloraj LEDoj, rekomencigita butono kaj du uzantbutonoj;
- nutrado al la USB-haveno estas 5 voltoj;
- presita cirkvito dimensioj 100 x 80, mm
Mi ŝatis la STM-Discovery-seriotabulojn ĉar ili havas enkonstruitan programilon-sencimigilon - ST-Link. Branded ST-Link nur funkcias kun regiloj de STMicroelectronics, sed antaŭ kelkaj jaroj eblis ĝisdatigi la firmvaro en ST-Link kaj akiri SEGGER J-Link OB (surŝipe) Erarserĉilo. Laŭleĝe, estas limigo pri uzado de tia erarserĉilo nur kun STMicroelectronics-tabuloj, sed fakte la potencialo ne estas limigita. Tiel, havante J-Link OB, vi povas havi enkonstruitan programiston-sencimigilon sur la sencimiga tabulo. Mi rimarkas, ke produktoj de LDM-Systems uzas la konvertilon CP2102 (Usb2Uart), kiu povas nur ekbrili.
STM32F103C8T6 mikroregiloj, realaj kaj ne tiel realaj, (c) Foto de la aŭtoro
Do, necesis aĉeti la originalan STM32F103C8T6, ĉar proprieta firmvaro ne funkcios ĝuste kun la klono. Mi dubis ĉi tiun tezon kaj decidis provi la regilon CS32F103C8T6 de la ĉina kompanio CKS. Mi havas neniujn plendojn pri la regilo mem, sed la proprieta ST-Link-firmvaro ne funkciis en ĝi. J-Link parte funkciis - la USB-aparato estis detektita, sed la programisto ne plenumis siajn funkciojn kaj konstante memorigis, ke ĝi estas "difekta".
Eraro dum funkciado de la erarserĉilo sur ne-originala regilo
Mi ne kontentiĝis pri tio kaj unue skribis la firmware por palpebrumi la LED, kaj poste efektivigis la IDCODE-peton per la JTAG-protokolo. La programisto ST-Link, kiun mi havis sur la Discovery-tabulo, kaj la programo ST-Link Utility senprobleme ekbrilis CS32F103C8T6.Fine mi konvinkiĝis, ke mia tabulo funkcias. Je mia ĝojo, la celregilo K1986BE1QI (aviado) gaje eldonis sian IDKODON per la TDO-linio.
Oscilogramo de TDO signallinio kun ĉifrita IDCODE-respondo, (c) Foto de la verkinto
Do la SWD-haveno estis utila por sencimigi la erarserĉilon mem kaj kontroli IDCODE
Estis opcio kun erarserĉilo
Sukcesa funkciado de la enkonstruita erarserĉilo J-Link STLink V2
Kiam ĉiuj ŝlosilaj komponantoj de la estonta evolutabulo estis disponeblaj, mi eniris Eagle CAD kaj malkovris, ke ili ne estas en la elementa biblioteko. Nenie estis iri — mi mem devis desegni ilin. Samtempe, mi faris muntajn punktojn por memoro, HanRun-konektilon por Ethernet, kaj aldonis kadrojn por rezistiloj kaj kondensiloj. La projektdosiero kaj komponentbiblioteko troveblas
Skema diagramo de la evolutabulo MDB1986
La tabulo estas funkciigita per 5-volta DC-fonto akirita de la USB-haveno. Estas entute du USB-Tipo-B-havenoj sur la tabulo. Unu estas por la programisto, la dua estas por la regilo K1986BE1QI. La estraro povas funkcii de ĉiu el ĉi tiuj fontoj aŭ ambaŭ samtempe. La plej simpla ŝarĝreguligo kaj elektra linioprotekto estas efektivigitaj uzante Schottky-diodojn, en cirkvito D2 kaj D3 (SS24). Ankaŭ en la diagramo vi povas vidi memrestarigxajn fuzeojn F1 kaj F2 je 500 mA. La signallinioj de la USB-haveno estas protektitaj per USBLC6-2SC6 dioda asembleo.
La ST-Link-sencimigilo-programcirkvito estas konata al multaj; ĝi povas esti trovita en la dokumentaro por STM32-Discovery-tabuloj kaj aliaj fontoj. Por la komenca firmvaro de la klono ST-Link/J-Link-OB/DAP (laŭvola), mi eligis la liniojn SWDIO (PA13), SWCLK (PA14), GND. Multaj homoj uzas UART por firmvaro kaj estas devigitaj tiri la BOOT-saltistojn. Sed mi trovas SWD pli oportuna, kaj ĉi tiu protokolo permesas sencimigi.
Preskaŭ ĉiuj komponantoj de la tabulo estas funkciigitaj per 3.3 voltoj, kiuj venas de la tensio-reguligilo AMS1117-3.3. Por subpremi elektromagnetan interferon kaj nunajn ŝprucojn, LC-filtriloj de kondensiloj kaj ĉokiloj de la serio BLM31PG estas uzataj.
Aparte, indas mencii la MAX7-7221-segmentan ekranpelilon. Laŭ la specifo, la rekomendita nutrado estas de 4 ĝis 5.5 voltoj, kaj la alta signalnivelo (logika) estas almenaŭ 3.5V (0.7 x VCC), kun 5V provizo. Por la K1986BE1QI (aviada) regilo, la eligo de logika unuo egalrilatas al tensio de 2.8 ĝis 3.3V. Evidente estas miskongruo inter la signalniveloj, kiu povas malhelpi normalan funkciadon. Mi decidis funkciigi la MAX7221 je 4V kaj redukti la signalajn nivelojn al 2.8V (0.7 x 4 = 2.8). Por fari tion, diodo D4 (RS1A aŭ FR103) estas instalita en serio en la ŝofor-potenca cirkvito. La totala tensiofalo estas 0.9V (diodo Schottky 0.3V kaj diodo 0.6V), kaj ĉio funkcias.
Plej multaj havenoj de la mikroregilo K1986BE1QI (aviado) estas kongruaj kun signaloj ĝis 5V. Sekve, ne estas problemo uzi la MCP2551 CAN-transceptoro, kiu ankaŭ funkcias per 5V. La blato MAX232 estas indikita kiel RS-3232-ricevilo en la diagramo, sed fakte mi uzis SN65C3232D de Texas Instruments, ĉar ĝi funkcias de 3.3V kaj provizas rapidojn ĝis 1Mbit/s.
La tabulo enhavas 4 kvarco resonators - unu por la erarserĉilo (8 MHz) kaj tri por la cela mikroregilo K1986BE1QI (aviado) kun rangigoj de 32.768 kHz, 16 MHz, 25 MHz. Ĉi tiuj estas necesaj komponantoj, ĉar La parametroj de la enkonstruita RC-oscilatoro estas ene de larĝa gamo de 6 ĝis 10 MHz. Ofteco de 25 MHz estas postulata por la funkciado de la enkonstruita Ethernet-regilo. Ial, la retejo de Milandra (eble erare) deklaras, ke la plasta kazo ne havas Eterreton. Sed ni fidos je la specifo kaj faktoj.
Grava instigo por krei mian propran evolutablon estis la ŝanco labori kun la ekstera sistema buso EBC (ekstera busregilo), kiu estas esence paralela haveno. La mikroregilo K1986BE1QI (aviadilo) permesas vin konekti kaj labori kun eksteraj memoraj blatoj kaj ekstercentraj aparatoj, ekzemple, ADC-oj, FPGA-oj, ktp. La kapabloj de la ekstera sistema buso estas sufiĉe grandaj - vi povas labori kun 8-bita, 16-bita kaj 32-bita senmova RAM, ROM kaj NAND Flash. Por legi/skribi 32-bitajn datumojn, la regilo povas aŭtomate plenumi 2 respondajn operaciojn por 16-bitaj blatoj, kaj 8 operaciojn por 4-bitaj blatoj. Evidente, 32-bita I/O operacio estos kompletigita plej rapide kun 32-bita datumbuso. La malavantaĝoj inkluzivas la bezonon de la programo funkcii kun 32-bitaj datumoj, kaj la tabulo devos meti 32-trakojn.
Senmovaj RAM-fritoj, uzataj (divenu kiu estas misa)
Ekvilibra solvo estas uzi 16-bitajn memorajn blatojn. Mi hazarde havis blatojn de Integrated Silicon Solutions Inc. (ISSI IS61LV25616AL, 16 x 256k, 10 ns, 3.3V). Kompreneble, la kompanio Milander havas siajn proprajn statikajn memorajn blatojn
Ekstera buso kaj Sendependa reĝimoLa mikroregilo K1986BE1QI (aviadilo) havas unikan StandAlone-reĝimon, kiu estas desegnita por rekta ekstera aliro al Ethernet- kaj MKIO-regiloj (MIL_STD_1553) per ekstera buso, kun la kerno en la rekomencigita stato, t.e. ne uzata. Ĉi tiu reĝimo estas oportuna por procesoroj kaj FPGA, kiuj ne havas Eterreton kaj/aŭ MKIO.
La koneksa diagramo estas kiel sekvas:
- datumbuso MCU (D0-D15) => SRAM (I/O0-I/O15),
- adresbuso MCU(A1-A18) => SRAM(A0-A17),
- kontroli MCU(nWR,nRD,PortC2) => SRAM (NI,OE,CE),
- SRAM (UB, LB) estas konektitaj aŭ tiritaj al grundo tra rezistilo.
La CE-linio estas ligita al la elektroprovizo tra rezistilo; la stiftoj por provado de la MCU-bajto (BE0-BE3) ne estas uzitaj. Sub la spoiler, mi provizas la kodon por pravalorigi la havenojn kaj la eksteran busregilon.
Inicializante havenojn kaj EBC-regilon (ekstera busregilo)
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);
}
La mikroregilo en la pakaĵo LQFP-144 kaj la memoro en la pakaĵo TSOP-44 havas multajn rilatajn pinglojn kaj okupas multe da spaco sur la presita cirkvito. Havante sperton pri solvado de optimumigo de problemoj en la kampo de ekonomio, estis evidente al mi, ke necesas unue meti ĉi tiujn mikrocirkvitojn sur la tabulon. En diversaj fontoj mi trovis laŭdajn recenzojn pri
Grava elemento de presita cirkvito estas silkekrana presado. La evolutabulo devas ne nur havi etikedojn por la elektronikaj komponantoj, sed ĉiuj konektiloj ankaŭ devas esti etikeditaj. Sur la dorso de la tabulo mi metis tabelojn kun la funkcioj de la regulhavenoj (ĉefa, alternativa, superregita, reala). Mi mendis la produktadon de presitaj cirkvitoj en Ĉinio de la konata oficejo PCBWay. Mi ne laŭdos ĝin ĉar la kvalito estas bona. Ili povas fari pli bone, kun pli striktaj toleremoj, sed
Produktitaj MDB1986 presitaj cirkvitoj, (c) Foto de la aŭtoro
Mi devis luti la komponantojn "sur miaj genuoj" per 40-vata lutfero kaj POS-61-lutaĵo, ĉar mi malofte lutas, 1-2 fojojn jare, kaj la lutpasto sekiĝis. Mi ankaŭ devis ŝanĝi la ĉinan regilon CS32F103 al la originala STM32F103, kaj poste ankaŭ anstataŭigi la memoron. Ĝenerale, nun mi estas tute kontenta pri la rezulto, kvankam mi ankoraŭ ne kontrolis la funkciadon de RS-232 kaj CAN.
MDB1986-sencimiga tabulo en funkciado - ĝi brilas kaj varmiĝas, (c) Foto de la aŭtoro
En la retejo de Milandra vi povas trovi sufiĉe
Pensis pri MilandraMikroelektroniko disvolviĝas en Rusio, kaj la kompanio Milander ludas elstaran rolon en ĉi tiu procezo. Novaj interesaj mikroregiloj aperas, ekzemple, 1986BE81T kaj Elektrosila kun interfacoj SpaceWire kaj MKIO (same kiel en 1986BE1 kaj, eble, kun la samaj problemoj), ktp. Sed ordinaraj studentoj, instruistoj kaj inĝenieroj ne povas aĉeti tiajn mikrocirkvitojn. Ĉi tio signifas, ke la inĝenieristiko ne povos rapide identigi erarojn kaj problemojn kun ĉi tiu blato. Ŝajnas al mi, ke unue necesas produkti mikrocirkvitojn en plasta ujo, disdoni ilin al ĉiuj interesitoj, kaj post aprobo (latine approbatio - aprobo, rekono) de specialistoj, ili povas prepari revizion en metal-ceramika ujo kun protekto de ĉiuj teruraj faktoroj. Mi esperas, ke ni ĈIUJ estos baldaŭ kontenta pri la novaj projektoj anoncitaj ĉe la ekspozicioj.
La sencimiga tabulo, kiun mi ellaboris, povas esti ripetita, modifita kaj uzata de iu ajn en la eduka procezo. Antaŭ ĉio, mi faris la tabulon por mi, sed tiel bone rezultis, ke
K1986BE1QI (aero) estas tre interesa regilo kun unikaj interfacoj uzeblaj en universitatoj por instrui studentojn. Mi pensas, ke post korektado de la eraroj identigitaj en la regilo kaj trapaso de atestadaj testoj, la regilo flugos en la plej vera senco de la vorto!
fonto: www.habr.com