Ανάπτυξη πίνακα ανάπτυξης για K1986BE1QI (αεροπορία)

Ανάπτυξη πίνακα ανάπτυξης για K1986BE1QI (αεροπορία)

Πριν από αρκετά χρόνια γνώρισα Ρώσους μικροελεγκτές από το Milander. Ήταν το 2013, όταν οι μηχανικοί συζητούσαν δυναμικά τα πρώτα αποτελέσματα του Ομοσπονδιακού Προγράμματος Στόχου «Ανάπτυξη βάσης ηλεκτρονικών εξαρτημάτων και ραδιοηλεκτρονικών» για το 2008-2015. Εκείνη την εποχή, ο ελεγκτής K1986BE9x (πυρήνας Cortex-M3) είχε ήδη κυκλοφορήσει και ο ελεγκτής 1986BE1T (πυρήνας Cortex-M1) είχε μόλις εμφανιστεί. Στην πλαστική θήκη, LQFP-144, είχε την ονομασία K1986BE1QI (αεροπορία) στην τεκμηρίωση και στο ίδιο το τσιπ την ονομασία MDR32F1QI. Στον ιστότοπο του κατασκευαστή έχει το επίθημα «avia», καθώς έχει διεπαφές ειδικά για τη βιομηχανία αεροσκαφών (ARINC 429, MIL_STD_1553).

Παραδόξως, τη στιγμή της διανομής αυτών των ελεγκτών, η εταιρεία Milander ετοίμασε κιτ εντοπισμού σφαλμάτων και μια βιβλιοθήκη υπορουτίνων για εργασία με περιφερειακά, «αλλά χωρίς καμία πρόσθετη εγγύηση ή υποχρέωση σχετικά με την ορθότητα της βιβλιοθήκης». Η βιβλιοθήκη είναι παρόμοια με την τυπική περιφερειακή βιβλιοθήκη της STMicroelectronics. Γενικά, όλοι οι ελεγκτές ARM που είναι κατασκευασμένοι στον πυρήνα Cortex-M έχουν πολλά κοινά. Για το λόγο αυτό, η εξοικείωση με τους νέους Ρώσους ελεγκτές προχώρησε γρήγορα. Και για όσους αγόρασαν επώνυμα κιτ εντοπισμού σφαλμάτων, παρείχε τεχνική υποστήριξη κατά τη χρήση.

Ανάπτυξη πίνακα ανάπτυξης για K1986BE1QI (αεροπορία)
Κιτ εντοπισμού σφαλμάτων για μικροελεγκτή 1986BE1T, © Milander

Ωστόσο, με την πάροδο του χρόνου, άρχισαν να εμφανίζονται «παιδικές ασθένειες» νέων μικροκυκλωμάτων και βιβλιοθηκών. Τα δοκιμαστικά παραδείγματα του υλικολογισμικού λειτούργησαν χωρίς ορατά προβλήματα, αλλά με σημαντικές τροποποιήσεις, παρουσιάστηκαν σφάλματα και σφάλματα. Το πρώτο «χελιδόνι» στην πρακτική μου ήταν ανεξήγητες αστοχίες στη λειτουργία του ελεγκτή CAN. Ένα χρόνο αργότερα, ένα πρόβλημα με τη μονάδα ανακαλύφθηκε στον ελεγκτή 1986BE1T (αεροπορίας) μιας πρώιμης αναθεώρησης MKIO (πολυπλό κανάλι ανταλλαγής πληροφοριών). Γενικά, όλες οι αναθεωρήσεις αυτών των μικροελεγκτών μέχρι το 2016 είχαν περιορισμένη χρήση. Χρειάστηκε πολύς χρόνος και νεύρα για τον εντοπισμό αυτών των προβλημάτων, η επιβεβαίωση των οποίων μπορεί να βρεθεί τώρα λίστες σφαλμάτων (Errata).

Ένα δυσάρεστο χαρακτηριστικό ήταν ότι ήταν απαραίτητο να εργαστείτε και να αντιμετωπίσετε σφάλματα όχι σε πλακέτες εντοπισμού σφαλμάτων, αλλά σε πρωτότυπες πλακέτες συσκευών που είχαν προγραμματιστεί για σειριακή εργοστασιακή παραγωγή. Συνήθως δεν υπήρχε τίποτα εκτός από την υποδοχή JTAG. Η σύνδεση με έναν λογικό αναλυτή ήταν δύσκολη και άβολη και συνήθως δεν υπήρχαν LED ή οθόνες. Για αυτόν τον λόγο, η ιδέα να δημιουργήσω τον δικό μου πίνακα εντοπισμού σφαλμάτων εμφανίστηκε στο μυαλό μου.

