Desenvolvemento dunha placa de desenvolvemento para K1986BE1QI (aviación)

Desenvolvemento dunha placa de desenvolvemento para K1986BE1QI (aviación)

Hai varios anos coñecín os microcontroladores rusos de Milander. Era 2013, cando os enxeñeiros discutían con forza os primeiros resultados do Programa Federal de Obxectivos "Desenvolvemento de bases de compoñentes electrónicos e electrónica de radio" para 2008-2015. Nese momento, o controlador K1986BE9x (núcleo Cortex-M3) xa fora lanzado e acababa de aparecer o controlador 1986BE1T (núcleo Cortex-M1). No caso de plástico, LQFP-144, tiña a designación K1986BE1QI (aviación) na documentación, e no propio chip a designación MDR32F1QI. Na páxina web do fabricante ten o sufixo “avia”, xa que conta con interfaces específicas para a industria aeronáutica (ARINC 429, MIL_STD_1553).

Sorprendentemente, no momento da distribución destes controladores, a empresa Milander preparou kits de depuración e unha biblioteca de subrutinas para traballar con periféricos, "pero sen garantías nin obrigas adicionais sobre a corrección da biblioteca". A biblioteca é similar á Standard Peripheral Library de STMicroelectronics. En xeral, todos os controladores ARM construídos no núcleo Cortex-M teñen moito en común. Por este motivo, a familiarización cos novos controladores rusos foi rapidamente. E para aqueles que compraron kits de depuración de marca, proporcionouse soporte técnico durante o uso.

Desenvolvemento dunha placa de desenvolvemento para K1986BE1QI (aviación)
Kit de depuración para microcontrolador 1986BE1T, © Milander

Non obstante, co paso do tempo, comezaron a aparecer "enfermidades infantís" de novos microcircuítos e bibliotecas. Os exemplos de proba do firmware funcionaron sen problemas visibles, pero con modificacións significativas producíronse fallos e erros. O primeiro "trago" na miña práctica foron fallos inexplicables no funcionamento do controlador CAN. Un ano despois, descubriuse un problema co módulo no controlador 1986BE1T (aviación) dunha revisión inicial. MKIO (canle de intercambio de información múltiplex). En xeral, todas as revisións destes microcontroladores ata 2016 foron de uso limitado. Pasou moito tempo e nervios para identificar estes problemas, cuxa confirmación agora se pode atopar en listas de erros (erratas).

Unha característica desagradable foi que era necesario traballar e xestionar erros non en placas de depuración, senón en placas prototipo de dispositivos que se planificaron para a produción en serie de fábrica. Normalmente non había nada alí excepto o conector JTAG. Conectarse cun analizador lóxico era difícil e inconveniente, e normalmente non había LED nin pantallas. Por este motivo, apareceu na miña cabeza a idea de crear o meu propio taboleiro de depuración.

Por unha banda, había kits de depuración de marca no mercado, así como placas marabillosas da empresa LDM-Systems de Zelenograd. Por outra banda, os prezos destes produtos son abraiantes e a funcionalidade básica sen tarxetas de expansión non cumpre as expectativas. Unha placa cun controlador soldado e un conector pin non me interesa. E as placas máis interesantes son caras.

Desenvolvemento dunha placa de desenvolvemento para K1986BE1QI (aviación)
Placa de desenvolvemento MILANDR LDM-HELPER-K1986BE1QI-FULL, © LDM Systems

A empresa Milander ten unha política de prezos e marketing únicos. Así, é posible obter mostras gratuítas dalgúns microcircuítos, pero isto só está dispoñible para persoas xurídicas e está asociado a unha procura burocrática. En xeral, os microcircuítos nunha caixa de metal-cerámica son ouro no sentido literal e figurado. Por exemplo, un controlador 1986BE1T custa entre 14 e 24 mil rublos en Moscova. O chip de memoria estática 1645RU6U custa a partir de 15000 rublos. E esta é a orde de prezos para todos os produtos. Como resultado, mesmo os institutos de investigación especializados con ordes gobernamentais aforran cartos e evitan tales prezos. Os microcircuítos nunha caixa de plástico para uso civil son significativamente máis baratos, pero non están dispoñibles en provedores populares. Ademais, a calidade dos microcircuítos nunha caixa de plástico, paréceme, é peor que os "de ouro". Por exemplo, non podería executar o controlador K1986BE1QI a 128 MHz sen aumentar o parámetro de latencia do flash. Ao mesmo tempo, a temperatura deste controlador subiu a 40-50C. Pero o controlador 1986BE1T ("ouro") comezou a 128 MHz sen configuracións adicionais e mantívose frío. É moi bo.

