Pagbuo ng isang development board para sa K1986BE1QI (aviation)

Pagbuo ng isang development board para sa K1986BE1QI (aviation)

Ilang taon na ang nakalilipas nakilala ko ang mga microcontroller ng Russia mula sa Milander. Ito ay 2013, nang masiglang tinatalakay ng mga inhinyero ang mga unang resulta ng Federal Target Program na "Pag-unlad ng base ng elektronikong bahagi at radio electronics" para sa 2008-2015. Sa oras na iyon, ang K1986BE9x controller (Cortex-M3 core) ay nai-release na, at ang 1986BE1T controller (Cortex-M1 core) ay lumabas na. Sa plastic case, LQFP-144, mayroon itong designation na K1986BE1QI (aviation) sa dokumentasyon, at sa chip mismo ang designation MDR32F1QI. Sa website ng gumawa, mayroon itong suffix na "avia", dahil mayroon itong mga interface na partikular sa industriya ng sasakyang panghimpapawid (ARINC 429, MIL_STD_1553).

Nakapagtataka, sa oras ng pamamahagi ng mga controllers na ito, ang kumpanya ng Milander ay naghanda ng mga debugging kit at isang library ng mga subroutine para sa pagtatrabaho sa mga peripheral, "ngunit walang anumang karagdagang garantiya o obligasyon tungkol sa kawastuhan ng library." Ang library ay katulad ng Standard Peripheral Library mula sa STMicroelectronics. Sa pangkalahatan, ang lahat ng ARM controllers na binuo sa Cortex-M core ay magkapareho. Para sa kadahilanang ito, mabilis na nagpatuloy ang pamilyar sa mga bagong controller ng Russia. At para sa mga bumili ng branded na debugging kit, ibinigay ang teknikal na suporta habang ginagamit.

Pagbuo ng isang development board para sa K1986BE1QI (aviation)
Debug kit para sa microcontroller 1986BE1T, Β© Milander

Однако, со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΡ€ΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ «дСтскиС Π±ΠΎΠ»Π΅Π·Π½ΠΈΒ» Π½ΠΎΠ²Ρ‹Ρ… микросхСм ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. ВСстовыС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π±Π΅Π· Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π½ΠΎ ΠΏΡ€ΠΈ сущСствСнной ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡΡ‹ΠΏΠ°Π»ΠΈΡΡŒ сбои ΠΈ ошибки. ΠŸΠ΅Ρ€Π²ΠΎΠΉ «ласточкой» Π² ΠΌΠΎΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π±Ρ‹Π»ΠΈ Π½Π΅ΠΎΠ±ΡŠΡΡΠ½ΠΈΠΌΡ‹Π΅ сбои Π² Ρ€Π°Π±ΠΎΡ‚Π΅ CAN-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. Π§Π΅Ρ€Π΅Π· Π³ΠΎΠ΄ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ 1986Π’Π•1Π’ (Π°Π²ΠΈΠ°) Ρ€Π°Π½Π½Π΅ΠΉ Ρ€Π΅Π²ΠΈΠ·ΠΈΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»Π°ΡΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ MKIO (multiplex information exchange channel). Sa pangkalahatan, ang lahat ng mga rebisyon ng mga microcontroller na ito hanggang 2016 ay limitado ang paggamit. Maraming oras at nerbiyos ang nagpunta sa pagtukoy sa mga problemang ito, ang kumpirmasyon nito ay makikita na ngayon mga listahan ng error (Errata).

Ang isang hindi kasiya-siyang tampok ay na kinakailangan upang gumana at harapin ang mga error hindi sa mga debugging board, ngunit sa mga prototype na board ng mga device na binalak para sa serial production ng pabrika. Karaniwang wala doon maliban sa JTAG connector. Ang pagkonekta sa isang logic analyzer ay mahirap at hindi maginhawa, at karaniwang walang mga LED o screen. Para sa kadahilanang ito, ang ideya ng paglikha ng sarili kong debugging board ay lumitaw sa aking isipan.

Sa isang banda, may mga branded na debugging kit sa merkado, pati na rin ang mga magagandang board mula sa kumpanya ng LDM-Systems mula sa Zelenograd. Sa kabilang banda, ang mga presyo para sa mga produktong ito ay nakakagulat, at ang pangunahing pag-andar na walang mga expansion card ay hindi nakakatugon sa mga inaasahan. Ang isang board na may soldered controller at isang pin connector ay walang interes sa akin. At mas kawili-wiling mga board ay mahal.

