Opracowanie płytki rozwojowej dla K1986BE1QI (lotnictwo)

Opracowanie płytki rozwojowej dla K1986BE1QI (lotnictwo)

Kilka lat temu zapoznałem się z rosyjskimi mikrokontrolerami firmy Milander. Był rok 2013, kiedy inżynierowie żywo dyskutowali o pierwszych wynikach Federalnego Programu Celowego „Rozwój bazy podzespołów elektronicznych i elektroniki radiowej” na lata 2008-2015. W tym czasie wypuszczono już na rynek kontroler K1986BE9x (rdzeń Cortex-M3), a dopiero pojawił się kontroler 1986BE1T (rdzeń Cortex-M1). W plastikowej obudowie LQFP-144 miał w dokumentacji oznaczenie K1986BE1QI (lotnictwo), a na samym chipie oznaczenie MDR32F1QI. Na stronie producenta ma końcówkę „avia”, ponieważ posiada interfejsy specyficzne dla przemysłu lotniczego (ARINC 429, MIL_STD_1553).

Co zaskakujące, w momencie dystrybucji tych sterowników firma Milander przygotowała zestawy debugujące i bibliotekę podprogramów do pracy z urządzeniami peryferyjnymi, „ale bez żadnych dodatkowych gwarancji i zobowiązań co do poprawności biblioteki”. Biblioteka jest podobna do Standard Peripheral Library firmy STMicroelectronics. Generalnie wszystkie kontrolery ARM zbudowane na rdzeniu Cortex-M mają ze sobą wiele wspólnego. Z tego powodu zapoznanie się z nowymi rosyjskimi kontrolerami przebiegło szybko. A dla tych, którzy kupili markowe zestawy do debugowania, zapewniono wsparcie techniczne podczas użytkowania.

Opracowanie płytki rozwojowej dla K1986BE1QI (lotnictwo)
Zestaw debugujący do mikrokontrolera 1986BE1T, © Milander

Jednak z biegiem czasu zaczęły pojawiać się „choroby dziecięce” nowych mikroukładów i bibliotek. Przykładowe testy oprogramowania działały bez widocznych problemów, jednak przy znacznych modyfikacjach pojawiały się awarie i błędy. Pierwszą „przełykiem” w mojej praktyce były niewytłumaczalne awarie w działaniu sterownika CAN. Rok później wykryto problem z modułem w kontrolerze 1986BE1T (lotniczym) we wczesnej wersji MKIO (multipleksowy kanał wymiany informacji). Ogólnie rzecz biorąc, wszystkie wersje tych mikrokontrolerów do 2016 roku miały ograniczone zastosowanie. Wiele czasu i nerwów włożono w zidentyfikowanie tych problemów, których potwierdzenie można teraz znaleźć w listy błędów (Errata).

Nieprzyjemną cechą było to, że trzeba było pracować i radzić sobie z błędami nie na płytkach debugujących, ale na płytkach prototypowych urządzeń, które były planowane do seryjnej produkcji fabrycznej. Zwykle nie było tam nic poza złączem JTAG. Połączenie z analizatorem stanów logicznych było trudne i niewygodne, a poza tym zwykle nie było diod LED ani ekranów. Z tego powodu w mojej głowie pojawił się pomysł stworzenia własnej płytki debugującej.

Z jednej strony na rynku dostępne były markowe zestawy debugujące, a także wspaniałe płytki firmy LDM-Systems z Zelenogradu. Z drugiej strony ceny tych produktów są powalające, a podstawowa funkcjonalność bez kart rozszerzeń nie spełnia oczekiwań. Płytka z wlutowanym kontrolerem i złączem pinowym mnie nie interesuje. A ciekawsze tablice są drogie.

Opracowanie płytki rozwojowej dla K1986BE1QI (lotnictwo)
Płytka rozwojowa MILANDR LDM-HELPER-K1986BE1QI-FULL, © LDM Systems