Desenvolvemento dunha placa de desenvolvemento para K1986BE1QI (aviación)
Microcontrolador "Golden" 1986BE1T, (c) Milander

Tiven a sorte de que un microcontrolador nunha caixa de plástico aínda se pode mercar no comercio polo miúdo de LDM Systems e todos os diagramas de placas están dispoñibles gratuitamente. O malo é que na web na foto do controlador podes ver unha marca que di que se trata da 4a revisión do 2014, é dicir. con defectos. Pensei durante moito tempo se mercar ou non mercar. Pasaron varios anos así...

A idea de crear un taboleiro de depuración non desapareceu por ningún lado. Pouco a pouco, fun formando todos os requisitos e pensei en como colocalo todo nunha placa para que fose compacto e non caro. Ao mesmo tempo, pedín os compoñentes que faltaban aos chineses. Non tiña présa: fixen todo por min. Os provedores chineses son notoriamente descoidados: tiven que pedir o mesmo en diferentes lugares para conseguir todo o que necesitaba. Ademais, algúns dos chips de memoria resultaron ser usados, aparentemente soldados a partir de dispositivos rotos. Isto volveu perseguirme máis tarde.

Comprar un microcontrolador Milander K1986BE1QI (aire) non é unha tarefa fácil. Na mesma tenda Chip and Dip, na sección "Artículos para encargar", atopei só K1986BE92QI por 740 rublos, pero non me gustou. A única opción é mercar unha revisión non fresca de LDM-Systems por 2000 rublos. Como non puiden atopar un substituto en ningún outro lugar, decidín mercar o que tiña. Para a miña agradable sorpresa, vendéronme un controlador novo fabricado en decembro de 2018, revisión 6+ (1820). Pero o sitio aínda ten unha foto antiga, e no momento de escribir o controlador non está dispoñible...

Desenvolvemento dunha placa de desenvolvemento para K1986BE1QI (aviación)
Microcontrolador K1986BE1QI (aviación) en embalaxe tecnolóxica, (c) Foto do autor

Principais características técnicas da miña placa de depuración MDB1986 o seguinte:

  • depurador-programador integrado, compatible con J-Link e CMSIS-DAP;
  • memoria estática 4 Mbit (256k x 16, 10 ns);
  • chip de memoria flash 64 Mbit, Winbond 25Q64FVSIG;
  • Transceptor de interface RS-232 con liñas RTS e CTS;
  • interfaces e conectores para Ethernet, USB, CAN;
  • MAX7 controlador de pantalla de 7221 segmentos;
  • conector pin para traballar con MKIO (MIL_STD_1553) e ARINC429;
  • fototransistor Everlight PT17-21C;
  • cinco LEDs de cores, un botón de reinicio e dous botóns de usuario;
  • a fonte de alimentación do porto USB é de 5 voltios;
  • Dimensións da placa de circuíto impreso 100 x 80, mm

Gustáronme as placas da serie STM-Discovery porque teñen un programador-depurador incorporado: ST-Link. Branded ST-Link só funciona con controladores de STMicroelectronics, pero hai un par de anos fíxose posible actualizar o firmware en ST-Link e obter o depurador SEGGER J-Link OB (integrado). Legalmente, hai unha restrición para usar un depurador deste tipo só con placas STMicroelectronics, pero de feito o potencial non está limitado. Así, tendo un OB J-Link, podes ter un programador-depurador integrado no taboleiro de depuración. Teño en conta que os produtos LDM-Systems usan o conversor CP2102 (Usb2Uart), que só pode flashear.

Desenvolvemento dunha placa de desenvolvemento para K1986BE1QI (aviación)
Microcontroladores STM32F103C8T6, reais e non tan reais, (c) Foto do autor

Entón, foi necesario comprar o STM32F103C8T6 orixinal, xa que o firmware propietario non funcionará correctamente co clon. Dubidei desta tese e decidín probar o controlador CS32F103C8T6 da empresa chinesa CKS. Non teño ningunha queixa sobre o propio controlador, pero o firmware propietario ST-Link non funcionou nel. J-Link funcionou parcialmente: detectouse o dispositivo USB, pero o programador non realizou as súas funcións e lembrou constantemente que estaba "defectuoso".