Pagbuo ng isang development board para sa K1986BE1QI (aviation)
Development board MILADR LDM-HELPER-K1986BE1QI-FULL, Β© LDM Systems

Ang kumpanya ng Milander ay may natatanging patakaran sa pagpepresyo at marketing. Kaya, posibleng makakuha ng mga libreng sample ng ilang microcircuits, ngunit available lang ito sa mga legal na entity at nauugnay sa isang bureaucratic quest. Sa pangkalahatan, ang mga microcircuits sa isang metal-ceramic na kaso ay ginto sa literal at makasagisag na kahulugan. Halimbawa, ang isang 1986BE1T controller ay nagkakahalaga mula 14 hanggang 24 na libong rubles sa Moscow. Ang 1645RU6U static memory chip ay nagkakahalaga mula sa 15000 rubles. At ito ang order ng presyo para sa lahat ng mga produkto. Bilang resulta, kahit na ang mga dalubhasang institusyon ng pananaliksik na may mga order ng gobyerno ay nakakatipid ng pera at umiiwas sa mga naturang presyo. Ang mga microcircuits sa isang plastic case para sa paggamit ng sibilyan ay makabuluhang mas mura, ngunit hindi sila magagamit mula sa mga sikat na supplier. Bilang karagdagan, ang kalidad ng mga microcircuits sa isang plastic na kaso, tila sa akin, ay mas masahol pa kaysa sa mga "ginto". Halimbawa, hindi ko mapapatakbo ang K1986BE1QI controller sa 128 MHz nang hindi tinataasan ang flash latency parameter. Kasabay nito, ang temperatura ng controller na ito ay tumaas sa 40-50C. Ngunit ang 1986BE1T (β€œginto”) na controller ay nagsimula sa 128 MHz nang walang karagdagang mga setting at nanatiling malamig. Ang galing niya talaga.

Pagbuo ng isang development board para sa K1986BE1QI (aviation)
"Golden" microcontroller 1986BE1T, (c) Milander

Ako ay mapalad na ang isang microcontroller sa isang plastic case ay maaari pa ring mabili sa retail mula sa LDM Systems, at lahat ng mga board diagram ay malayang magagamit. Ang masamang bagay ay na sa website sa larawan ng controller ay makikita mo ang isang pagmamarka na nagsasabing ito ang ika-4 na rebisyon ng 2014, i.e. may mga depekto. Matagal akong nag-isip kung bibili ba ako o hindi. Lumipas ang ilang taon ng ganito...

Ang ideya ng paglikha ng isang debug board ay hindi nawala kahit saan. Unti-unti kong nabuo ang lahat ng mga kinakailangan at naisip kung paano ilagay ang lahat sa isang board upang ito ay maging compact at hindi magastos. Kasabay nito, nag-order ako ng mga nawawalang sangkap mula sa Intsik. Hindi ako nagmamadali - ginawa ko ang lahat para sa aking sarili. Ang mga supplier na Tsino ay kilalang palpak - Kinailangan kong mag-order ng parehong bagay mula sa iba't ibang lugar upang makuha ang lahat ng kailangan ko. Bukod dito, ang ilan sa mga memory chips ay ginamit - tila na-solder mula sa mga sirang device. Ito ay bumalik sa pagmumultuhan sa akin mamaya.

Ang pagbili ng microcontroller na Milander K1986BE1QI (air) ay hindi isang madaling gawain. Sa parehong tindahan ng Chip at Dip, sa seksyong "Mga item na iuutos," nakita ko lamang ang K1986BE92QI para sa 740 rubles, ngunit hindi ito nababagay sa akin. Ang tanging pagpipilian ay bumili ng hindi sariwang rebisyon mula sa LDM-Systems para sa 2000 rubles. Dahil wala akong mahanap na kapalit kahit saan, nagpasya akong bilhin kung ano ang mayroon ako. Sa aking kasiya-siyang sorpresa, ibinenta nila sa akin ang isang bagong-bagong controller na ginawa noong Disyembre 2018, rebisyon 6+ (1820). Ngunit ang site ay mayroon pa ring lumang larawan, at sa oras ng pagsulat ng controller ay hindi magagamit...