Από τη μία, στην αγορά υπήρχαν επώνυμα κιτ αποσφαλμάτωσης, καθώς και υπέροχες πλακέτες από την εταιρεία LDM-Systems από το Zelenograd. Από την άλλη, οι τιμές για αυτά τα προϊόντα είναι συγκλονιστικές και η βασική λειτουργικότητα χωρίς κάρτες επέκτασης δεν ανταποκρίνεται στις προσδοκίες. Δεν με ενδιαφέρει μια πλακέτα με συγκολλημένο χειριστήριο και βύσμα ακίδας. Και οι πιο ενδιαφέρουσες σανίδες είναι ακριβές.

Ανάπτυξη πίνακα ανάπτυξης για K1986BE1QI (αεροπορία)
Πλακέτα ανάπτυξης MILANDR LDM-HELPER-K1986BE1QI-FULL, © LDM Systems

Η εταιρεία Milander έχει μια μοναδική τιμολογιακή πολιτική και μάρκετινγκ. Έτσι, είναι δυνατό να λάβετε δωρεάν δείγματα ορισμένων μικροκυκλωμάτων, αλλά αυτό είναι διαθέσιμο μόνο σε νομικά πρόσωπα και σχετίζεται με μια γραφειοκρατική αναζήτηση. Γενικά, τα μικροκυκλώματα σε μια μεταλλοκεραμική θήκη είναι χρυσός με την κυριολεκτική και μεταφορική έννοια. Για παράδειγμα, ένας ελεγκτής 1986BE1T κοστίζει από 14 έως 24 χιλιάδες ρούβλια στη Μόσχα. Το τσιπ στατικής μνήμης 1645RU6U κοστίζει από 15000 ρούβλια. Και αυτή είναι η σειρά τιμών για όλα τα προϊόντα. Ως αποτέλεσμα, ακόμη και εξειδικευμένα ερευνητικά ινστιτούτα με κρατικές παραγγελίες εξοικονομούν χρήματα και αποφεύγουν τέτοιες τιμές. Τα μικροκυκλώματα σε πλαστική θήκη για πολιτική χρήση είναι σημαντικά φθηνότερα, αλλά δεν διατίθενται από δημοφιλείς προμηθευτές. Επιπλέον, η ποιότητα των μικροκυκλωμάτων σε μια πλαστική θήκη, μου φαίνεται, είναι χειρότερη από τα "χρυσά". Για παράδειγμα, δεν μπορούσα να εκτελέσω τον ελεγκτή K1986BE1QI στα 128 MHz χωρίς να αυξήσω την παράμετρο καθυστέρησης φλας. Ταυτόχρονα, η θερμοκρασία αυτού του ελεγκτή ανέβηκε στους 40-50C. Αλλά ο ελεγκτής 1986BE1T («χρυσός») ξεκίνησε στα 128 MHz χωρίς πρόσθετες ρυθμίσεις και παρέμεινε κρύος. Είναι πολύ καλός.

Ανάπτυξη πίνακα ανάπτυξης για K1986BE1QI (αεροπορία)
Μικροελεγκτής “Golden” 1986BE1T, (γ) Milander

Ήμουν τυχερός που ένας μικροελεγκτής σε πλαστική θήκη μπορεί ακόμα να αγοραστεί στη λιανική από την LDM Systems και όλα τα διαγράμματα πλακέτας είναι ελεύθερα διαθέσιμα. Το κακό είναι ότι στην ιστοσελίδα στη φωτογραφία του χειριστηρίου μπορείτε να δείτε μια σήμανση που λέει ότι αυτή είναι η 4η αναθεώρηση του 2014, δηλ. με ελαττώματα. Σκέφτηκα πολύ καιρό αν να αγοράσω ή όχι. Κάπως έτσι πέρασαν πολλά χρόνια...