Firma Milander posiada unikalną politykę cenową i marketingową. Możliwe jest zatem uzyskanie bezpłatnych próbek niektórych mikroukładów, ale jest to dostępne tylko dla osób prawnych i wiąże się z biurokratycznym zadaniem. Ogólnie rzecz biorąc, mikroukłady w metalowo-ceramicznej obudowie są złotem w dosłownym i przenośnym znaczeniu. Na przykład kontroler 1986BE1T kosztuje w Moskwie od 14 do 24 tysięcy rubli. Statyczny układ pamięci 1645RU6U kosztuje od 15000 1986 rubli. A to jest kolejność cen na wszystkie produkty. Dzięki temu nawet wyspecjalizowane instytuty badawcze na zlecenie rządu oszczędzają pieniądze i unikają takich cen. Mikroukłady w plastikowej obudowie do użytku cywilnego są znacznie tańsze, ale nie są dostępne u popularnych dostawców. Ponadto, wydaje mi się, jakość mikroukładów w plastikowej obudowie jest gorsza niż „złota”. Przykładowo nie udało mi się uruchomić kontrolera K1BE128QI na 40 MHz bez zwiększenia parametru opóźnienia flash. Jednocześnie temperatura tego sterownika wzrosła do 50-1986C. Ale kontroler 1BE128T („złoty”) zaczął się od XNUMX MHz bez dodatkowych ustawień i pozostał zimny. Jest naprawdę dobry.

Opracowanie płytki rozwojowej dla K1986BE1QI (lotnictwo)
„Złoty” mikrokontroler 1986BE1T, (c) Milander

Miałem szczęście, że mikrokontroler w plastikowej obudowie nadal można kupić w sprzedaży detalicznej w LDM Systems, a wszystkie schematy płytek są ogólnodostępne. Minusem jest to, że na stronie na zdjęciu sterownika widać oznaczenie mówiące, że jest to 4 rewizja z 2014 roku, tj. z wadami. Długo się zastanawiałem czy kupić czy nie kupić. Tak minęło kilka lat...

Pomysł stworzenia tablicy debugującej nigdzie nie zniknął. Stopniowo formułowałem wszystkie wymagania i zastanawiałem się, jak umieścić to wszystko na jednej płycie, aby była kompaktowa i niedroga. W tym samym czasie zamówiłem brakujące elementy u Chińczyków. Nie spieszyłem się - wszystko zrobiłem sam. Chińscy dostawcy notorycznie zachowują się niechlujnie – musiałem zamawiać to samo w różnych miejscach, żeby dostać wszystko, czego potrzebowałem. Co więcej, część kości pamięci okazała się używana - najwyraźniej przylutowana z uszkodzonych urządzeń. To wróciło, żeby mnie później prześladować.

Zakup mikrokontrolera Milander K1986BE1QI (powietrzny) nie jest łatwym zadaniem. W tym samym sklepie Chip and Dip, w dziale „Artykuły na zamówienie”, znalazłem tylko K1986BE92QI za 740 rubli, ale mi to nie odpowiadało. Jedyną opcją jest zakup nieświeżej wersji od LDM-Systems za 2000 rubli. Ponieważ nie mogłem nigdzie znaleźć zamiennika, zdecydowałem się kupić to, co miałem. Ku mojemu miłemu zaskoczeniu sprzedali mi fabrycznie nowy kontroler wyprodukowany w grudniu 2018, wersja 6+ (1820). Ale na stronie wciąż jest stare zdjęcie, a w chwili pisania tego tekstu kontroler nie jest dostępny...

Opracowanie płytki rozwojowej dla K1986BE1QI (lotnictwo)
Mikrokontroler K1986BE1QI (lotniczy) w opakowaniu technologicznym, (c) Fot.

Główne parametry techniczne mojej płyty debugującej MDB1986 następujące:

  • wbudowany debugger-programista, kompatybilny z J-Link i CMSIS-DAP;
  • pamięć statyczna 4Mbit (256k x 16, 10 ns);
  • układ pamięci flash 64Mbit, Winbond 25Q64FVSIG;
  • Transceiver z interfejsem RS-232 z liniami RTS i CTS;
  • interfejsy i złącza Ethernet, USB, CAN;
  • MAX7 kontroler wyświetlacza 7221-segmentowego;
  • złącze pinowe do współpracy z MKIO (MIL_STD_1553) i ARINC429;
  • fototranzystor Everlight PT17-21C;
  • pięć kolorowych diod LED, przycisk reset i dwa przyciski użytkownika;
  • zasilanie portu USB wynosi 5 woltów;
  • wymiary płytki drukowanej 100 x 80, mm