Pagbuo ng isang development board para sa K1986BE1QI (aviation)
Microcontroller K1986BE1QI (aviation) sa teknolohikal na packaging, (c) Larawan ng may-akda

Pangunahing teknikal na katangian ng aking debug board MDB1986 ang mga sumusunod:

  • встроСнный ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€, совмСстимый с J-Link ΠΈ CMSIS-DAP;
  • static na memorya 4Mbit (256k x 16, 10 ns);
  • микросхСма Ρ„Π»ΡΡˆ памяти 64ΠœΠ±ΠΈΡ‚, Winbond 25Q64FVSIG;
  • RS-232 interface transceiver na may mga linya ng RTS at CTS;
  • mga interface at konektor para sa Ethernet, USB, CAN;
  • MAX7 7221-segment na display controller;
  • ΡˆΡ‚Ρ‹Ρ€Π΅Π²ΠΎΠΉ Ρ€Π°Π·ΡŠΡ‘ΠΌ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с МКИО (MIL_STD_1553) ΠΈ ARINC429;
  • phototransistor Everlight PT17-21C;
  • limang kulay na LED, isang reset button at dalawang user button;
  • power supply sa USB port ay 5 volts;
  • Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ‹ 100 Ρ… 80, ΠΌΠΌ

Nagustuhan ko ang mga board ng serye ng STM-Discovery dahil mayroon silang built-in na programmer-debugger - ST-Link. Gumagana lamang ang Branded ST-Link sa mga controller mula sa STMicroelectronics, ngunit ilang taon na ang nakalipas naging posible na i-update ang firmware sa ST-Link at makakuha ng SEGGER J-Link OB (on-board) Debugger. Sa legal, mayroong paghihigpit sa paggamit ng naturang debugger lamang sa mga STMicroelectronics boards, ngunit sa katunayan ang potensyal ay hindi limitado. Kaya, ang pagkakaroon ng J-Link OB, maaari kang magkaroon ng built-in na programmer-debugger sa debugging board. Tandaan ko na ang mga produkto ng LDM-Systems ay gumagamit ng CP2102 (Usb2Uart) converter, na maaari lamang mag-flash.

Pagbuo ng isang development board para sa K1986BE1QI (aviation)
STM32F103C8T6 microcontrollers, totoo at hindi totoong totoo, (c) Larawan ng may-akda

Kaya, kinailangan na bumili ng orihinal na STM32F103C8T6, dahil ang pagmamay-ari na firmware ay hindi gagana nang tama sa clone. Nag-alinlangan ako sa tesis na ito at nagpasyang subukan ang CS32F103C8T6 controller mula sa kumpanyang Chinese na CKS. Wala akong mga reklamo tungkol sa controller mismo, ngunit ang pagmamay-ari na ST-Link firmware ay hindi gumana dito. Bahagyang gumana ang J-Link - nakita ang USB device, ngunit hindi ginampanan ng programmer ang mga function nito at patuloy na pinapaalalahanan na ito ay "depekto".

Pagbuo ng isang development board para sa K1986BE1QI (aviation)
Error kapag pinapatakbo ang debugger sa isang hindi orihinal na controller

Π― Π½Π° этом Π½Π΅ успокоился ΠΈ написал сначала ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ для мигания свСтодиодом, Π° ΠΏΠΎΡ‚ΠΎΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» запрос IDCODE ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ JTAG. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€ ST-Link, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Ρƒ мСня Π½Π° ΠΏΠ»Π°Ρ‚Π΅ Discovery, ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ST-Link Utility ΠΏΡ€ΠΎΡˆΠΈΠ²Π°Π»ΠΈ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ CS32F103C8T6.Π’ ΠΈΡ‚ΠΎΠ³Π΅ я убСдился Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ моя ΠΏΠ»Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. На мою Ρ€Π°Π΄ΠΎΡΡ‚ΡŒ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ К1986Π’Π•1QI (Π°Π²ΠΈΠ°) Π±ΠΎΠ΄Ρ€ΠΎ Π²Ρ‹Π΄Π°Π²Π°Π» свой IDCODE ΠΏΠΎ Π»ΠΈΠ½ΠΈΠΈ TDO.