Η ιδέα της δημιουργίας ενός πίνακα εντοπισμού σφαλμάτων δεν έχει εξαφανιστεί πουθενά. Σταδιακά, διαμόρφωσα όλες τις απαιτήσεις και σκέφτηκα πώς να το τοποθετήσω όλο σε μια σανίδα ώστε να είναι συμπαγές και όχι ακριβό. Ταυτόχρονα, παρήγγειλα τα εξαρτήματα που έλειπαν από τους Κινέζους. Δεν βιαζόμουν - έκανα τα πάντα για τον εαυτό μου. Οι Κινέζοι προμηθευτές είναι διαβόητοι ατημέλητοι - έπρεπε να παραγγείλω το ίδιο πράγμα από διαφορετικά μέρη για να πάρω όλα όσα χρειαζόμουν. Επιπλέον, ορισμένα από τα τσιπ μνήμης αποδείχθηκε ότι χρησιμοποιήθηκαν - προφανώς συγκολλημένα από σπασμένες συσκευές. Αυτό με στοιχειώνει αργότερα.

Η αγορά ενός μικροελεγκτή Milander K1986BE1QI (αέρας) δεν είναι εύκολη υπόθεση. Στο ίδιο κατάστημα Chip and Dip, στην ενότητα "Είδη για παραγγελία", βρήκα μόνο το K1986BE92QI για 740 ρούβλια, αλλά δεν μου ταιριάζει. Η μόνη επιλογή είναι να αγοράσετε μια μη φρέσκια αναθεώρηση από την LDM-Systems για 2000 ρούβλια. Επειδή δεν μπορούσα να βρω πουθενά αλλού αντικατάσταση, αποφάσισα να αγοράσω αυτό που είχα. Προς ευχάριστη έκπληξή μου, μου πούλησαν ένα ολοκαίνουργιο χειριστήριο που κατασκευάστηκε τον Δεκέμβριο του 2018, αναθεώρηση 6+ (1820). Αλλά ο ιστότοπος έχει ακόμα μια παλιά φωτογραφία και τη στιγμή που γράφονται αυτές οι γραμμές ο ελεγκτής δεν είναι διαθέσιμος...

Ανάπτυξη πίνακα ανάπτυξης για K1986BE1QI (αεροπορία)
Μικροελεγκτής K1986BE1QI (αεροπορία) σε τεχνολογική συσκευασία, (γ) Φωτογραφία του συγγραφέα

Κύρια τεχνικά χαρακτηριστικά του πίνακα εντοπισμού σφαλμάτων μου MDB1986 τα ακόλουθα:

  • ενσωματωμένος προγραμματιστής εντοπισμού σφαλμάτων, συμβατός με J-Link και CMSIS-DAP.
  • στατική μνήμη 4 Mbit (256k x 16, 10 ns);
  • Τσιπ μνήμης flash 64Mbit, Winbond 25Q64FVSIG;
  • Πομποδέκτης διασύνδεσης RS-232 με γραμμές RTS και CTS.
  • διεπαφές και υποδοχές για Ethernet, USB, CAN.
  • MAX7 Ελεγκτής οθόνης 7221 τμημάτων.
  • υποδοχή ακροδεκτών για εργασία με MKIO (MIL_STD_1553) και ARINC429.
  • φωτοτρανζίστορ Everlight PT17-21C;
  • πέντε έγχρωμες λυχνίες LED, ένα κουμπί επαναφοράς και δύο κουμπιά χρήστη.
  • Η τροφοδοσία στη θύρα USB είναι 5 βολτ.
  • Διαστάσεις πλακέτας τυπωμένου κυκλώματος 100 x 80, mm

Μου άρεσαν οι πλακέτες της σειράς STM-Discovery γιατί έχουν ενσωματωμένο προγραμματιστή-debugger - ST-Link. Το επώνυμο ST-Link λειτουργεί μόνο με ελεγκτές της STMicroelectronics, αλλά πριν από μερικά χρόνια κατέστη δυνατή η ενημέρωση του υλικολογισμικού στο ST-Link και η λήψη του SEGGER J-Link OB (on-board) Debugger. Νομικά, υπάρχει περιορισμός στη χρήση ενός τέτοιου προγράμματος εντοπισμού σφαλμάτων μόνο με πλακέτες STMicroelectronics, αλλά στην πραγματικότητα οι δυνατότητες δεν είναι περιορισμένες. Έτσι, έχοντας ένα J-Link OB, μπορείτε να έχετε έναν ενσωματωμένο προγραμματιστή-debugger στην πλακέτα εντοπισμού σφαλμάτων. Σημειώνω ότι τα προϊόντα LDM-Systems χρησιμοποιούν τον μετατροπέα CP2102 (Usb2Uart), ο οποίος μπορεί μόνο να αναβοσβήνει.