Płytki z serii STM-Discovery przypadły mi do gustu ze względu na wbudowany programator-debugger - ST-Link. Markowy ST-Link współpracuje tylko ze sterownikami firmy STMicroelectronics, ale kilka lat temu pojawiła się możliwość aktualizacji oprogramowania w ST-Link i uzyskania debugera SEGGER J-Link OB (on-board). Z prawnego punktu widzenia istnieje ograniczenie stosowania takiego debuggera tylko z płytkami STMicroelectronics, ale tak naprawdę potencjał nie jest ograniczony. Zatem mając OB J-Link, możesz mieć wbudowany programator-debugger na płytce debugującej. Zaznaczam, że produkty LDM-Systems wykorzystują konwerter CP2102 (Usb2Uart), który może jedynie flashować.

Opracowanie płytki rozwojowej dla K1986BE1QI (lotnictwo)
Mikrokontrolery STM32F103C8T6, realne i mniej realne, (c) Fot. autora

Konieczne było więc zakupienie oryginalnego STM32F103C8T6, ponieważ zastrzeżone oprogramowanie nie będzie działać poprawnie z klonem. Zwątpiłem w tę tezę i postanowiłem wypróbować kontroler CS32F103C8T6 chińskiej firmy CKS. Do samego kontrolera nie mam żadnych zastrzeżeń, jednak firmowy firmware ST-Link w nim nie działał. J-Link działał częściowo - urządzenie USB zostało wykryte, ale programator nie wykonywał swoich funkcji i ciągle przypominał, że jest „wadliwe”.

Opracowanie płytki rozwojowej dla K1986BE1QI (lotnictwo)
Błąd podczas uruchamiania debugera na nieoryginalnym kontrolerze

Nie byłem z tego zadowolony i najpierw napisałem oprogramowanie do migania diody LED, a następnie zaimplementowałem żądanie IDCODE przy użyciu protokołu JTAG. Programator ST-Link, który miałem na płytce Discovery, oraz program ST-Link Utility wgrały bez problemu CS32F103C8T6.W końcu byłem przekonany, że moja płytka działa. Ku mojej radości docelowy kontroler K1986BE1QI (lotniczy) ochoczo nadał swój IDCODE za pośrednictwem linii TDO.

Opracowanie płytki rozwojowej dla K1986BE1QI (lotnictwo)
Oscylogram linii sygnałowej TDO z zakodowaną odpowiedzią IDCODE, (c) Zdjęcie autora

Opracowanie płytki rozwojowej dla K1986BE1QI (lotnictwo)
Zatem port SWD przydał się do debugowania samego debugera i sprawdzania IDCODE

Była opcja z debugerem CMSIS-DAP (port dostępu do debugowania). Budowa projektu ze źródeł ARM nie jest łatwym zadaniem, projekt wziąłem od X893, a następnie wypróbowałem DAP42. Niestety Keil uVision zamarł i nie chciał z nimi współpracować. W rezultacie wymieniłem układ debuggera na firmowy STM32F103C8T6 i nigdy nie wróciłem do tego problemu.

Opracowanie płytki rozwojowej dla K1986BE1QI (lotnictwo)
Pomyślne działanie wbudowanego debuggera J-Link STLink V2

Kiedy wszystkie kluczowe komponenty przyszłej płytki rozwojowej były już dostępne, wszedłem do Eagle CAD i odkryłem, że nie ma ich w bibliotece elementów. Nie było dokąd pójść - musiałem je sam narysować. W tym samym czasie wykonałem miejsca montażowe dla pamięci, złącze HanRun dla Ethernetu oraz dodałem ramki na rezystory i kondensatory. Można znaleźć plik projektu i bibliotekę komponentów na moim GitHubie.

Schemat ideowy płytki rozwojowej MDB1986Opracowanie płytki rozwojowej dla K1986BE1QI (lotnictwo)