Pagbuo ng isang development board para sa K1986BE1QI (aviation)
Oscillogram ng TDO signal line na may naka-encode na IDCODE na tugon, (c) Larawan ng may-akda

Pagbuo ng isang development board para sa K1986BE1QI (aviation)
Kaya ang SWD port ay madaling gamitin para sa pag-debug ng debugger mismo at pagsuri sa IDCODE

Nagkaroon ng opsyon na may debugger CMSIS-DAP (Debug Access Port). Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ· исходников ΠΎΡ‚ ARM – Π΄Π΅Π»ΠΎ Π½Π΅ простоС, я взял ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρƒ X893, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π΅Ρ‰Ρ‘ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» DAP42. К соТалСнию, Keil uVision зависал ΠΈ Π½Π΅ Ρ…ΠΎΡ‚Π΅Π» с Π½ΠΈΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π’ ΠΈΡ‚ΠΎΠ³Π΅ я Π·Π°ΠΌΠ΅Π½ΠΈΠ» микросхСму ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° Π½Π° Ρ„ΠΈΡ€ΠΌΠ΅Π½Π½ΡƒΡŽ STM32F103C8T6 ΠΈ большС ΠΊ этому вопросу Π½Π΅ возвращался.

Pagbuo ng isang development board para sa K1986BE1QI (aviation)
Ang matagumpay na pagpapatakbo ng built-in na debugger na J-Link STLink V2

Kapag available na ang lahat ng pangunahing bahagi ng development board sa hinaharap, pumunta ako sa Eagle CAD at natuklasan kong wala sila sa element library. Walang mapupuntahan - kinailangan kong iguhit ang mga ito sa aking sarili. Kasabay nito, gumawa ako ng mga mounting spot para sa memorya, isang HanRun connector para sa Ethernet, at nagdagdag ng mga frame para sa resistors at capacitors. Matatagpuan ang project file at component library Ρƒ мСня Π½Π° GitHub.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Π°Ρ схСма ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ‹ MDB1986Pagbuo ng isang development board para sa K1986BE1QI (aviation)

Ang board ay pinapagana ng isang 5 volt DC source na nakuha mula sa USB port. Mayroong kabuuang dalawang USB Type-B port sa board. Ang isa ay para sa programmer, ang pangalawa ay para sa K1986BE1QI controller. Maaaring gumana ang board mula sa alinman sa mga mapagkukunang ito o pareho nang sabay-sabay. Ang pinakasimpleng regulasyon ng pagkarga at proteksyon sa linya ng kuryente ay ipinapatupad gamit ang Schottky diodes, sa circuit D2 at D3 (SS24). Gayundin sa diagram maaari mong makita ang self-restoring fuse F1 at F2 sa 500 mA. Ang mga linya ng signal ng USB port ay protektado ng USBLC6-2SC6 diode assembly.

Ang ST-Link debugger-programmer circuit ay kilala sa marami; ito ay makikita sa dokumentasyon para sa STM32-Discovery boards at iba pang source. Para sa paunang firmware ng ST-Link/J-Link-OB/DAP clone (opsyonal), inilabas ko ang mga linyang SWDIO (PA13), SWCLK (PA14), GND. Maraming tao ang gumagamit ng UART para sa firmware at napipilitang hilahin ang mga jumper ng BOOT. Ngunit nakikita kong mas maginhawa ang SWD, at pinapayagan ng protocol na ito ang pag-debug.

Halos lahat ng mga bahagi ng board ay pinapagana ng 3.3 volts, na nagmumula sa AMS1117-3.3 voltage regulator. Upang sugpuin ang electromagnetic interference at kasalukuyang mga surges, ginagamit ang mga LC filter mula sa mga capacitor at chokes ng BLM31PG series.

Hiwalay, ito ay nagkakahalaga ng pagbanggit sa MAX7 7221-segment display driver. Ayon sa detalye, ang inirerekumendang power supply ay mula 4 hanggang 5.5 volts, at ang mataas na antas ng signal (logical one) ay hindi bababa sa 3.5V (0.7 x VCC), na may 5V supply. Para sa K1986BE1QI (aviation) controller, ang output ng isang logical unit ay tumutugma sa isang boltahe mula 2.8 hanggang 3.3V. Malinaw na mayroong hindi pagkakatugma sa pagitan ng mga antas ng signal na maaaring makagambala sa normal na operasyon. Nagpasya akong paandarin ang MAX7221 sa 4V at bawasan ang mga antas ng signal sa 2.8V (0.7 x 4 = 2.8). Upang gawin ito, ang diode D4 (RS1A o FR103) ay naka-install sa serye sa circuit ng kapangyarihan ng driver. Ang kabuuang pagbaba ng boltahe ay 0.9V (Schottky diode 0.3V at diode 0.6V), at gumagana ang lahat.