Ανάπτυξη πίνακα ανάπτυξης για K1986BE1QI (αεροπορία)
μικροελεγκτές STM32F103C8T6, πραγματικοί και όχι τόσο πραγματικοί, (γ) Φωτογραφία του συγγραφέα

Έτσι, ήταν απαραίτητο να αγοράσετε το αρχικό STM32F103C8T6, καθώς το ιδιόκτητο υλικολογισμικό δεν θα λειτουργήσει σωστά με τον κλώνο. Αμφισβήτησα αυτή τη διατριβή και αποφάσισα να δοκιμάσω τον ελεγκτή CS32F103C8T6 από την κινεζική εταιρεία CKS. Δεν έχω παράπονα για τον ίδιο τον ελεγκτή, αλλά το ιδιόκτητο υλικολογισμικό ST-Link δεν λειτούργησε σε αυτό. Το J-Link λειτούργησε μερικώς - η συσκευή USB εντοπίστηκε, αλλά ο προγραμματιστής δεν εκτελούσε τις λειτουργίες της και υπενθύμιζε συνεχώς ότι ήταν "ελαττωματικός".

Ανάπτυξη πίνακα ανάπτυξης για K1986BE1QI (αεροπορία)
Σφάλμα κατά την εκτέλεση του προγράμματος εντοπισμού σφαλμάτων σε μη αρχικό ελεγκτή

Δεν έμεινα ικανοποιημένος με αυτό και έγραψα πρώτα το υλικολογισμικό για να αναβοσβήνει το LED και μετά υλοποίησα το αίτημα IDCODE χρησιμοποιώντας το πρωτόκολλο JTAG. Ο προγραμματιστής ST-Link που είχα στην πλακέτα Discovery και το πρόγραμμα ST-Link Utility αναβοσβήνουν χωρίς κανένα πρόβλημα στο CS32F103C8T6, στο τέλος βεβαιώθηκα ότι η πλακέτα μου δούλευε. Προς μεγάλη μου χαρά, ο ελεγκτής στόχου K1986BE1QI (αεροπορία) εξέδωσε ευχαρίστως τον IDCODE του μέσω της γραμμής TDO.

Ανάπτυξη πίνακα ανάπτυξης για K1986BE1QI (αεροπορία)
Ταλαντωτόγραμμα γραμμής σήματος TDO με κωδικοποιημένη απόκριση IDCODE, (γ) Φωτογραφία από τον συγγραφέα

Ανάπτυξη πίνακα ανάπτυξης για K1986BE1QI (αεροπορία)
Έτσι, η θύρα SWD ήταν χρήσιμη για τον εντοπισμό σφαλμάτων του ίδιου του προγράμματος εντοπισμού σφαλμάτων και τον έλεγχο του IDCODE

Υπήρχε μια επιλογή με πρόγραμμα εντοπισμού σφαλμάτων CMSIS-DAP (Θύρα πρόσβασης εντοπισμού σφαλμάτων). Η δημιουργία ενός έργου από πηγές ARM δεν είναι εύκολη υπόθεση, πήρα το έργο από X893, και μετά δοκίμασα το DAP42. Δυστυχώς, το Keil uVision πάγωσε και δεν ήθελε να συνεργαστεί μαζί τους. Ως αποτέλεσμα, αντικατέστησα το τσιπ εντοπισμού σφαλμάτων με ένα αποκλειστικό STM32F103C8T6 και δεν επέστρεψα ποτέ σε αυτό το ζήτημα.

Ανάπτυξη πίνακα ανάπτυξης για K1986BE1QI (αεροπορία)
Επιτυχής λειτουργία του ενσωματωμένου εντοπισμού σφαλμάτων J-Link STLink V2

Όταν όλα τα βασικά στοιχεία της μελλοντικής πλακέτας ανάπτυξης ήταν διαθέσιμα, μπήκα στο Eagle CAD και ανακάλυψα ότι δεν υπήρχαν στη βιβλιοθήκη στοιχείων. Δεν υπήρχε πού να πάω - έπρεπε να τα ζωγραφίσω μόνος μου. Ταυτόχρονα, έφτιαξα σημεία τοποθέτησης για μνήμη, υποδοχή HanRun για Ethernet και πρόσθεσα πλαίσια για αντιστάσεις και πυκνωτές. Μπορείτε να βρείτε το αρχείο του έργου και τη βιβλιοθήκη στοιχείων στο GitHub μου.