Desenvolvemento dunha placa de desenvolvemento para K1986BE1QI (aviación)
Produciuse un erro ao executar o depurador nun controlador non orixinal

Non quedei satisfeito con isto e primeiro escribín o firmware para parpadear o LED e despois implementei a solicitude IDCODE usando o protocolo JTAG. O programador ST-Link, que tiña na placa Discovery, e o programa ST-Link Utility flashearon CS32F103C8T6 sen ningún problema.Ao final, estaba convencido de que a miña placa funcionaba. Para o meu deleite, o controlador de destino K1986BE1QI (aviación) emitiu alegremente o seu IDCODE a través da liña TDO.

Desenvolvemento dunha placa de desenvolvemento para K1986BE1QI (aviación)
Oscilograma dunha liña de sinal TDO cunha resposta IDCODE codificada, (c) Foto do autor

Desenvolvemento dunha placa de desenvolvemento para K1986BE1QI (aviación)
Polo tanto, o porto SWD foi útil para depurar o propio depurador e comprobar o IDCODE

Había unha opción cun depurador CMSIS-DAP (Porto de acceso de depuración). Construír un proxecto a partir de fontes ARM non é unha tarefa fácil, tomei o proxecto de X893, e despois probei DAP42. Desafortunadamente, Keil uVision conxelouse e non quería traballar con eles. Como resultado, substituín o chip depurador por un STM32F103C8T6 propietario e nunca volvín a este problema.

Desenvolvemento dunha placa de desenvolvemento para K1986BE1QI (aviación)
Funcionamento exitoso do depurador incorporado J-Link STLink V2

Cando todos os compoñentes clave da futura placa de desenvolvemento estaban dispoñibles, entrei en Eagle CAD e descubrín que non estaban na biblioteca de elementos. Non había onde ir: tiven que debuxalos eu. Ao mesmo tempo, fixen puntos de montaxe para a memoria, un conector HanRun para Ethernet e engadín marcos para resistencias e capacitores. Pódese atopar o ficheiro do proxecto e a biblioteca de compoñentes no meu GitHub.

Diagrama esquemático da placa de desenvolvemento MDB1986Desenvolvemento dunha placa de desenvolvemento para K1986BE1QI (aviación)

A placa está alimentada por unha fonte de CC de 5 voltios obtida do porto USB. Hai un total de dous portos USB tipo B no taboleiro. Un é para o programador, o segundo é para o controlador K1986BE1QI. O consello pode operar desde calquera destas fontes ou desde ambas simultáneamente. A regulación de carga máis sinxela e a protección da liña eléctrica impléntanse mediante díodos Schottky, nos circuítos D2 e ​​D3 (SS24). Tamén no diagrama podes ver os fusibles autorrestaurables F1 e F2 a 500 mA. As liñas de sinal do porto USB están protexidas por un conxunto de diodos USBLC6-2SC6.

O circuíto depurador-programador ST-Link é coñecido por moitos; pódese atopar na documentación para placas STM32-Discovery e outras fontes. Para o firmware inicial do clon ST-Link/J-Link-OB/DAP (opcional), saquei as liñas SWDIO (PA13), SWCLK (PA14), GND. Moitas persoas usan UART para o firmware e vense obrigadas a tirar dos puentes BOOT. Pero creo que SWD é máis conveniente e este protocolo permite a depuración.

Case todos os compoñentes da placa están alimentados por 3.3 voltios, que proveñen do regulador de voltaxe AMS1117-3.3. Para suprimir interferencias electromagnéticas e sobretensións de corrente, utilízanse filtros LC de capacitores e estranguladores da serie BLM31PG.

Por separado, paga a pena mencionar o controlador de pantalla de 7 segmentos MAX7221. Segundo a especificación, a fonte de alimentación recomendada é de 4 a 5.5 voltios e o nivel de sinal alto (lóxico) é de polo menos 3.5 V (0.7 x VCC), cunha fonte de 5 V. Para o controlador K1986BE1QI (aviación), a saída dunha unidade lóxica corresponde a unha tensión de 2.8 a 3.3 V. Obviamente hai un desajuste entre os niveis de sinal que pode interferir co funcionamento normal. Decidín alimentar o MAX7221 a 4 V e reducir os niveis de sinal a 2.8 V (0.7 x 4 = 2.8). Para iso, o díodo D4 (RS1A ou FR103) está instalado en serie no circuíto de alimentación do controlador. A caída de tensión total é de 0.9 V (diodo Schottky 0.3 V e diodo 0.6 V) e todo funciona.