Płytka zasilana jest ze źródła prądu stałego o napięciu 5 V, pozyskiwanego z portu USB. Na płycie znajdują się w sumie dwa porty USB typu B. Jeden przeznaczony jest dla programisty, drugi dla sterownika K1986BE1QI. Płyta może działać z jednego z tych źródeł lub z obu jednocześnie. Najprostszą regulację obciążenia i zabezpieczenie linii energetycznej realizuje się za pomocą diod Schottky'ego w obwodzie D2 i D3 (SS24). Również na schemacie widać bezpieczniki samoregenerujące F1 i F2 przy 500 mA. Linie sygnałowe portu USB zabezpieczone są zespołem diod USBLC6-2SC6.

Układ debugger-programator ST-Link jest znany wielu, można go znaleźć w dokumentacji płytek STM32-Discovery i innych źródłach. Dla początkowego oprogramowania klona ST-Link/J-Link-OB/DAP (opcjonalnie) wyprowadziłem linie SWDIO (PA13), SWCLK (PA14), GND. Wiele osób używa UART do oprogramowania sprzętowego i jest zmuszonych do ściągania zworek BOOT. Ale uważam, że SWD jest wygodniejszy, a ten protokół pozwala na debugowanie.

Prawie wszystkie elementy płytki zasilane są napięciem 3.3 V, które pochodzi z regulatora napięcia AMS1117-3.3. Do tłumienia zakłóceń elektromagnetycznych i przepięć prądowych stosowane są filtry LC z kondensatorów i dławików serii BLM31PG.