Σχηματικό διάγραμμα της πλακέτας ανάπτυξης MDB1986Ανάπτυξη πίνακα ανάπτυξης για K1986BE1QI (αεροπορία)

Η πλακέτα τροφοδοτείται από μια πηγή DC 5 volt που λαμβάνεται από τη θύρα USB. Υπάρχουν συνολικά δύο θύρες USB Type-B στην πλακέτα. Το ένα είναι για τον προγραμματιστή, το δεύτερο είναι για τον ελεγκτή K1986BE1QI. Η πλακέτα μπορεί να λειτουργεί από οποιαδήποτε από αυτές τις πηγές ή και τις δύο ταυτόχρονα. Η απλούστερη ρύθμιση φορτίου και προστασία γραμμής ισχύος υλοποιούνται με χρήση διόδων Schottky, στο κύκλωμα D2 και D3 (SS24). Επίσης στο διάγραμμα μπορείτε να δείτε αυτο-επαναφερόμενες ασφάλειες F1 και F2 στα 500 mA. Οι γραμμές σήματος της θύρας USB προστατεύονται από ένα συγκρότημα διόδων USBLC6-2SC6.

Το κύκλωμα εντοπισμού σφαλμάτων-προγραμματιστή ST-Link είναι γνωστό σε πολλούς· μπορεί να βρεθεί στην τεκμηρίωση για πλακέτες STM32-Discovery και άλλες πηγές. Για το αρχικό υλικολογισμικό του κλώνου ST-Link/J-Link-OB/DAP (προαιρετικό), έβγαλα τις γραμμές SWDIO (PA13), SWCLK (PA14), GND. Πολλοί άνθρωποι χρησιμοποιούν το UART για υλικολογισμικό και αναγκάζονται να τραβήξουν τους βραχυκυκλωτήρες BOOT. Αλλά βρίσκω το SWD πιο βολικό και αυτό το πρωτόκολλο επιτρέπει τον εντοπισμό σφαλμάτων.

Σχεδόν όλα τα εξαρτήματα της πλακέτας τροφοδοτούνται από 3.3 βολτ, τα οποία προέρχονται από τον ρυθμιστή τάσης AMS1117-3.3. Για την καταστολή ηλεκτρομαγνητικών παρεμβολών και υπερτάσεων ρεύματος, χρησιμοποιούνται φίλτρα LC από πυκνωτές και τσοκ της σειράς BLM31PG.

Ξεχωριστά, αξίζει να αναφέρουμε το πρόγραμμα οδήγησης οθόνης 7 τμημάτων MAX7221. Σύμφωνα με τις προδιαγραφές, η συνιστώμενη τροφοδοσία είναι από 4 έως 5.5 βολτ και η υψηλή στάθμη σήματος (λογικό) είναι τουλάχιστον 3.5 V (0.7 x VCC), με τροφοδοσία 5 V. Για τον ελεγκτή K1986BE1QI (αεροπορία), η έξοδος μιας λογικής μονάδας αντιστοιχεί σε τάση από 2.8 έως 3.3 V. Προφανώς υπάρχει αναντιστοιχία μεταξύ των επιπέδων σήματος που μπορεί να επηρεάσει την κανονική λειτουργία. Αποφάσισα να τροφοδοτήσω το MAX7221 στα 4V και να μειώσω τα επίπεδα σήματος στα 2.8V (0.7 x 4 = 2.8). Για να γίνει αυτό, η δίοδος D4 (RS1A ή FR103) είναι εγκατεστημένη σε σειρά στο κύκλωμα ισχύος του οδηγού. Η συνολική πτώση τάσης είναι 0.9V (δίοδος Schottky 0.3V και δίοδος 0.6V) και όλα λειτουργούν.

Οι περισσότερες θύρες του μικροελεγκτή K1986BE1QI (αεροπορίας) είναι συμβατές με σήματα έως 5V. Επομένως, δεν υπάρχει πρόβλημα με τη χρήση του πομποδέκτη MCP2551 CAN, ο οποίος λειτουργεί επίσης σε 5V. Το τσιπ MAX232 υποδεικνύεται ως πομποδέκτης RS-3232 στο διάγραμμα, αλλά στην πραγματικότητα χρησιμοποίησα SN65C3232D από την Texas Instruments, επειδή Λειτουργεί από 3.3V και παρέχει ταχύτητες έως και 1Mbit/s.