Karamihan sa mga port ng K1986BE1QI (aviation) microcontroller ay tugma sa mga signal hanggang sa 5V. Samakatuwid, walang problema sa paggamit ng MCP2551 CAN transceiver, na nagpapatakbo din sa 5V. Ang MAX232 chip ay ipinahiwatig bilang isang RS-3232 transceiver sa diagram, ngunit sa katunayan ay ginamit ko ang SN65C3232D mula sa Texas Instruments, dahil ito ay nagpapatakbo mula sa 3.3V at nagbibigay ng mga bilis hanggang sa 1Mbit/s.

Ang board ay naglalaman ng 4 na quartz resonator - isa para sa debugger (8 MHz) at tatlo para sa target na microcontroller na K1986BE1QI (aviation) na may mga rating na 32.768 kHz, 16 MHz, 25 MHz. Ito ay mga kinakailangang sangkap, dahil Ang mga parameter ng built-in na RC oscillator ay nasa isang malawak na hanay mula 6 hanggang 10 MHz. Ang dalas ng 25 MHz ay ​​kinakailangan para sa pagpapatakbo ng built-in na Ethernet controller. Para sa ilang kadahilanan, ang website ni Milandra (marahil ay hindi sinasadya) ay nagsasaad na ang plastic case ay walang Ethernet. Ngunit aasa kami sa detalye at katotohanan.

Π’Π°ΠΆΠ½Ρ‹ΠΌ стимулом для создания своСй ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ‹ Π±Ρ‹Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с внСшнСй систСмной шиной EBC (external bus controller), которая ΠΏΠΎ сути являСтся ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΡ€Ρ‚ΠΎΠΌ. ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ К1986Π’Π•1QI (Π°Π²ΠΈΠ°) позволяСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с внСшними микросхСмами памяти ΠΈ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹ΠΌΠΈ устройствами, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, АЦП, ΠŸΠ›Π˜Π‘ ΠΈ Ρ‚.Π΄. ВозмоТности внСшний систСмной ΡˆΠΈΠ½Ρ‹ достаточно большиС – ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с 8-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ, 16-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ ΠΈ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ статичСскими ΠžΠ—Π£, ΠŸΠ—Π£ ΠΈ NAND Flash. Для считывания/записи 32-Π±ΠΈΡ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΡƒΠΌΠ΅Π΅Ρ‚ автоматичСски Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ 2 ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для 16-Π±ΠΈΡ‚Π½Ρ‹Ρ… микросхСм, Π° для 8-Π±ΠΈΡ‚Π½Ρ‹Ρ… β€” 4 ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ 32-битная опСрация Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° выполнится быстрСС всСго с 32-Π±ΠΈΡ‚Π½ΠΎΠΉ шиной Π΄Π°Π½Π½Ρ‹Ρ…. К нСдостаткам ΠΌΠΎΠΆΠ½ΠΎ отнСсти Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π° Π½Π° ΠΏΠ»Π°Ρ‚Π΅ придётся ΠΏΡ€ΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ 32 Π΄ΠΎΡ€ΠΎΠΆΠΊΠΈ.

Pagbuo ng isang development board para sa K1986BE1QI (aviation)
Static RAM chips, ginamit (hulaan kung alin ang may depekto)

Ang isang balanseng solusyon ay ang paggamit ng 16-bit memory chips. Nagkataon na mayroon akong naka-stock na mga chip ng Integrated Silicon Solutions Inc. (ISSI IS61LV25616AL, 16 x 256k, 10 ns, 3.3V). Siyempre, ang kumpanya ng Milander ay may sariling static memory chips serye 1645RU, ngunit ang mga ito ay masyadong mahal at hindi magagamit. Bilang kahalili, may mga pin-compatible na Samsung K6R4016V1D. Nauna kong nabanggit na ang mga microcircuits ay ginamit at ang kopya na na-install ko sa una ay nagbigay ng mga pagkabigo at magulong halaga sa ika-15 na linya ng data. Tumagal ng ilang araw upang mahanap ang mga error sa hardware, at mas lalong nakaramdam ng kasiyahan kapag pinalitan ko ng gumagana ang nasirang chip. Magkagayunman, ang bilis ng pagtatrabaho sa panlabas na memorya ay nag-iiwan ng maraming nais.