Osobno warto wspomnieć o sterowniku wyświetlacza 7-segmentowego MAX7221. Według specyfikacji zalecane zasilanie wynosi od 4 do 5.5 V, a wysoki poziom sygnału (logiczny) to co najmniej 3.5 V (0.7 x VCC), przy zasilaniu 5 V. W przypadku kontrolera K1986BE1QI (lotniczego) wyjście jednostki logicznej odpowiada napięciu od 2.8 do 3.3 V. Oczywiście istnieje niedopasowanie poziomów sygnału, które może zakłócać normalne działanie. Postanowiłem zasilić MAX7221 napięciem 4 V i zmniejszyć poziom sygnału do 2.8 V (0.7 x 4 = 2.8). W tym celu diodę D4 (RS1A lub FR103) montuje się szeregowo w obwodzie zasilania sterownika. Całkowity spadek napięcia wynosi 0.9V (dioda Schottky'ego 0.3V i dioda 0.6V) i wszystko działa.

Większość portów mikrokontrolera K1986BE1QI (lotniczego) jest kompatybilna z sygnałami do 5V. Nie ma zatem problemu z wykorzystaniem transceivera CAN MCP2551, który działa również na napięciu 5V. Układ MAX232 jest oznaczony na schemacie jako transceiver RS-3232, ale tak naprawdę użyłem SN65C3232D firmy Texas Instruments, ponieważ działa od 3.3 V i zapewnia prędkość do 1 Mbit/s.

Na płytce znajdują się 4 rezonatory kwarcowe - jeden dla debuggera (8 MHz) i trzy dla docelowego mikrokontrolera K1986BE1QI (lotnictwo) o częstotliwościach znamionowych 32.768 kHz, 16 MHz, 25 MHz. Są to niezbędne elementy, ponieważ Parametry wbudowanego oscylatora RC mieszczą się w szerokim zakresie od 6 do 10 MHz. Do pracy wbudowanego kontrolera Ethernet wymagana jest częstotliwość 25 MHz. Z jakiegoś powodu na stronie internetowej Milandry (być może przez pomyłkę) znajduje się informacja, że ​​plastikowa obudowa nie ma Ethernetu. Będziemy jednak opierać się na specyfikacji i faktach.

Ważną zachętą do stworzenia własnej płytki rozwojowej była możliwość pracy z zewnętrzną magistralą systemową EBC (zewnętrzny kontroler magistrali), która w zasadzie jest portem równoległym. Mikrokontroler K1986BE1QI (samolot) umożliwia podłączenie i współpracę z zewnętrznymi układami pamięci oraz urządzeniami peryferyjnymi, np. przetwornikami ADC, FPGA itp. Możliwości zewnętrznej magistrali systemowej są dość duże - można pracować z 8-bitową, 16-bitową i 32-bitową statyczną pamięcią RAM, ROM i NAND Flash. Aby odczytać/zapisać dane 32-bitowe, sterownik może automatycznie wykonać 2 odpowiednie operacje dla układów 16-bitowych i 8 operacje dla układów 4-bitowych. Oczywiście 32-bitowa operacja we/wy zostanie ukończona najszybciej przy 32-bitowej magistrali danych. Wady obejmują konieczność działania programu z danymi 32-bitowymi, a płyta będzie musiała ułożyć 32 ścieżki.

Opracowanie płytki rozwojowej dla K1986BE1QI (lotnictwo)
Używane statyczne kości RAM (zgadnij, który jest uszkodzony)

Zrównoważonym rozwiązaniem jest użycie 16-bitowych układów pamięci. Tak się złożyło, że mam na stanie chipy Integrated Silicon Solutions Inc. (ISSI IS61LV25616AL, 16 x 256 k, 10 ns, 3.3 V). Oczywiście firma Milander ma swoje własne statyczne układy pamięci seria 1645RUale są za drogie i niedostępne. Alternatywnie dostępne są kompatybilne pinowo Samsung K6R4016V1D. Wcześniej wspomniałem, że mikroukłady okazały się używane i kopia, którą zainstalowałem początkowo dawała awarie i chaotyczne wartości​​w 15 linii danych. Znalezienie błędów sprzętowych zajęło kilka dni, a poczucie satysfakcji było większe, gdy wymieniłem uszkodzony chip na działający. Tak czy inaczej, szybkość pracy z pamięcią zewnętrzną pozostawia wiele do życzenia.

Magistrala zewnętrzna i tryb StandAloneMikrokontroler K1986BE1QI (samolot) posiada unikalny tryb StandAlone, który przeznaczony jest do bezpośredniego, zewnętrznego dostępu do kontrolerów Ethernet i MKIO (MIL_STD_1553) poprzez magistralę zewnętrzną, z rdzeniem w stanie resetu, tj. nieużywany. Ten tryb jest wygodny dla procesorów i układów FPGA, które nie mają Ethernetu i/lub MKIO.
Schemat podłączenia wygląda następująco:

  • magistrala danych MCU(D0-D15) => SRAM(I/O0-I/O15),
  • magistrala adresowa MCU(A1-A18) => SRAM(A0-A17),
  • sterowanie MCU(nWR,nRD,PortC2) => SRAM (WE,OE,CE),
  • SRAM(UB,LB) są połączone lub pociągnięte do masy poprzez rezystor.

Linia CE jest podłączona do zasilacza poprzez rezystor, piny do próbkowania bajtu MCU (BE0-BE3) nie są wykorzystywane. Pod spoilerem podaję kod inicjujący porty oraz kontroler magistrali zewnętrznej.

Inicjowanie portów i kontrolera EBC (zewnętrzny kontroler magistrali)

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

Mikrokontroler w obudowie LQFP-144 oraz pamięć w obudowie TSOP-44 posiadają wiele powiązanych pinów i zajmują dużo miejsca na płytce drukowanej. Mając doświadczenie w rozwiązywaniu problemów optymalizacyjnych z zakresu ekonomii, było dla mnie oczywiste, że najpierw trzeba umieścić te mikroukłady na płytce. W różnych źródłach spotkałem się z pochwalnymi recenzjami nt CAD TopoR (Router topologiczny). Pobrałem wersję próbną i mogłem tam wyeksportować swój projekt z Eagle CAD dopiero po usunięciu prawie wszystkich komponentów. Niestety program TopoR nie pomógł mi w umieszczeniu nawet 10 elementów na planszy. Najpierw wszystkie elementy zostały umieszczone w narożniku, a następnie ułożone wzdłuż krawędzi. Nie byłem zadowolony z tej opcji i przez długi czas prześledziłem płytkę ręcznie w znanym środowisku Eagle CAD.

Ważnym elementem płytki drukowanej jest sitodruk. Płytka rozwojowa musi mieć nie tylko etykiety elementów elektronicznych, ale także wszystkie złącza. Z tyłu płytki umieściłem tabele z funkcjami portów kontrolera (główny, alternatywny, przeciążony, rzeczywisty). Zleciłem produkcję płytek drukowanych w Chinach w znanym biurze PCBWay. Nie będę go chwalił, bo jakość jest dobra. Mogliby zrobić lepiej, przy mniejszych tolerancjach, ale za opłatą.

Opracowanie płytki rozwojowej dla K1986BE1QI (lotnictwo)
Wyprodukowano płytki drukowane MDB1986, (c) Zdjęcie autora

Elementy musiałem lutować „na kolanach” lutownicą o mocy 40 W i lutownicą POS-61, bo lutuję rzadko, 1-2 razy w roku, a pasta lutownicza wyschła. Musiałem także wymienić chiński kontroler CS32F103 na oryginalny STM32F103, a potem także wymienić pamięć. Ogólnie rzecz biorąc, teraz jestem całkowicie zadowolony z wyniku, chociaż nie sprawdzałem jeszcze działania RS-232 i CAN.

Opracowanie płytki rozwojowej dla K1986BE1QI (lotnictwo)
Płytka debugująca MDB1986 działa - świeci i grzeje, (c) Zdjęcie autora

Na stronie internetowej Milandry znajdziesz wystarczająco dużo materiały edukacyjne dla uczących się kontrolerów serii 1986BE9 (rdzeń Cortex-M3), natomiast w przypadku mikrokontrolera K1986BE1QI (lotniczego) nic tam nie widzę. Po zapoznaniu się z opublikowanymi tam materiałami, podręcznikami i pracami laboratoryjnymi dla uniwersytetów, cieszę się, że w całym kraju personel jest szkolony do pracy z rosyjskimi kontrolerami. Większość materiałów szkoleniowych przygotowuje do pracy z portami I/O, timerami, ADC, DAC, SPI, UART. Stosowane są różne środowiska programistyczne IDE (Keil, IAR, CodeMaster). Gdzieś programują przy użyciu rejestrów CMSIS, a gdzieś korzystają z Biblioteki MDR. Należy wspomnieć o zasobie Uruchom Milandr, który zawiera wiele artykułów od praktykujących programistów. I oczywiście nie powinniśmy o tym zapominać Forum Milandry.

Myślałem o MilandrzeMikroelektronika rozwija się w Rosji, a firma Milander odgrywa w tym procesie znaczącą rolę. Pojawiają się nowe ciekawe mikrokontrolery, np. 1986BE81T i Elektrosila z interfejsami SpaceWire i MKIO (te same co w 1986BE1 i być może z tymi samymi problemami) itp. Ale zwykli uczniowie, nauczyciele i inżynierowie budownictwa nie mogą kupić takich mikroukładów. Oznacza to, że społeczność inżynierów nie będzie w stanie szybko zidentyfikować błędów i problemów z tym chipem. Wydaje mi się, że najpierw trzeba wyprodukować mikroukłady w plastikowej obudowie, rozdać je wszystkim zainteresowanym, a po zatwierdzeniu (łac. approbatio - zatwierdzenie, uznanie) przez specjalistów można przygotować rewizję w metalowo-ceramicznej obudowie z ochrona przed wszystkimi strasznymi czynnikami. Mam nadzieję, że w najbliższej przyszłości WSZYSCY będziemy zadowoleni z nowych projektów zapowiadanych na wystawach.
Opracowana przeze mnie tablica debugowania może być powtarzana, modyfikowana i wykorzystywana przez każdego w procesie edukacyjnym. Najpierw zrobiłem tablicę dla siebie, ale wyszło tak dobrze, że Postanowiłem podzielić się ze wszystkimi.

K1986BE1QI (air) to bardzo ciekawy kontroler z unikalnymi interfejsami, który można wykorzystać na uczelniach do nauczania studentów. Myślę, że po poprawieniu błędów wykrytych w sterowniku i przejściu testów certyfikacyjnych sterownik będzie latał w pełnym tego słowa znaczeniu!

Źródło: www.habr.com

Dodaj komentarz