Η πλακέτα περιέχει 4 συντονιστές χαλαζία - ένα για τον εντοπισμό σφαλμάτων (8 MHz) και τρεις για τον μικροελεγκτή στόχο K1986BE1QI (αεροπορία) με ονομασίες 32.768 kHz, 16 MHz, 25 MHz. Αυτά είναι απαραίτητα συστατικά, γιατί Οι παράμετροι του ενσωματωμένου ταλαντωτή RC βρίσκονται σε μεγάλο εύρος από 6 έως 10 MHz. Για τη λειτουργία του ενσωματωμένου ελεγκτή Ethernet απαιτείται συχνότητα 25 MHz. Για κάποιο λόγο, ο ιστότοπος της Milandra (ίσως κατά λάθος) αναφέρει ότι η πλαστική θήκη δεν διαθέτει Ethernet. Αλλά θα βασιστούμε στις προδιαγραφές και τα γεγονότα.

Ένα σημαντικό κίνητρο για τη δημιουργία του δικού μου πίνακα ανάπτυξης ήταν η ευκαιρία να συνεργαστώ με τον εξωτερικό δίαυλο συστήματος EBC (εξωτερικός ελεγκτής διαύλου), ο οποίος είναι ουσιαστικά μια παράλληλη θύρα. Ο μικροελεγκτής K1986BE1QI (αεροσκάφος) σάς επιτρέπει να συνδέεστε και να εργάζεστε με εξωτερικά τσιπ μνήμης και περιφερειακές συσκευές, για παράδειγμα, ADC, FPGA κ.λπ. Οι δυνατότητες του εξωτερικού διαύλου συστήματος είναι αρκετά μεγάλες - μπορείτε να εργαστείτε με στατική RAM 8-bit, 16-bit και 32-bit, ROM και NAND Flash. Για την ανάγνωση/εγγραφή δεδομένων 32 bit, ο ελεγκτής μπορεί να εκτελέσει αυτόματα 2 αντίστοιχες λειτουργίες για τσιπ 16 bit και 8 λειτουργίες για τσιπ 4 bit. Προφανώς, μια λειτουργία εισόδου/εξόδου 32 bit θα ολοκληρωθεί ταχύτερα με ένα δίαυλο δεδομένων 32 bit. Τα μειονεκτήματα περιλαμβάνουν την ανάγκη να λειτουργεί το πρόγραμμα με δεδομένα 32 bit και η πλακέτα θα πρέπει να τοποθετήσει 32 κομμάτια.

Ανάπτυξη πίνακα ανάπτυξης για K1986BE1QI (αεροπορία)
Στατικά τσιπ RAM, χρησιμοποιημένα (μαντέψτε ποιο είναι ελαττωματικό)

Μια ισορροπημένη λύση είναι η χρήση τσιπ μνήμης 16-bit. Έτυχε να έχω τσιπ της Integrated Silicon Solutions Inc. σε απόθεμα. (ISSI IS61LV25616AL, 16 x 256k, 10 ns, 3.3V). Φυσικά, η εταιρεία Milander έχει τα δικά της τσιπ στατικής μνήμης σειρά 1645RU, αλλά είναι πολύ ακριβά και δεν είναι διαθέσιμα. Εναλλακτικά, υπάρχουν το Samsung K6R4016V1D συμβατό με pin. Νωρίτερα ανέφερα ότι τα μικροκυκλώματα αποδείχτηκε ότι χρησιμοποιήθηκαν και το αντίγραφο που εγκατέστησα αρχικά έδωσε αστοχίες και χαοτικές τιμές​​στη 15η γραμμή δεδομένων. Χρειάστηκαν αρκετές ημέρες για να βρω σφάλματα υλικού και τόσο μεγαλύτερη ήταν η αίσθηση ικανοποίησης όταν αντικατέστησα το κατεστραμμένο τσιπ με ένα λειτουργικό. Όπως και να έχει, η ταχύτητα εργασίας με εξωτερική μνήμη αφήνει πολλά να είναι επιθυμητή.