Panlabas na bus at StandAlone modeAng K1986BE1QI microcontroller (sasakyang panghimpapawid) ay may natatanging StandAlone mode, na idinisenyo para sa direktang panlabas na pag-access sa Ethernet at MKIO controllers (MIL_STD_1553) sa pamamagitan ng panlabas na bus, na ang core ay nasa estado ng pag-reset, i.e. hindi ginagamit. Ang mode na ito ay maginhawa para sa mga processor at FPGA na walang Ethernet at/o MKIO.
Ang diagram ng koneksyon ay ang mga sumusunod:

  • data bus MCU(D0-D15) => SRAM(I/O0-I/O15),
  • шина адрСса MCU(A1-A18) => SRAM(A0-A17),
  • ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ MCU(nWR,nRD,PortC2) => SRAM (WE,OE,CE),
  • Ang SRAM(UB,LB) ay konektado o hinila sa lupa sa pamamagitan ng isang risistor.

Ang linya ng CE ay konektado sa power supply sa pamamagitan ng isang risistor; ang mga pin para sa pag-sample ng MCU byte (BE0-BE3) ay hindi ginagamit. Sa ilalim ng spoiler, ibinibigay ko ang code para sa pagsisimula ng mga port at ng external na controller ng bus.

Sinisimulan ang mga port at EBC controller (external bus controller)

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

Ang microcontroller sa LQFP-144 na pakete at ang memorya sa TSOP-44 na pakete ay may maraming nauugnay na mga pin at kumukuha ng maraming espasyo sa naka-print na circuit board. Ang pagkakaroon ng karanasan sa paglutas ng mga problema sa pag-optimize sa larangan ng ekonomiya, malinaw sa akin na kinakailangang ilagay muna ang mga microcircuit na ito sa board. Sa iba't ibang mga pinagmumulan ay nakatagpo ako ng mga laudatory review tungkol sa CAD TopoR (Topological Router). Na-download ko ang trial na bersyon at nagawa kong i-export ang aking proyekto mula sa Eagle CAD doon lamang pagkatapos kong alisin ang halos lahat ng mga bahagi. Sa kasamaang palad, hindi ako tinulungan ng programang TopoR na maglagay ng kahit 10 elemento sa board. Una, ang lahat ng mga sangkap ay inilagay sa isang sulok, at pagkatapos ay nakaayos sa gilid. Hindi ako nasiyahan sa pagpipiliang ito, at sa loob ng mahabang panahon ay sinusubaybayan ko ang board nang manu-mano sa pamilyar na kapaligiran ng Eagle CAD.

Ang isang mahalagang elemento ng isang naka-print na circuit board ay silk-screen printing. Ang development board ay hindi lamang dapat may mga label para sa mga electronic na bahagi, ngunit ang lahat ng mga konektor ay dapat ding may label. Sa likod ng board naglagay ako ng mga table na may mga function ng controller ports (pangunahing, alternatibo, overridden, aktwal). Nag-order ako ng paggawa ng mga naka-print na circuit board sa China mula sa kilalang opisina ng PCBWay. Hindi ko ito pupurihin dahil maganda ang kalidad. Maaari silang gumawa ng mas mahusay, na may mas mahigpit na pagpapahintulot, ngunit para sa bayad.

Pagbuo ng isang development board para sa K1986BE1QI (aviation)
Ginawa ang MDB1986 printed circuit boards, (c) Larawan ng may-akda