A maioría dos portos do microcontrolador K1986BE1QI (aviación) son compatibles con sinais de ata 5V. Polo tanto, non hai ningún problema para usar o transceptor CAN MCP2551, que tamén funciona con 5V. O chip MAX232 está indicado como un transceptor RS-3232 no diagrama, pero de feito usei SN65C3232D de Texas Instruments, porque funciona a partir de 3.3 V e proporciona velocidades de ata 1 Mbit/s.

A placa contén 4 resonadores de cuarzo: un para o depurador (8 MHz) e tres para o microcontrolador obxectivo K1986BE1QI (aviación) con clasificacións de 32.768 kHz, 16 MHz, 25 MHz. Estes son compoñentes necesarios, porque Os parámetros do oscilador RC incorporado están dentro dun amplo rango de 6 a 10 MHz. Requírese unha frecuencia de 25 MHz para o funcionamento do controlador Ethernet integrado. Por algún motivo, o sitio web de Milandra (quizais por erro) afirma que a caixa de plástico non ten Ethernet. Pero confiaremos na especificación e nos feitos.

Un incentivo importante para crear a miña propia placa de desenvolvemento foi a oportunidade de traballar co bus de sistema externo EBC (controlador de bus externo), que é esencialmente un porto paralelo. O microcontrolador K1986BE1QI (avión) permítelle conectar e traballar con chips de memoria externos e dispositivos periféricos, por exemplo, ADC, FPGA, etc. As capacidades do bus do sistema externo son bastante grandes: pode traballar con RAM estática de 8 bits, 16 bits e 32 bits, ROM e NAND Flash. Para ler/escribir datos de 32 bits, o controlador pode realizar automaticamente 2 operacións correspondentes para chips de 16 bits e 8 operacións para chips de 4 bits. Obviamente, unha operación de E/S de 32 bits completarase máis rápido cun bus de datos de 32 bits. As desvantaxes inclúen a necesidade de que o programa funcione con datos de 32 bits, e a placa terá que colocar 32 pistas.

Desenvolvemento dunha placa de desenvolvemento para K1986BE1QI (aviación)
Chips de RAM estáticos, usados ​​(adiviña cal é defectuoso)

Unha solución equilibrada é usar chips de memoria de 16 bits. Eu tiña chips de Integrated Silicon Solutions Inc. en stock. (ISSI IS61LV25616AL, 16 x 256k, 10 ns, 3.3 V). Por suposto, a empresa Milander ten os seus propios chips de memoria estática Serie 1645RU, pero son demasiado caros e non están dispoñibles. Como alternativa, hai Samsung K6R4016V1D compatible con pin. Antes mencionei que os microcircuítos resultaron ser usados ​​e que a copia que instalei inicialmente deu fallos e valores caóticos na 15ª liña de datos. Tardaron varios días en atopar erros de hardware, e canto maior era a sensación de satisfacción cando substituín o chip danado por un funcionando. Sexa como for, a velocidade de traballo con memoria externa deixa moito que desexar.

Bus externo e modo autónomoO microcontrolador (avión) K1986BE1QI ten un modo autónomo único, que está deseñado para o acceso externo directo a controladores Ethernet e MKIO (MIL_STD_1553) a través dun bus externo, co núcleo no estado de reinicio, é dicir. non utilizados. Este modo é conveniente para procesadores e FPGA que non teñan Ethernet e/ou MKIO.
O esquema de conexión é o seguinte:

  • bus de datos MCU (D0-D15) => SRAM (I/O0-I/O15),
  • bus de dirección MCU (A1-A18) => SRAM (A0-A17),
  • control MCU(nWR,nRD,PortC2) => SRAM (WE,OE,CE),
  • SRAM (UB,LB) están conectados ou tirados a terra a través dunha resistencia.

A liña CE está conectada á fonte de alimentación a través dunha resistencia; non se utilizan os pinos para a mostra do byte MCU (BE0-BE3). Baixo o spoiler, proporciono o código para inicializar os portos e o controlador de bus externo.

Inicializando portos e controlador EBC (controlador de bus externo)

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