Εξωτερικό λεωφορείο και λειτουργία StandAloneΟ μικροελεγκτής K1986BE1QI (αεροσκάφος) έχει μια μοναδική λειτουργία StandAlone, η οποία έχει σχεδιαστεί για άμεση εξωτερική πρόσβαση σε ελεγκτές Ethernet και MKIO (MIL_STD_1553) μέσω ενός εξωτερικού διαύλου, με τον πυρήνα σε κατάσταση επαναφοράς, π.χ. δεν χρησιμοποιείται. Αυτή η λειτουργία είναι βολική για επεξεργαστές και FPGA που δεν διαθέτουν Ethernet ή/και MKIO.
Το διάγραμμα σύνδεσης έχει ως εξής:

  • δίαυλος δεδομένων MCU(D0-D15) => SRAM(I/O0-I/O15),
  • δίαυλος διευθύνσεων MCU(A1-A18) => SRAM(A0-A17),
  • έλεγχος MCU(nWR,nRD,PortC2) => SRAM (WE,OE,CE),
  • Τα SRAM(UB,LB) συνδέονται ή έλκονται στη γείωση μέσω μιας αντίστασης.

Η γραμμή CE συνδέεται στο τροφοδοτικό μέσω μιας αντίστασης· οι ακίδες για τη δειγματοληψία του byte MCU (BE0-BE3) δεν χρησιμοποιούνται. Κάτω από το σπόιλερ, δίνω τον κωδικό για την προετοιμασία των θυρών και τον εξωτερικό ελεγκτή διαύλου.

Εκκίνηση θυρών και ελεγκτής EBC (εξωτερικός ελεγκτής διαύλου)

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

Ο μικροελεγκτής στη συσκευασία LQFP-144 και η μνήμη στη συσκευασία TSOP-44 έχουν πολλές συνδεδεμένες ακίδες και καταλαμβάνουν πολύ χώρο στην πλακέτα τυπωμένου κυκλώματος. Έχοντας εμπειρία στην επίλυση προβλημάτων βελτιστοποίησης στον τομέα της οικονομίας, ήταν προφανές για μένα ότι ήταν απαραίτητο να τοποθετήσω πρώτα αυτά τα μικροκυκλώματα στην πλακέτα. Σε διάφορες πηγές έχω συναντήσει επαινετικές κριτικές σχετικά CAD TopoR (Τοπολογικός δρομολογητής). Κατέβασα τη δοκιμαστική έκδοση και μπόρεσα να εξαγάγω το έργο μου από το Eagle CAD εκεί μόνο αφού αφαίρεσα σχεδόν όλα τα στοιχεία. Δυστυχώς, το πρόγραμμα TopoR δεν με βοήθησε να τοποθετήσω ούτε 10 στοιχεία στον πίνακα. Αρχικά, όλα τα εξαρτήματα τοποθετήθηκαν σε μια γωνία και στη συνέχεια τακτοποιήθηκαν κατά μήκος της άκρης. Δεν έμεινα ικανοποιημένος με αυτή την επιλογή και για πολύ καιρό παρακολουθούσα την πλακέτα χειροκίνητα στο οικείο περιβάλλον Eagle CAD.

Ένα σημαντικό στοιχείο μιας πλακέτας τυπωμένου κυκλώματος είναι η μεταξοτυπία. Η πλακέτα ανάπτυξης δεν πρέπει να έχει μόνο ετικέτες για τα ηλεκτρονικά εξαρτήματα, αλλά και όλες οι υποδοχές πρέπει να φέρουν ετικέτα. Στο πίσω μέρος της πλακέτας τοποθέτησα πίνακες με τις λειτουργίες των θυρών του ελεγκτή (κύρια, εναλλακτική, παράκαμψη, πραγματική). Παρήγγειλα την παραγωγή τυπωμένων κυκλωμάτων στην Κίνα από το γνωστό γραφείο PCBWay. Δεν θα το επαινέσω γιατί η ποιότητα είναι καλή. Μπορούν να τα καταφέρουν καλύτερα, με αυστηρότερες ανοχές, αλλά έναντι αμοιβής.

Ανάπτυξη πίνακα ανάπτυξης για K1986BE1QI (αεροπορία)
Κατασκευασμένες πλακέτες τυπωμένων κυκλωμάτων MDB1986, (γ) Φωτογραφία του συγγραφέα

Έπρεπε να κολλήσω τα εξαρτήματα «στα γόνατά μου» με κολλητήρι 40 watt και συγκολλητικό POS-61, γιατί σπάνια συγκολλώ, 1-2 φορές το χρόνο, και η πάστα συγκόλλησης είχε στεγνώσει. Έπρεπε επίσης να αλλάξω τον κινεζικό ελεγκτή CS32F103 στο αρχικό STM32F103 και στη συνέχεια να αντικαταστήσω τη μνήμη. Σε γενικές γραμμές, τώρα είμαι απόλυτα ικανοποιημένος με το αποτέλεσμα, αν και δεν έχω ελέγξει ακόμα τη λειτουργία των RS-232 και CAN.