Π Π°ΡΠΏΠ°ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Β«Π½Π° ΠΊΠΎΠ»Π΅Π½ΠΊΠ΅Β» паяльником 40-Π²Π°Ρ‚Ρ‚ ΠΈ ΠΏΡ€ΠΈΠΏΠΎΠ΅ΠΌ ПОБ-61, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ паяю я Ρ€Π΅Π΄ΠΊΠΎ, 1-2 Ρ€Π°Π·Π° Π² Π³ΠΎΠ΄, ΠΈ паяльная паста засохла. ΠŸΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π΅Ρ‰Ρ‘ ΠΌΠ΅Π½ΡΡ‚ΡŒ китайский ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ CS32F103 Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ STM32F103, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π΅Ρ‰Ρ‘ ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ сСйчас мСня Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ устраиваСт, хотя Π΅Ρ‰Ρ‘ Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» Ρ€Π°Π±ΠΎΡ‚Ρƒ RS-232 ΠΈ CAN.

Pagbuo ng isang development board para sa K1986BE1QI (aviation)
ΠžΡ‚Π»Π°Π΄ΠΎΡ‡Π½Π°Ρ ΠΏΠ»Π°Ρ‚Π° MDB1986 Π² Ρ€Π°Π±ΠΎΡ‚Π΅ β€” свСтит ΠΈ Π³Ρ€Π΅Π΅Ρ‚, (с) Π€ΠΎΡ‚ΠΎ Π°Π²Ρ‚ΠΎΡ€Π°

На сайтС Β«ΠœΠΈΠ»Π°Π½Π΄Ρ€Π°Β» ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ достаточно ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² для изучСния ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² serye 1986BE9 (Cortex-M3 core), ngunit para sa K1986BE1QI (aviation) microcontroller wala akong nakikita doon. Nang tingnan ang mga materyales, manwal at gawain sa laboratoryo para sa mga unibersidad na inilathala doon, natutuwa ako na ang mga tauhan ay sinasanay sa buong bansa upang makipagtulungan sa mga tagakontrol ng Russia. Karamihan sa mga materyales sa pagsasanay ay naghahanda para sa pagtatrabaho sa mga I/O port, timer, ADC, DAC, SPI, UART. Iba't ibang IDE development environment ang ginagamit (Keil, IAR, CodeMaster). Sa isang lugar ay nagprograma sila gamit ang mga rehistro ng CMSIS, at sa isang lugar ay ginagamit nila ang MDR Library. Dapat banggitin ang mapagkukunan Start Milandr, na naglalaman ng maraming artikulo mula sa mga nagsasanay na programmer. At, siyempre, hindi natin dapat kalimutan Forum ng Milandra.

Iniisip si MilandraAng microelectronics ay umuunlad sa Russia, at ang kumpanya ng Milander ay gumaganap ng isang kilalang papel sa prosesong ito. Lumilitaw ang mga bagong kawili-wiling microcontroller, halimbawa, 1986BE81T at Elektrosila na may mga interface ng SpaceWire at MKIO (katulad noong 1986BE1 at, marahil, na may parehong mga problema), atbp. Ngunit ang mga ordinaryong estudyante, guro at inhinyero ng sibil ay hindi makakabili ng mga naturang microcircuits. Nangangahulugan ito na hindi mabilis na matutukoy ng komunidad ng engineering ang mga error at problema sa chip na ito. Sa palagay ko, kailangan munang gumawa ng mga microcircuits sa isang plastic na kaso, ipamahagi ang mga ito sa lahat ng mga interesadong partido, at pagkatapos ng pag-apruba (Latin approbatio - pag-apruba, pagkilala) ng mga espesyalista, maaari silang maghanda ng isang rebisyon sa isang metal-ceramic na kaso na may proteksyon mula sa lahat ng kakila-kilabot na mga kadahilanan. Umaasa ako na sa malapit na hinaharap ay masisiyahan tayong LAHAT sa mga bagong proyektong inihayag sa mga eksibisyon.
Ang debug board na aking binuo ay maaaring ulitin, baguhin at gamitin ng sinuman sa proseso ng edukasyon. Una sa lahat, ginawa ko ang board para sa aking sarili, ngunit ito ay naging napakahusay na Nagpasya akong ibahagi sa lahat.

Ang K1986BE1QI (air) ay isang napaka-interesante na controller na may mga natatanging interface na magagamit sa mga unibersidad upang turuan ang mga mag-aaral. Sa tingin ko, pagkatapos itama ang mga error na natukoy sa controller at pagpasa sa mga pagsubok sa sertipikasyon, lilipad ang controller sa totoong kahulugan ng salita!

Pinagmulan: www.habr.com

Magdagdag ng komento