O microcontrolador do paquete LQFP-144 e a memoria do paquete TSOP-44 teñen moitos pinos asociados e ocupan moito espazo na placa de circuíto impreso. Tendo experiencia na resolución de problemas de optimización no campo da economía, era obvio para min que era necesario colocar primeiro estes microcircuítos no taboleiro. En varias fontes atopeime con críticas elogiosas CAD TopoR (enrutador topológico). Descarguei a versión de proba e puiden exportar o meu proxecto desde Eagle CAD alí só despois de eliminar case todos os compoñentes. Desafortunadamente, o programa TopoR non me axudou a colocar nin sequera 10 elementos no taboleiro. En primeiro lugar, todos os compoñentes colocáronse nunha esquina e despois dispoñíronse ao longo do bordo. Non quedei satisfeito con esta opción e durante moito tempo tracei o taboleiro manualmente no entorno familiar Eagle CAD.

Un elemento importante dunha placa de circuíto impreso é a serigrafía. A tarxeta de desenvolvemento non só debe ter etiquetas para os compoñentes electrónicos, senón que todos os conectores tamén deben estar etiquetados. Na parte traseira do taboleiro coloquei táboas coas funcións dos portos do controlador (principal, alternativo, anulado, real). Pedín a produción de placas de circuíto impreso en China da coñecida oficina PCBWay. Non o encomiarei porque a calidade é boa. Poden facelo mellor, con tolerancias máis estritas, pero por unha taxa.

Desenvolvemento dunha placa de desenvolvemento para K1986BE1QI (aviación)
Placas de circuíto impreso MDB1986 fabricadas, (c) Foto do autor

Tiven que soldar os compoñentes "de xeonllos" cun soldador de 40 watts e soldadura POS-61, porque raramente soldo, 1-2 veces ao ano, e a pasta de soldadura se secou. Tamén tiven que cambiar o controlador chinés CS32F103 polo STM32F103 orixinal e despois tamén substituír a memoria. En xeral, agora estou completamente satisfeito co resultado, aínda que aínda non comprobei o funcionamento de RS-232 e CAN.

Desenvolvemento dunha placa de desenvolvemento para K1986BE1QI (aviación)
Placa de depuración MDB1986 en funcionamento: brilla e quenta, (c) Foto do autor

No sitio web de Milandra podes atopar abondo materiais educativos para controladores de aprendizaxe serie 1986BE9 (núcleo Cortex-M3), pero para o microcontrolador K1986BE1QI (aviación) non vexo nada alí. Despois de mirar os materiais, os manuais e os traballos de laboratorio para as universidades publicados alí, alégrome de que se estea adestrando persoal en todo o país para traballar cos controladores rusos. A maioría dos materiais de formación prepáranse para traballar con portos de E/S, temporizadores, ADC, DAC, SPI, UART. Utilízanse diferentes contornos de desenvolvemento IDE (Keil, IAR, CodeMaster). Nalgún lugar programan usando rexistros CMSIS e nalgún lugar usan a Biblioteca MDR. Debe mencionarse o recurso Comeza Milanr, que contén moitos artigos de programadores en exercicio. E, por suposto, non debemos esquecer Foro de Milandra.

Pensei en MilandraA microelectrónica está a desenvolverse en Rusia, e a empresa Milander xoga un papel destacado neste proceso. Aparecen novos microcontroladores interesantes, por exemplo, 1986BE81T e Elektrosila con interfaces SpaceWire e MKIO (igual que no 1986BE1 e, posiblemente, cos mesmos problemas), etc. Pero os estudantes comúns, os profesores e os enxeñeiros civís non poden comprar tales microcircuítos. Isto significa que a comunidade de enxeñeiros non poderá identificar rapidamente erros e problemas con este chip. Paréceme que primeiro é necesario producir microcircuítos nunha caixa de plástico, distribuílos a todas as partes interesadas e, tras a aprobación (latín aprobación - aprobación, recoñecemento) por parte de especialistas, poden preparar unha revisión nunha caixa de metal-cerámica con protección contra todos os factores terribles. Espero que nun futuro próximo todos esteamos satisfeitos cos novos proxectos anunciados nas exposicións.
O cadro de depuración que desenvolvín pode ser repetido, modificado e utilizado por calquera persoa no proceso educativo. En primeiro lugar, fixen o taboleiro para min, pero resultou tan ben que Decidín compartir con todos.

K1986BE1QI (aire) é un controlador moi interesante con interfaces únicas que se poden usar nas universidades para ensinar aos estudantes. Creo que despois de corrixir os erros identificados no controlador e pasar as probas de certificación, o controlador voará no verdadeiro sentido da palabra.

Fonte: www.habr.com

Engadir un comentario