Ανάπτυξη πίνακα ανάπτυξης για K1986BE1QI (αεροπορία)
Η πλακέτα εντοπισμού σφαλμάτων MDB1986 σε λειτουργία - λάμπει και ζεσταίνεται, (γ) Φωτογραφία του συγγραφέα

Στον ιστότοπο Milandra μπορείτε να βρείτε αρκετά εκπαιδευτικό υλικό για ελεγκτές μάθησης σειρά 1986BE9 (πυρήνας Cortex-M3), αλλά για τον μικροελεγκτή K1986BE1QI (αεροπορία) δεν βλέπω τίποτα εκεί. Έχοντας εξετάσει το υλικό, τα εγχειρίδια και τις εργαστηριακές εργασίες για τα πανεπιστήμια που δημοσιεύονται εκεί, χαίρομαι που το προσωπικό εκπαιδεύεται σε όλη τη χώρα για να συνεργάζεται με Ρώσους ελεγκτές. Τα περισσότερα εκπαιδευτικά υλικά προετοιμάζονται για εργασία με θύρες I/O, χρονόμετρα, ADC, DAC, SPI, UART. Χρησιμοποιούνται διαφορετικά περιβάλλοντα ανάπτυξης IDE (Keil, IAR, CodeMaster). Κάπου προγραμματίζουν χρησιμοποιώντας καταχωρητές CMSIS και κάπου χρησιμοποιούν τη βιβλιοθήκη MDR. Πρέπει να αναφέρεται ο πόρος Ξεκινήστε το Milandr, το οποίο περιέχει πολλά άρθρα από εν ενεργεία προγραμματιστές. Και, φυσικά, δεν πρέπει να ξεχνάμε φόρουμ Milandra.

Σκέφτηκα τη ΜιλάντραΗ μικροηλεκτρονική αναπτύσσεται στη Ρωσία και η εταιρεία Milander διαδραματίζει εξέχοντα ρόλο σε αυτή τη διαδικασία. Εμφανίζονται νέοι ενδιαφέροντες μικροελεγκτές, για παράδειγμα, οι 1986BE81T και Elektrosila με διασυνδέσεις SpaceWire και MKIO (το ίδιο με το 1986BE1 και, ενδεχομένως, με τα ίδια προβλήματα) κ.λπ. Αλλά απλοί μαθητές, δάσκαλοι και πολιτικοί μηχανικοί δεν μπορούν να αγοράσουν τέτοια μικροκυκλώματα. Αυτό σημαίνει ότι η κοινότητα των μηχανικών δεν θα είναι σε θέση να εντοπίσει γρήγορα σφάλματα και προβλήματα με αυτό το τσιπ. Μου φαίνεται ότι πρώτα είναι απαραίτητο να παραχθούν μικροκυκλώματα σε πλαστική θήκη, να τα διανεμηθούν σε όλους τους ενδιαφερόμενους και μετά από έγκριση (λατινικά approbatio - έγκριση, αναγνώριση) από ειδικούς, μπορούν να προετοιμάσουν μια αναθεώρηση σε μεταλλική-κεραμική θήκη με προστασία από όλους τους τρομερούς παράγοντες. Ελπίζω στο εγγύς μέλλον να είμαστε ΟΛΟΙ ευχαριστημένοι με τα νέα έργα που ανακοινώνονται στις εκθέσεις.
Ο πίνακας εντοπισμού σφαλμάτων που ανέπτυξα μπορεί να επαναληφθεί, να τροποποιηθεί και να χρησιμοποιηθεί από οποιονδήποτε στην εκπαιδευτική διαδικασία. Πρώτα απ 'όλα, έφτιαξα τον πίνακα για μένα, αλλά μου βγήκε τόσο καλά που Αποφάσισα να το μοιραστώ με όλους.

Το K1986BE1QI (αέρας) είναι ένας πολύ ενδιαφέρον ελεγκτής με μοναδικές διεπαφές που μπορούν να χρησιμοποιηθούν σε πανεπιστήμια για τη διδασκαλία φοιτητών. Νομίζω ότι αφού διορθώσει τα σφάλματα που εντοπίστηκαν στον ελεγκτή και περάσει τις δοκιμές πιστοποίησης, ο ελεγκτής θα πετάξει με την πραγματική έννοια της λέξης!

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο