Εργασία με την ένδειξη LCD στην πλακέτα ανάπτυξης STM32L-Discovery. Εκπαίδευση στο STM32 στο μπλοκ διαιρέτη συχνότητας μαζών

Γενικές πληροφορίες

Η πλακέτα ανάπτυξης STM32L-Discovery διαθέτει οθόνη υγρών κρυστάλλων (LCD) με έξι χαρακτήρες 14 τμημάτων, 4 άνω και κάτω τελεία (Colon), 4 τελείες (DP), 4 ρίγες (Bar). Όλα τα τμήματα συνδυάζονται σε ομάδες COM0, COM1, COM2, COM3 των 24 τμημάτων. Κάθε ομάδα έχει το δικό της ξεχωριστό «κοινό καλώδιο».


Ο μικροελεγκτής STM32L152RBT6 είναι εγκατεστημένος στην πλακέτα εντοπισμού σφαλμάτων. Ο μικροελεγκτής διαθέτει ενσωματωμένο ελεγκτή LCD που ελέγχει τις μονόχρωμες ενδείξεις LCD.
Ελεγκτής LCD:

  1. Σας επιτρέπει να διαμορφώσετε τη συχνότητα ενημέρωσης (ρυθμός καρέ - η συχνότητα με την οποία ενημερώνονται οι πληροφορίες στην οθόνη LCD)
  2. Υποστηρίζει λειτουργία στατικού και πολυπλεξικού ελέγχου
  3. Υποστηρίζει εγκατάσταση λογισμικούαντίθεση
  4. Επιτρέπει πολλαπλά επίπεδα τάσης ελέγχου (έως τέσσερα)
  5. Χρησιμοποιεί διπλό buffering, επιτρέποντας την ενημέρωση των δεδομένων σε καταχωρήσεις LCD_RAM ​​ανά πάσα στιγμή κατά την εκτέλεση του προγράμματος χωρίς να παραβιάζεται η ακεραιότητα των εμφανιζόμενων πληροφοριών

Εγγραφές μνήμης ελεγκτή LCD

Ο μικροελεγκτής STM32L152RB διαθέτει ειδικούς καταχωρητές LCD_RAM, οι πληροφορίες που αποθηκεύονται στις οποίες αντιστοιχούν στην ομάδα τμημάτων COM0 - COM3. Κάθε ομάδα αντιστοιχεί σε δύο καταχωρητές 32-bit. Αυτός ο αριθμός καταχωρητών επιτρέπει στον μικροελεγκτή να ελέγχει την οθόνη LCD c μεγάλο ποσότμήματα από αυτά που είναι εγκατεστημένα στον πίνακα ανάπτυξης.

Για τον έλεγχο μιας LCD με 176 τμήματα, χρησιμοποιούνται 4 ομάδες COM0 - COM3 των 44 τμημάτων η καθεμία· για τον έλεγχο μιας LCD με 320 τμήματα, χρησιμοποιούνται 8 ομάδες COM0 - COM7 των 40 τμημάτων η καθεμία.



Η πλακέτα ανάπτυξης STM32L-Discovery χρησιμοποιεί μια οθόνη LCD με 96 τμήματα, χωρισμένα σε 4 ομάδες COM0 - COM3 των 24 τμημάτων η καθεμία.


Η οθόνη LCD στην πλακέτα ανάπτυξης STM32L-Discovery συνδέεται με τέτοιο τρόπο ώστε να χρησιμοποιούνται τα bit S40, S41 της δεύτερης LCD_RAM ​​σε κάθε ομάδα και τα bit S0-S27 των πρώτων καταχωρητών LCD_RAM. Για να μειωθεί ο αριθμός των καταχωρητών που χρησιμοποιούνται, οι πληροφορίες από τα bit S40-S43 θα εγγραφούν στα ελεύθερα bit S28-S31 χρησιμοποιώντας τη λειτουργία επαναχαρτογράφησης.

Μπλοκ διαιρέτη συχνότητας

Το μπλοκ διαιρέτη συχνότητας (Γεννήτρια συχνότητας) σάς επιτρέπει να επιτύχετε διαφορετικούς ρυθμούς καρέ στην οθόνη LCD στην περιοχή από 32 kHz έως 1 MHz. Τα ακόλουθα μπορούν να χρησιμοποιηθούν ως πηγή σήματος χρονισμού:
  1. Εξωτερική γεννήτρια χαμηλής συχνότητας με συχνότητα 32 kHz (LSE. Εξωτερική χαμηλή ταχύτητα)
  2. Εσωτερική γεννήτρια χαμηλής συχνότητας με συχνότητα 37 kHz (LSI. Εσωτερική χαμηλή ταχύτητα)
  3. Εξωτερική γεννήτρια ραδιοσυχνοτήτων με διαχωριστές συχνότητας 2,4,8 και 16 και μέγιστη συχνότητα 1 MHz. (HSE. Εξωτερική υψηλής ταχύτητας)
Για την επίτευξη ακριβούς χρονισμού και τη μείωση της μετατόπισης τάσης συνεχές ρεύμαΜέσω των τμημάτων LCD, η πηγή του σήματος χρονισμού πρέπει να είναι σταθερή. Το σήμα ρολογιού LCDCLK αποστέλλεται στον ελεγκτή LCD. Η συχνότητα του σήματος ρολογιού διαιρείται σύμφωνα με τους συντελεστές διαίρεσης που ορίζονται από τα bit PS, DIV του καταχωρητή LCD_FCR (Frame Control Register). Η προκύπτουσα συχνότητα στην έξοδο του μπλοκ διαιρέτη συχνότητας υπολογίζεται από τον τύπο:

F ck_div =F LCDCLK / (2 PS *(16+DIV))

Ο ρυθμός καρέ υπολογίζεται χρησιμοποιώντας τον τύπο:

F Frame =f ck_div *καθήκον

Όπου η λειτουργία είναι ο κύκλος λειτουργίας - ο λόγος της διάρκειας του παλμού προς την περίοδό του. Κατά τη διάρκεια ενός καρέ, πληροφορίες από τους καταχωρητές LCD_RAM[x], LCD_RAM ​​κ.λπ. εμφανίζονται διαδοχικά στην οθόνη LCD. Για μια οθόνη LCD που είναι εγκατεστημένη σε μια πλακέτα ανάπτυξης, σε ένα πλαίσιο ο ελεγκτής LCD πρέπει να εξάγει πληροφορίες από 4 ομάδες τμημάτων COM0 - COM3, επομένως, η διάρκεια του παλμού ελέγχου για μία ομάδα θα είναι το 1/4 της διάρκειας του πλαισίου, δηλ. καθήκον=1/4.

Έλεγχος LCD

Υπάρχουν δύο τρόποι ελέγχου της οθόνης LCD - λειτουργία στατικού ελέγχου και λειτουργία πολλαπλού ελέγχου. Με στατική ένδειξη, κάθε τμήμα του bit ένδειξης συνδέεται στην έξοδο του μικροελεγκτή. Σε σχέση με την οθόνη LCD, στην πλακέτα εντοπισμού σφαλμάτων STM32LDdiscovery, απαιτούνται 6 * 14 = 84 ακίδες μικροελεγκτή (εξαιρουμένων των άνω τελείων, των τελειών και των λωρίδων). Λόγω της χρήσης τέτοιου αριθμού ακίδων, η σύνδεση άλλων περιφερειακών θα καταστεί αδύνατη. Ο μικροελεγκτής STM32L152RB έχει 64 ακίδες. Στη λειτουργία ελέγχου πολυπλεξίας (λειτουργία δυναμικού ελέγχου), πανομοιότυπα τμήματα ψηφίων ενδείξεων συνδυάζονται σε ομάδες. Οι πληροφορίες εμφανίζονται λόγω του εναλλακτικού φωτισμού των τμημάτων των ψηφίων του δείκτη, με συχνότητα που δεν είναι αντιληπτή στο ανθρώπινο μάτι.

Ο έλεγχος Multiplex σάς επιτρέπει να ελέγχετε μεγάλο αριθμό τμημάτων. Αντί να ελέγχεται χωριστά κάθε στοιχείο, μπορούν να αντιμετωπιστούν με γραμμές και στήλες (COM και SEG), απλοποιώντας έτσι το κύκλωμα ελέγχου, επειδή κάθε τμήμα δεν απαιτεί τη δική του γραμμή ελέγχου. Για να ενεργοποιήσετε το επιλεγμένο τμήμα, πρέπει να εφαρμοστεί σε αυτό η διαφορά δυναμικού COM και SEG. Ένα παράδειγμα λειτουργίας του πρώτου ψηφίου της ένδειξης (η ένδειξη εμφανίζει "1:"):


Το πρώτο ψηφίο του δείκτη τη στιγμή t 0


Το πρώτο ψηφίο του δείκτη τη στιγμή t 1


Το πρώτο ψηφίο του δείκτη τη στιγμή t 2


Γενικό διάγραμμα σύνδεσης τμημάτων σε ακίδες LCD


Διάγραμμα σύνδεσης ακίδων LCD σε θύρες μικροελεγκτή

Για τις γραμμές SEG, χρησιμοποιείται μια τάση ελέγχου, ο αριθμός των επιπέδων της οποίας καθορίζεται από τον συντελεστή πόλωσης. Η οθόνη LCD στην πλακέτα ανάπτυξης χρησιμοποιεί λειτουργία ελέγχου πολυπλεξίας με duty=1/4 και bias=1/3. Οι τιμές duty και bias ρυθμίζονται μέσω του καταχωρητή LCD_CR (Control Register) στα bit DUTY και BIAS.

Πρακτική

Διαμόρφωση θυρών μικροελεγκτή

Για να ελέγξετε την οθόνη LCD, οι θύρες του μικροελεγκτή πρέπει να ρυθμιστούν ανάλογα:
  1. Προς την έξοδο
  2. Χρήση της λειτουργίας AF 11 Εναλλακτική
  3. Να έχετε συχνότητες εξόδου στη θύρα των 400 kHz
  4. Χρησιμοποιήστε τον τρόπο λειτουργίας push-pull
  5. Χωρίς αντιστάσεις έλξης
Όταν η θύρα λειτουργεί σε λειτουργία εναλλακτικής λειτουργίας, το buffer δεδομένων εξόδου της θύρας ελέγχεται από σήματα που προέρχονται από την περιφερειακή συσκευή. Το αρχείο κεφαλίδας stm32lxx.h της βιβλιοθήκης CMSIS περιέχει μια περιγραφή όλων των περιφερειακών καταχωρητών, καθώς και τη δομή για την πρόσβαση σε αυτούς.

Οι ακίδες LCD συνδέονται στις θύρες GPIOA (PA1-PA3, PA8-PA10, PA15), GPIOB (PB3-PB5, PB8-PB15), GPIOC (PC0-PC3,PC6-PC11) του μικροελεγκτή. Για να λειτουργήσει η οθόνη LCD, πρέπει να παρέχεται σήμα ρολογιού στις επιλεγμένες θύρες. Οι θύρες GPIO του μικροελεγκτή χρονίζονται από το δίαυλο AHB του συστήματος RCC (Reset and Clock Control) - ένα σύστημα ρολογιού και επαναφοράς. Το σήμα ρολογιού παρέχεται με τη ρύθμιση των αντίστοιχων δυαδικών ψηφίων στον καταχωρητή RCC_AHBENR (περιφερειακός καταχωρητής ενεργοποίησης ρολογιού AHB).

Καταχωρίστε RCC_AHBENR (το σχήμα δείχνει τα πρώτα 15 bit)

Για τις θύρες GPIOA, GPIOB, GPIOC, πρέπει να ορίσετε 1 σε 0, 1, 2 bit του καταχωρητή.

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

RCC->AHBENR |=(RCC_AHBENR_GPIOAEN|RCC_AHBENR_GPIOBEN|RCC_AHBENR_GPIOCEN); ή RCC->AHBENR = 0x7; /* 0x7=111 */

Για να υποδείξετε τους τρόπους λειτουργίας της θύρας, χρησιμοποιείται ο καταχωρητής GPIOx_MODER (καταχωρητής λειτουργίας θύρας GPIO) (x = A..H). Όλα τα bit καταχωρητή ομαδοποιούνται σε ομάδες MODERy, όπου y είναι ο αριθμός pin της αντίστοιχης θύρας. Οι θύρες πρέπει να διαμορφωθούν για εναλλακτική λειτουργία, π.χ. στην ομάδα που είναι υπεύθυνη για την καρφίτσα, ορίστε την τιμή σε 10. Για τη θύρα GPIOA, πρέπει να ρυθμίσετε τις παραμέτρους των ακροδεκτών 1-3,8-10,15, δηλαδή να ορίσετε το 1 σε 3,5,7,17,19, 21,31 ψηφία.


Εγγραφή GPIOx_MODER (καταχώριση λειτουργίας θύρας GPIO)

GPIOA->MODER |= (GPIO_MODER_MODER1_1 | GPIO_MODER_MODER2_1 | GPIO_MODER_MODER3_1 | GPIO_MODER_MODER8_1 | GPIO_MODER_MODER9_1 | GPIO_MODER_MODER10_1 | GPIO_MODER_MODER1_1); ή GPIOA->MODER = 0x802A00A8; /* 0x802A00A8=1000 0000 0010 1010 0000 0000 1010 1000 */
Οι θύρες του μικροελεγκτή πρέπει να τεθούν σε λειτουργία push-pull. Για να το κάνετε αυτό, πρέπει να ορίσετε 1 στον καταχωρητή GPIOx_OTYPER (εγγραφή τύπου εξόδου θύρας GPIO) στα bit που είναι υπεύθυνα για τις ακίδες.


Καταχώρηση GPIOx_OTYPER (εγγραφή τύπου εξόδου θύρας GPIO)

GPIOA->OTYPER &= ~(GPIO_OTYPER_OT_1 | GPIO_OTYPER_OT_2 | GPIO_OTYPER_OT_3 | GPIO_OTYPER_OT_8 | GPIO_OTYPER_OT_9 | GPIO_OTYPER_OT_10 | GPIO_OTYPER_OT_1); ή GPIOA->OTYPER &= ~0x0000870E; /* 0x870E=1000 0111 0000 1110 */
Και οι δύο επιλογές επηρεάζουν τις επιλεγμένες καρφίτσες. (Για τη θύρα GPIOA, έχουν διαμορφωθεί οι ακίδες 1-3.8-10.15). Εάν πρέπει να αλλάξετε όλες τις ακίδες θύρας σε λειτουργία push-pull, μπορείτε να γράψετε την ακόλουθη τιμή στον καταχωρητή:
GPIOA->OTYPER = 0x0;
Για να καθορίσετε τη συχνότητα εξόδου πληροφοριών στη θύρα, χρησιμοποιείται ο καταχωρητής GPIOx_OSPEEDR (καταχωρητής ταχύτητας εξόδου θύρας GPIO). Όλα τα bit καταχωρητή ομαδοποιούνται σε ομάδες OSPEEDry, όπου y είναι ο αριθμός pin της αντίστοιχης θύρας. Σε αυτή την εργασία, η συχνότητα θα πρέπει να ρυθμιστεί στα 400 kHz δηλ. στην ομάδα που είναι υπεύθυνη για την καρφίτσα, ορίστε την τιμή στο 00.


Εγγραφή GPIOx_OSPEEDR (καταχωρητής ταχύτητας εξόδου θύρας GPIO)

GPIOA->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR1 | GPIO_OSPEEDER_OSPEEDR2 | GPIO_OSPEEDER_OSPEEDR3 | GPIO_OSPEEDER_OSPEEDR8 | GPIO_OSPEEDER_OSPEEDR9 | GPIO_OSPEEDER_OSPEEDR9 | GPIO_OSPEEDER_OSPEEDR1 ή GPIOA->OSPEEDR &= ~0xC03F00FC; /*0xC03F00FC=1100 0000 0011 1111 0000 0000 1111 1100 */
Εάν πρέπει να ρυθμίσετε τη συχνότητα εξόδου στη θύρα στα 400 kHz για όλες τις ακίδες, μπορείτε να γράψετε την τιμή στον καταχωρητή:
GPIOA->OSPEEDR = 0x0;
Για να απενεργοποιήσετε τις αντιστάσεις pull-up και pull-down για επιλεγμένες ακίδες, χρησιμοποιήστε τον καταχωρητή GPIOx_PUPDR (GPIO port pullup/pull-down register). Όλα τα bit καταχωρητή ομαδοποιούνται σε ομάδες PUDRy, όπου y είναι ο αριθμός pin της αντίστοιχης θύρας. Για να απενεργοποιήσετε τις αντιστάσεις έλξης στην ομάδα που είναι υπεύθυνη για τον ακροδέκτη, ορίστε την τιμή στο 00.


Εγγραφή GPIOx_PUPDR (ανασυρόμενος/αναπτυσσόμενος καταχωρητής θύρας GPIO)

GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPDR1 | GPIO_PUPDR_PUPDR2 | GPIO_PUPDR_PUPDR3 | GPIO_PUPDR_PUPDR8 | GPIO_PUPDR_PUPDR9 | GPIO_PUPDR_PUPDR10 | GPIO_PUPDR_PUPDR15 | GPIO_PUPDR_PUPDR3); ή GPIOA->PUPDR &= ~0xC03F00FC; /*0xC03F00FC=1100 0000 0011 1111 0000 0000 1111 1100 */
Εάν πρέπει να απενεργοποιήσετε τις αντιστάσεις έλξης για όλες τις ακίδες, μπορείτε να γράψετε την τιμή στον καταχωρητή:
GPIOA->PUPDR = 0x0;
Για να χρησιμοποιήσετε μια εναλλακτική συνάρτηση για τις θύρες του μικροελεγκτή, δύο καταχωρητές GPIOx_AFRL (GPIO εναλλακτική λειτουργία χαμηλού καταχωρητή), υπεύθυνοι για τις χαμηλές ακίδες (0 έως 7) και GPIOx_AFRH (υψηλή εγγραφή εναλλακτικής λειτουργίας GPIO), υπεύθυνοι για τις υψηλές ακίδες (8 έως 15). ), είναι μεταχειρισμένα. Όλα τα bit καταχωρητή ομαδοποιούνται σε ομάδες AFRLy και AFRHy, όπου y είναι ο αριθμός pin της αντίστοιχης θύρας. Οι θύρες πρέπει να ρυθμιστούν ώστε να χρησιμοποιούν την εναλλακτική λειτουργία AF11, γι' αυτό η ομάδα που είναι υπεύθυνη για τον ακροδέκτη πρέπει να οριστεί στο 1011.


Εγγραφή GPIOx_AFRL (χαμηλή εγγραφή εναλλακτικής συνάρτησης GPIO)


Καταχώρηση GPIOx_AFRH (υψηλή εγγραφή εναλλακτικής συνάρτησης GPIO)

Για να το κάνετε αυτό, πρέπει να γράψετε τις ακόλουθες τιμές στους καταχωρητές:
GPIOA->AFR = 0xBBB0; /* 0xBBB0 = 1011 1011 1011 0000*/ GPIOA->AFR = 0xB0000BBB; /* 0xB0000BBB=1011 0000 0000 0000 0000 1011 1011 1011*/

AFR = 0xBBB0 – γράφει μια τιμή στον καταχωρητή GPIOx_AFRL.
AFR = 0xB0000BBB – γράφει μια τιμή στον καταχωρητή GPIOx_AFRH.

Οι ρυθμίσεις για τις αντίστοιχες ακίδες των θυρών GPIOB και GPIOC γίνονται με τον ίδιο τρόπο.

Ρύθμιση του ελεγκτή LCD

Όταν εργάζεστε με έναν ελεγκτή LCD, όπως και με άλλα περιφερειακά, πρέπει να του παρέχεται σήμα ρολογιού. Το σήμα ρολογιού παρέχεται επίσης στο σύστημα διαχείρισης ισχύος. Ο ελεγκτής και το σύστημα διαχείρισης ενέργειας χρησιμοποιούν το δίαυλο APB1 για χρονομέτρηση. Για να ενεργοποιήσετε το ρολόι στον καταχωρητή RCC_APB1ENR (καταχωρητής ενεργοποίησης περιφερειακού ρολογιού APB1), πρέπει να ορίσετε 1 στα bit 9 και 28.


Εγγραφή RCC_APB1ENR (εγγραφή ενεργοποίησης περιφερειακού ρολογιού APB1)

RCC->APB1ENR |= RCC_APB1ENR_PWREN|RCC_APB1ENR_LCDEN; ή RCC->APB1ENR |= 0x10000200; /* 0x10000200=1 0000 0000 0000 0000 0010 0000 0000 */
Για να λειτουργήσει ο ελεγκτής LCD, είναι απαραίτητο να καθορίσετε την πηγή των σημάτων ρολογιού. Η πηγή καθορίζεται στον καταχωρητή RCC_CSR. Από προεπιλογή, η εγγραφή σε αυτό το μητρώο είναι απενεργοποιημένη. Η προστασία εγγραφής στον καταχωρητή RCC_CSR καταργείται στον καταχωρητή ελέγχου ισχύος PWR_CR. Ο καταχωρητής RCC_CSR ελέγχει τις πηγές ρολογιού του ελεγκτή RTC και LCD
Η εγγραφή στον καταχωρητή RCC_CSR είναι ενεργοποιημένη ορίζοντας το bit 8 του καταχωρητή PWR_CR σε 1.


Καταχωρίστε PWR_CR (καταχωρητής ελέγχου ισχύος PWR)

PWR->CR |= PWR_CR_DBP; ή PWR->CR |= 0x100; /* 0x100 =1 0000 0000 */
Για να αλλάξετε την πηγή ρολογιού του ελεγκτή LCD (και το ρολόι RTC επίσης), πρέπει πρώτα να επαναφέρετε την πηγή ρολογιού ρυθμίζοντας το bit RTCRST (ρύθμιση 1 στο bit 23) στον καταχωρητή RCC_CSR (Καταχωρητής ελέγχου/κατάστασης).


Εγγραφή RCC_CSR (Καταχώριση ελέγχου/κατάστασης)

RCC->CSR |= RCC_CSR_RTCRST;
Ή γράφοντας μια τιμή σε έναν καταχωρητή χρησιμοποιώντας τον τελεστή “|=”, επειδή αξία κατά
Ο προεπιλεγμένος καταχωρητής είναι διαφορετικός από το 0x0:
RCC->CSR |= 0x800000; /* 0x800000 = 1000 0000 0000 0000 0000 0000 */
Για να επιλέξετε μια νέα πηγή ρολογιού, πρέπει να αφαιρέσετε το bit RTCRST:
RCC->CSR &= ~RCC_CSR_RTCRST; ή RCC->CSR &= ~0x800000;
Ως πηγή σήματος ρολογιού επιλέγεται μια εξωτερική γεννήτρια χαμηλής συχνότητας. Για να ενεργοποιήσετε τη γεννήτρια στον καταχωρητή RCC_CSR, πρέπει να ορίσετε το bit LSEON (ρύθμιση 1 έως 8 bit):
RCC->CSR |= RCC_CSR_LSEON; ή RCC->CSR |= 0x100; /* 0x100 = 1 0000 0000 */
Μετά την ενεργοποίηση της γεννήτριας, χρειάζεται λίγος χρόνος για να σταθεροποιηθεί. Η ετοιμότητα της γεννήτριας ελέγχεται με τη ρύθμιση υλικού του bit LSERDY στον καταχωρητή RCC_CSR:
while(!(RCC->CSR&RCC_CSR_LSERDY));
Η επιλογή μιας εξωτερικής γεννήτριας χαμηλής συχνότητας ως πηγής ρολογιού πραγματοποιείται με τη ρύθμιση του καταχωρητή RCC_CSR στο 01 στην ομάδα RTCSEL:
RCC->CSR |= RCC_CSR_RTCSEL_LSE; ή RCC->CSR |= 0x10000; /* 0x10000 = 01 0000 0000 0000 0000 */
Στον ελεγκτή LCD πρέπει να εγκαταστήσετε επιθυμητή λειτουργίαπροκατάληψη. Για να το κάνετε αυτό, στον καταχωρητή LCD_CR (καταχωρητής ελέγχου LCD) πρέπει να ορίσετε την τιμή 10 στην ομάδα BIAS. Πριν εγκαταστήσετε τα κομμάτια, είναι απαραίτητο να καθαρίσετε τα κομμάτια από τα "σκουπίδια".


Καταχώρηση LCD_CR (καταχωριστής ελέγχου LCD)

Επαναφορά bits:
LCD->CR &= ~LCD_CR_BIAS; ή LCD->CR &= ~0x60;
Επιλογή λειτουργίας προκατάληψης=1/3 χρησιμοποιώντας μια μάσκα bit:
LCD->CR |= LCD_CR_BIAS_1; ή LCD->CR |= 0x40;
Ρυθμίστε τη λειτουργία duty=1/4. Για να γίνει αυτό, επαναφέρουμε επίσης πρώτα όλα τα bit:
LCD->CR &=~LCD_CR_DUTY; ή LCD->CR &= ~0x1C;
Ορίστε την τιμή 011 στην ομάδα DUTY του καταχωρητή LCD_CR για
λειτουργία λειτουργίας=1/4:
LCD->CR |= LCD_CR_DUTY_0|LCD_CR_DUTY_1; ή LCD->CR |= 0xС;
Ενεργοποιούμε τη λειτουργία αλλαγής ακίδας. Για να το κάνετε αυτό, ορίστε 1 έως 7 bit του καταχωρητή LCD_CR:
LCD->CR |= LCD_CR_MUX_SEG; ή LCD->CR |= 0x80;
Ορίζουμε τις τιμές των συντελεστών διαίρεσης συχνότητας του σήματος ρολογιού LCDCLK. Οι τιμές των συντελεστών ορίζονται στον καταχωρητή LCD_FCR (καταχωρητής ελέγχου πλαισίου LCD). Αρχικά, καθαρίζουμε επίσης όλα τα bit και μετά ορίζουμε τα απαραίτητα.


Καταχώρηση LCD_FCR (καταχωρητής ελέγχου πλαισίου LCD)

LCD->FCR &= ~LCD_FCR_PS; LCD->FCR &= ~LCD_FCR_DIV; ή LCD->FCR &= ~0x3C00000; LCD->FCR &= ~0x3C0000;
Οι τιμές των συντελεστών διαίρεσης συχνότητας σήματος ρολογιού ορίζονται ίσες με ck_ps = LCDCLK/16, ck_div = ck_ps/17. Για να το κάνετε αυτό, ορίστε 1 σε 24 και 18 ψηφία:
LCD->FCR |= 0x1040000; /*0x1040000 = 1 0000 0100 0000 0000 0000 0000*/
Για να ρυθμίσετε το επιθυμητό επίπεδο αντίθεσης, πρέπει να ορίσετε την τιμή 010 στην ομάδα CC, καθαρίζοντας επίσης πρώτα τα bit από τις παλιές τιμές:
LCD->FCR &= ~LCD_FCR_CC; LCD->FCR |= LCD_FCR_CC_1; ή LCD->FCR &= ~0x1C00; LCD->FCR |= 0x800; /*0x800 = 1000 0000 0000*/
Αφού ρυθμίσετε όλες τις τιμές, χρειάζεται λίγος χρόνος για να συγχρονιστεί ο καταχωρητής LCD_FCR. Ο συγχρονισμός καταχωρητή ελέγχεται ρυθμίζοντας το bit FCRSF στο υλικό στον καταχωρητή LCD_SR (καταχωρητής κατάστασης LCD).

Καταχώρηση LCD_SR (καταχώριση κατάστασης LCD)

while(!(LCD->SR&LCD_SR_FCRSR));
Ως πηγή τάσης για την οθόνη LCD, επιλέγουμε έναν εσωτερικό μετατροπέα ενίσχυσης για να σχηματίσουμε V lcd. Για να γίνει αυτό, το πρώτο bit του καταχωρητή LCD_CR (καταχωρητής ελέγχου LCD) ορίζεται στο 0:
LCD->CR &= ~LCD_CR_VSEL; ή LCD->CR &= ~0x2;
Η λειτουργία του ελεγκτή LCD ενεργοποιείται ρυθμίζοντας το bit καταχωρητή LCD_CR (καταχωρητής ελέγχου LCD) στο 0:
LCD->CR |= LCD_CR_LCDEN; ή LCD->CR |= 0x1;
Αφού εγκαταστήσετε τον εσωτερικό μετατροπέα ενίσχυσης ως πηγή τάσης, πρέπει να περιμένετε μέχρι να είναι έτοιμος. Η ετοιμότητα ελέγχεται με τη ρύθμιση υλικού του bit RDY στον καταχωρητή LCD_SR (καταχωρητής κατάστασης LCD):
while(!(LCD->SR&LCD_SR_RDY));
Αφού αφήσετε τον ελεγκτή LCD να λειτουργήσει, πρέπει να περιμένετε μέχρι να είναι έτοιμος. Η ετοιμότητα ελέγχεται με τη ρύθμιση υλικού του bit ENS στον καταχωρητή LCD_SR (καταχωρητής κατάστασης LCD):
while(!(LCD->SR&LCD_SR_ENS));

Σχηματισμός εικόνας στην οθόνη LCD

Όλα τα τμήματα δεικτών συνδυάζονται σε ομάδες COM0 - COM3 με 24 τμήματα η καθεμία (SEG0-SEG23). Οι πληροφορίες σχετικά με τα τμήματα αποθηκεύονται στα μητρώα LCD_RAM ​​της μνήμης του ελεγκτή LCD. Καλωδίωση πλακέτα τυπωμένου κυκλώματοςείναι τέτοιος ώστε οι αριθμοί τμημάτων να μην αντιστοιχούν στους αριθμούς bit των καταχωρητών LCD_RAM.

Για να εμφανίσετε το 1 στο πρώτο ψηφίο της οθόνης LCD, πρέπει να φωτίσετε τα τμήματα 1B, 1C. Το τμήμα 1Β ανήκει στην ομάδα COM0, το τμήμα 1C ανήκει στην ομάδα COM1. Επομένως, οι πληροφορίες σχετικά με αυτές πρέπει να εγγραφούν στους καταχωρητές RAM (LCD_RAM0), RAM (LCD_RAM2), αντίστοιχα. Το τμήμα 1B είναι υπεύθυνο για την έξοδο LCD LCDSEG22, οι πληροφορίες για την οποία αποθηκεύονται στο bit SEG40 του καταχωρητή RAM (LCD_RAM1). Χρησιμοποιώντας τη λειτουργία επαναχαρτογράφησης, το τμήμα LCDSEG22 θα εκχωρηθεί στο bit SEG28 του καταχωρητή RAM (LCD_RAM0). Το τμήμα 1C είναι υπεύθυνο για την έξοδο LCD LCDSEG1, πληροφορίες για την οποία αποθηκεύονται στο bit SEG1 του καταχωρητή RAM (LCD_RAM2).

LCD->RAM= 0x10000000; /*0x10000000 = 1 0000 0000 0000 0000 0000 0000 0000 */ LCD->RAM = 0x2; /*0x2= 10 */
Πριν γράψετε τιμές σε καταχωρητές μνήμης, είναι απαραίτητο να ελέγξετε αν έχει ολοκληρωθεί η προηγούμενη μεταφορά δεδομένων στην οθόνη LCD. Για να γίνει αυτό, ελέγχεται το bit UDR (Αίτημα εμφάνισης ενημέρωσης) του καταχωρητή LCD_SR (καταχωρητής κατάστασης LCD). Ο ελεγκτής LCD έχει δύο buffer εξόδου, οι πληροφορίες εισάγονται στο πρώτο buffer και εξάγονται στην LCD από το δεύτερο buffer. Το bit UDR ρυθμίζεται κατά τη μεταφορά από το πρώτο buffer στο δεύτερο, προστατεύοντας τους καταχωρητές LCD_RAM ​​από την εγγραφή:
while(LCD->SR & LCD_SR_UDR);
Αφού γράψετε πληροφορίες στα μητρώα LCD_RAM, πρέπει να ορίσετε το bit UDR στον καταχωρητή LCD_SR (καταχωρητής κατάστασης LCD) (ρύθμιση 1 έως 2 bit):
LCD->SR |= LCD_SR_UDR; ή LCD->SR |= 0x4; /*0x4 = 100 */

Για το μαρτύριο και τη μελέτη αυτής της συσκευής. Όχι νωρίτερα. Το μαντίλι μαζεύτηκε και φύγαμε. Ω ναι! Το θέμα της συζήτησής μας στράφηκε στη σύγκριση των δύο ΜΚ. Το παραπάνω είναι ενάντια στο ATmega328. Γιατί ακριβώς αυτοί; Και τα δύο MK βρίσκονται στη συσκευασία TQFP-32. (Είναι αλήθεια ότι το ATmega328 έρχεται επίσης σε πακέτο DIP)
Τώρα ας ρίξουμε μια πιο προσεκτική ματιά στο εσωτερικό τους. Για μεγαλύτερη κατανόηση, έχω συγκεντρώσει όλα τα απαραίτητα δεδομένα σε έναν πίνακα.

Επιλογές ATmega328 STM32F030K6T6
Λίγο βάθος 8 bit 32 bit
ΛΑΜΨΗ 32 kb 32 kb
SRAM 1kb 4kb
EEPROM 512β -
Χρονοδιακόπτης 8 bit 2 τεμ -
Χρονοδιακόπτης 16 bit 1 PC 16 τεμ
PWM 3 κανάλια 6 κανάλια
USART 1 PC 1 PC
SPI 1 PC 1 PC
I2C 1 τεμάχιο (TWI) 1 PC
ADC 8 κανάλια 10 bit 16 κανάλια 12 bit
Θρέψη 2,7 - 5,5 2,4 - 3,6
Ταχύτητα 0 - 16 MHz 48MHz με εξωτερικό 4 - 32MHz
Τιμή 160 - 170 τρίψτε. 80 - 140 τρίψτε.
Όπως μπορείτε να δείτε από τον πίνακα, το STM32 είναι αρκετά πιο ενδιαφέρον και πιο πλούσιο από το AVR. Υπάρχει πραγματικά ένα μικρό πράγμα. Το STM32 δεν έχει EEPROM, αλλά έχει DMA που απλώς σκοτώνει εντελώς το AVR. Είναι αλήθεια ότι το AVR διαθέτει Arduino και εύκολο προγραμματισμό. Δεν διαφωνώ, αλλά το STM32 έχει STM32Cube, το οποίο δημιουργεί κώδικα για το IAR και φροντίζει για ολόκληρη τη ρουτίνα της ρύθμισης των περιφερειακών. Και το τελευταίο καρφί στο φέρετρο του AVR είναι το RTOS. Ναι, μπορείτε επίσης να το εγκαταστήσετε σε ένα AVR, αλλά πρέπει να το καταλάβετε, αλλά στο STM32 τσεκάρουμε το πλαίσιο "FREERTOS" και αυτό είναι. Το ίδιο το σύστημα θα κάνει ό,τι χρειάζεται, και το μόνο που έχουμε να κάνουμε είναι να δημιουργήσουμε νήματα και να γράψουμε κώδικα σε αυτά. Λοιπόν, αυτό είναι μόνο για αρχή. Στην πραγματικότητα, όλα είναι λίγο πιο περίπλοκα εκεί. Με λίγα λόγια, μου αρέσει το STM32 και για να σας κερδίσω επιτέλους σε αυτή την πλατφόρμα, ρίχνοντας το Arduino στο συρτάρι του γραφείου σας, θα δημιουργήσω έναν πίνακα από την αρχή μέχρι το τέλος και θα σας δείξω πώς να τον δουλέψετε. Α, ξέχασα. Όλα τα STM32 διαθέτουν πρόγραμμα εντοπισμού σφαλμάτων SWD. Αυτά είναι τρία καλώδια SWDIO, SWCLK, GND και μπορείτε να μεταβείτε σε γραμμές κώδικα απευθείας στο υλικό, και όχι όπως το ATmega328 σχεδόν στο Proteus. Για να το κάνετε αυτό, χρειάζεστε απλώς τον γενικό προγραμματιστή ST-LINK. Μπορεί να χρησιμοποιηθεί εάν αγοράσετε μια πλακέτα Discovery ή έναν ξεχωριστό προγραμματιστή. Και τώρα από τα λόγια στις πράξεις.
Σχέδιο. Μεγαλύτερος
Έφτιαξα αυτήν την πλακέτα ως μονάδα για την πλακέτα εντοπισμού σφαλμάτων για AVR. Αλλά μπορείτε να το επαναλάβετε διανέμοντας τον πίνακα κατά την κρίση σας (θα δημοσιεύσω ένα έργο για το DipTrace στο τέλος του άρθρου). Τι φαίνεται στο διάγραμμα. Και το διάγραμμα δείχνει μια απλή πλεξούδα όπως για το AVR. Χαλαζίας 8 MHz με δύο πυκνωτές 20p. Όπως και στο AVR, το κύκλωμα τροφοδοσίας για την υποστήριξη ADC είναι συναρμολογημένο. Επαναφέρετε το κύκλωμα όπως το AVR. Η μόνη διαφορά είναι το κύκλωμα BOOT. Σε αντίθεση με τα AVR, όλα τα STM32 διαθέτουν ενσωματωμένο bootloader υλικού. Από προεπιλογή είναι συνδεδεμένο στο USART. Δηλαδή, εάν πατήσετε τον ακροδέκτη BOOT0 στο τροφοδοτικό και επανεκκινήσετε το MK, τότε χρησιμοποιώντας το πρόγραμμα Flash Loader Demonstrator μπορείτε να αναβοσβήσετε το MK χωρίς προγραμματιστή. Αυτό το χαρακτηριστικόχρήσιμο εάν έχετε ήδη μια έτοιμη και λειτουργική συσκευή και πρέπει να ενημερώσετε το υλικολογισμικό, τότε χρειάζεστε μόνο έναν προσαρμογέα USB USART. Πολλοί άνθρωποι δεν θέλουν να μπλέξουν με το STM32 επειδή η τροφοδοσία δεν υπερβαίνει τα 3,6 βολτ. Ανοησίες. Αν κοιτάξετε το τραπέζι με καρφίτσα, θα παρατηρήσετε ότι όλα τα πόδια μπορούν να λάβουν 5 βολτ χωρίς συνέπειες. Ας προχωρήσουμε.

Και έτσι φαίνεται εγκατεστημένο στην πλακέτα.

Τώρα συνδέουμε τον προγραμματιστή ST-LINK-GA στην υποδοχή SWD.

Τώρα που όλα είναι έτοιμα, κατεβάστε την πιο πρόσφατη έκδοση από τον ιστότοπο του ST (σύνδεσμος στο κάτω μέρος της σελίδας). Εγκατάσταση και εκκίνηση.

Κάντε κλικ στο Νέο έργο. Και στο παράθυρο που εμφανίζεται βρίσκουμε τον ελεγκτή μας. Κάντε κλικ στο OK.

Μετά από λίγη σκέψη. Το πρόγραμμα θα εμφανίσει ένα παράθυρο σαν αυτό.

Δεν θα περιγράψω τι και γιατί, καθώς αυτό είναι το θέμα ενός ξεχωριστού άρθρου. Τώρα, για παράδειγμα, απλώς κάνε αυτό που σου δείχνω. Τι κάνουμε. Θα ξεκινήσουμε λειτουργικό σύστημακαι σε ένα μόνο νήμα θα αναβοσβήνουμε το LED. Ένα είδος "Heloy Word" από ένα κανόνι.))) Για να το κάνετε αυτό, στο αριστερό παράθυρο, κάντε κλικ στο σύμβολο συν δίπλα στην επιγραφή "FREERTOS" και βάλτε ένα σημάδι στην αναπτυσσόμενη λίστα.

Επιπλέον, μόλις επιλεγεί ο εξωτερικός χαλαζίας, στη δεξιά πλευρά του ελεγκτή τα πόδια στα οποία πρέπει να τον κρεμάσετε θα τονιστούν με πράσινο χρώμα. Το επόμενο πράγμα που πρέπει να κάνετε είναι να επιλέξετε το πόδι στο οποίο θα κρέμεται το LED. Διάλεξα τη θύρα Β και την καρφίτσα 0. Και βρήκα μια τσουγκράνα. Από φόβο, δεν ξέρω γιατί, γύρισα ανάποδα τη χτένα εξόδου των τεσσάρων πρώτων ακίδων. Εξ ου και η σύγχυση στη θύρα Β. Αυτό το πρόβλημα επηρεάζει μόνο την πλακέτα μου. Αλλά τίποτα, αυτό δεν εμπόδισε το MK να λειτουργήσει. Και έτσι διαμορφώστε την καρφίτσα. Το γεγονός είναι ότι με το STM όλες οι ακίδες μπορούν να λάβουν μια δέσμη τιμών, αλλά αν αγγίξετε τη διακριτή είσοδο/έξοδο, τότε μπορεί να υπάρχουν τρεις επιλογές για την έξοδο. Έξοδος στον αέρα, έξοδος με pull-up στο τροφοδοτικό συν, έξοδος με pull-up στον κοινό δίαυλο. Από προεπιλογή, το STM32CubeMX κρεμάει το πόδι του στον αέρα. Λοιπόν, ας είναι, πρέπει απλώς να ελέγξουμε τη δουλειά και να δείξουμε τη δύναμη του STM32. Για να διαμορφώσετε το σκέλος, πρέπει να κάνετε αριστερό κλικ πάνω του και να επιλέξετε GPIO_Output στο παράθυρο που εμφανίζεται. Εάν το MK είναι πολύ μικρό, μπορείτε να γυρίσετε τον τροχό και να τον μεγεθύνετε.)))

Το επόμενο βήμα είναι να ρυθμίσετε το ρολόι MK. Το γεγονός είναι ότι το STM32 είναι πολύ ασαφές με αυτό το θέμα. Σε αντίθεση με το AVR, το STM32 έχει χαλαζία στην είσοδο με συχνότητα από 4 έως 32 MHz και στους διαύλους μπορεί να υπερχρονιστεί στα 48 MHz. Μέσα στο MK υπάρχει ένα πολύ περίπλοκο σύστημα χρονομέτρησης, αλλά το STM32CubeMX έρχεται και πάλι να μας βοηθήσει. Μεταβείτε στην καρτέλα Clock Configuration και διαμορφώστε την όπως στην παρακάτω εικόνα.

Αυτό είναι όλο. Κάντε κλικ στο εικονίδιο με το γρανάζι στην κορυφή.

Θα εμφανιστεί ένα παράθυρο σαν αυτό.

Και εδώ ξέχασα να πω. Κατεβάστε και εγκαταστήστε το IAR μόνοι σας. Μπορεί να γίνει λήψη από τους υπαλλήλους αλλά μειωμένο σε ποσότητα κώδικα ή μπορεί να βρεθεί σε torrents. Ή αν έχετε πολλά επιπλέον χρήματα, μπορείτε να αγοράσετε μια άδεια. Λοιπόν, νομίζω ότι πολλοί θα ακολουθήσουν το μονοπάτι με το CodeVisionAVR. Σε γενικές γραμμές, το αφήνω στην κρίση σας. Έχω την έκδοση 7.40. Ας επιστρέψουμε στον Κύβο. Στο παράθυρο, ονομάστε το έργο, αλλά μόνο στα λατινικά, στο IAR δεν αρέσουν τα ρωσικά γράμματα στα μονοπάτια. Και καθορίστε πού θα αποθηκευτεί το έργο. Στο παράθυρο IDE πρέπει να επιλέξετε (και είναι από προεπιλογή) EWARM. Κάντε κλικ στο OK. Το πρόγραμμα σκέφτεται και μετά εμφανίζει ένα παράθυρο σαν αυτό. Μπλα μπλα μπλα. Γενικά, κάντε κλικ στο άνοιγμα του έργου (για όσους είναι στη δεξαμενή, το μεσαίο κουμπί).

Το παράθυρο θα εξαφανιστεί και το IAR και το έργο μας θα ξεκινήσουν. Στα αριστερά πηγαίνετε στο Aplication->User και εκτελέστε το main.c. Αυτό το μάτσο κώδικα είναι αυτό που δημιούργησε το STM32CubeMX για εμάς.

Και τι να κάνουμε τώρα με αυτόν τον τρόμο; Αλλά για αυτό χρειαζόμαστε μια ολόκληρη σειρά άρθρων))) Και τώρα βρίσκουμε αυτό το κομμάτι κώδικα.

Αυτή είναι η μόνη μας ροή. Στο σώμα για βρόχο(;;) διαγράφουμε τη μοναδική συνάρτηση osDelay(1); και αντ' αυτού γράφουμε αυτόν τον κώδικα. HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
osDelay(500);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
osDelay(500);

Εκπληκτικός. Τώρα απλώς κάντε κλικ στο κουμπί με το πράσινο βέλος επάνω δεξιά και περιμένετε για τη συλλογή και τη λήψη.

Εάν όλα είναι σωστά και χωρίς σφάλματα, τότε το πρόγραμμα θα συναρμολογήσει ολόκληρο το έργο, θα δημιουργήσει όλα όσα χρειάζονται και θα φορτώσει το υλικολογισμικό στο MK. Μετά από αυτό θα μεταβεί σε λειτουργία εντοπισμού σφαλμάτων. Να τος. Το όνειρο ενός άνδρα AVR. Εάν έχετε μια ακαταμάχητη επιθυμία να το χρησιμοποιήσετε, τότε μπορείτε απλώς να προχωρήσετε βήμα προς βήμα στο υλικό, γραμμή προς γραμμή. Και αν θέλετε να δείτε πώς λειτουργεί το πρόγραμμα, πατήστε το σταυρό πάνω αριστερά και απολαύστε το αναβοσβήσιμο του LED.

Αυτό είναι όλο. Οι μικροελεγκτές μπορούν να αγοραστούν στη χαμηλότερη τιμή, έως και 78 ρούβλια το τεμάχιο στο κατάστημα ChipResistor. Λοιπόν, αν το θέλεις φθηνότερο, υπάρχει και μικρή χονδρική. Από 35 κομμάτια ήδη για 50 ρούβλια.
Έργο για το DipTrace.
Και φυσικά το βίντεο.


επισκέπτης 31/12/15 10:35

Πρόσφατα ήθελα να φτιάξω έναν μετρητή συχνότητας στο ATMEGA16 συν έναν εξωτερικό μετρητή 8 bit στο λογικό 74, δεν ήταν αρκετά γρήγορος. Το AVR είναι του περασμένου αιώνα, δεν είναι φθηνό χειριστήριο. Θα υποστηρίξω τον συγγραφέα, το AVR είναι Το στάδιο έχει περάσει, αγόρασα επίσης ένα τσιπ stm32f100 συν ένα τσιπ προσαρμογέα USB CP2103, σύντομα όλοι θα εγκαταλείψουν το AVR.

Alexey 31/12/15 12:26

Διαφωνώ. Ακόμα, το Arduino εξακολουθεί να αναπτύσσεται και πολλοί είναι γαντζωμένοι σε αυτό, και το τελευταίο, με τη σειρά του, λειτουργεί στο AVR. Η μετάβαση στο STM είναι σαν να πηγαίνεις στο επόμενο επίπεδο. Να το πω έτσι, από το νηπιαγωγείο στο σχολείο.

ΑΝΩΝΥΜΟΣ 12.02.16 10:44

Οι AVR και STM32 είναι επεξεργαστές που δεν ανταγωνίζονται μεταξύ τους. Το πιάτο σας δεν περιέχει την πιο σημαντική παράμετρο - αυτή είναι η τρέχουσα κατανάλωση!! Και κοιτάζοντάς τους, μπορείς να ρίξεις ένα δάκρυ. Atmega 328 - – Ενεργή λειτουργία: 0,2 mA – Λειτουργία απενεργοποίησης: 0,1 μA – Λειτουργία εξοικονόμησης ενέργειας: 0,75 μA (Συμπεριλαμβανομένου RTC 32 kHz) STM32F030K6T6 48 MHz - Ενεργή Λειτουργία: Περιφερειακά σε λειτουργία mA153 ανά κορυφή. Το 0,048 mA STM32 καταναλώνει ηλεκτρική ενέργεια ανελέητα - χοντρικά, 100 φορές περισσότερο από το AVR. Δεν μπορείτε να τροφοδοτήσετε μια συσκευή STM32 από μπαταρία. Αλλά τα AVR θα λειτουργούν για μήνες. Οπότε είναι δύσκολο να εγκαταλείψεις το AVR. Καλή τύχη σε όλους.

Alexey 02/12/16 10:54

Και κανείς δεν προτείνει να εγκαταλείψουμε το AVR. Απλώς δείχνω τη διαφορά στην περιφέρεια. Διατηρώ ακόμα τη βιβλιοθήκη AVR και εξακολουθώ να έχω ένα ATMega8A ως κύριο MCU.

Σεργκέι 24/02/16 18:02

Κατά τη γνώμη μου, είναι κάπως περίεργο να συγκρίνουμε το φρέσκο ​​STM32 με το αποσυρμένο AVR. Αν θέλετε να συγκρίνετε το STM32 με ελεγκτές ATMEL, τότε συγκρίνετε τους με την οικογένεια ATSAM, αλλά όχι με το AVR.

Andrey 24.02.16 18:06

Ποιος είναι αυτός ο συνταξιούχος; Το AVR είναι ζωντανό και θα συνεχίσει να ζει για ποιος ξέρει πόσο καιρό. Και κοιτάζοντας τον πίνακα, κατά τη γνώμη μου η σύγκριση είναι περισσότερο στην περιφέρεια, και όχι στην αρχιτεκτονική.

Alexey 24.02.16 19:04

Λοιπόν αρχίζει. Ας συζητήσουμε τώρα την AMD και την Intel.

Σεργκέι 24/02/16 22:02

Στο hub, ένας «ειδικός» έγραψε ότι το AVR δεν έχει παράλληλο δίαυλο για τη σύνδεση τυπικής LCD, αλλά το STM32 έχει...

Alexey 24.02.16 22:36

Τι σημαίνει τυπική οθόνη LCD; Πρόκειται για το FSMC; Αυτό λοιπόν δεν είναι μόνο για την οθόνη, είναι και για τη μνήμη. Μόνο ένα παράλληλο λεωφορείο. Το έχει και το AVR πχ Mega8515. Η SRAM μπορεί να συνδεθεί σε αυτήν μέσω ενός καταχωρητή κλειδώματος.

Sergets 25/02/16 06:24

Alexey, τι λέω;! Φαίνεται ότι δεν προσπαθείς καν να καταλάβεις το νόημα των μηνυμάτων μου.

Alexey 25/02/16 09:38

Λοιπόν, τι νόημα έχει να συγκρίνεις δύο πανομοιότυπους μικροελεγκτές από διαφορετικές εταιρείες; Και τα δύο είναι στον πυρήνα ARM. Εάν είστε πραγματικά επιλεκτικοί, τότε πρέπει πραγματικά να συγκρίνετε το AVR με το STM8. Μετά κόλλησα στην εγγύτητα της περιφέρειας, του συντελεστή μορφής και της τιμής. Και απλά διαφορετική αρχιτεκτονική.

Adlan 03.06.16 17:40

Γειά σου. Βοηθήστε, παρακαλώ, όποιος μπορεί. Εγκατεστημένο τελευταία έκδοση Cuba 4.15, F1 Libraries 1.4.0. Το κενό έργο που δημιουργήθηκε στο EWARM δεν μεταγλωττίζεται - υπάρχουν περισσότερα από εκατό σφάλματα. Τι θα μπορούσε να είναι? Ευχαριστώ [email προστατευμένο]

Alexey 06/03/16 20:48

Adlan, το πρώτο πράγμα που πρέπει να κάνετε είναι να ανεβάσετε ένα έργο που δεν θα μεταγλωττιστεί.

Έγγραφο 18/07/16 21:51

"Είναι αλήθεια ότι το AVR μπορεί να υπερηφανεύεται για το Arduino και τον απλό προγραμματισμό." ΤΙ μπορεί να καυχιέται; ;ΡΕ

Alexey 19/07/16 11:41

Αυτή είναι μια ανόητη σύγκριση. Πρώτον, το STM έχει ένα ανάλογο του Arduino που ονομάζεται nucleo. Τα προγράμματα γράφονται στο διαδικτυακό IDE απευθείας μέσω του προγράμματος περιήγησης. Αλλά αν τα πλεονεκτήματα της πέτρας προσωπικά, τότε. Η βασική συχνότητα λειτουργίας είναι 72 MHz, το AVR δεν θα μπορούσε καν να ονειρευτεί μια τέτοια ταχύτητα. Φυσικά, αν αναβοσβήσετε το LED, τότε δεν υπάρχει διαφορά, αλλά αν ξεκινήσετε τον άξονα και ένα σωρό περιφερειακά, το AVR θα σβήσει. Η χωρητικότητα bit, το 32 απέχει πολύ από το 8. Τα περιφερειακά στο STM μπορούν να περιέχουν 3 I2C, 3 SPI, 6 UART, USB, CAN, Ethernet. Σχεδόν τα πάντα έχουν τη δυνατότητα να αναπαριστούν, δηλαδή να μεταφερθούν σε άλλα σκέλη του mk. Υπάρχει επίσης DMA, αυτός είναι ένας ανεξάρτητος συνεπεξεργαστής για εργασία με περιφερειακά. Έτσι οι διακοπές AVR καπνίζουν νευρικά στο περιθώριο. Υπάρχει ένα υλικό SDIO για ολοκληρωμένη εργασίαμε κάρτες CD, και όχι δεκανίκι ISP στο AVR. Σε γενικές γραμμές, υπάρχουν πολλά περισσότερα εκεί, αλλά η μεγαλύτερη πέτρα στον κήπο του AVR είναι η θόρυβος. Το να χτυπήσετε το AVR με ένα καλώδιο που τρέχει κοντά από τον ηλεκτρικό κινητήρα είναι αδιανόητο, αλλά το STM πρέπει να δοκιμαστεί. Επομένως, δεν θα συνιστούσα να είστε σαρκαστικά με το Arduino.

επισκέπτης 08/11/16 23:27

MICROCHIP απορροφημένο AVR!)))))))))))

Alexey 08/12/16 08:35

Αργήσαμε με τα νέα, όπως πριν από πέντε χρόνια.

Vladimir 17/08/16 22:56

Αλεξέι! Τον Ιανουάριο του 2016, η Microchip αγόρασε την Atmel για 3,56 δισεκατομμύρια δολάρια. Τι 5 χρόνια;

Alexey 18/08/16 10:30

Αυτό είναι de jure, αλλά de facto συμβαίνει από το 2008. Οπότε έκανα πραγματικά ένα λάθος, όχι 5 χρόνια, αλλά πριν από 8 χρόνια.))))

Vladimir 18/08/16 23:53

Alexey! Άρχισα να αλλάζω στο stm32! Και όσον αφορά την κατανάλωση σε αυτόνομη λειτουργία, συμβουλεύει να μην χρονομετρήσετε τα πάντα, τότε το ρεύμα κατανάλωσης θα μειωθεί.

Oleg 09.11.16 22:31

Στο δελτίο δεδομένων στο STM δεν βρήκα γραφήματα της κατανάλωσης του ρολογιού του συστήματος CLK όπως στο AVR - και σύμφωνα με αυτές τις πινακίδες που υπάρχουν, το STM32 χάνει εντελώς και σε κανονική λειτουργία και σε κατάσταση αδράνειας. Ναι, και αυτό το STM32 δεν έχει ρολόι 72 MHz - μόνο 48 max, αυτό είναι όλο, οπότε ακόμα και με 32 bit 8 beatnik AVR - αποδεικνύεται καλύτερο, και παρεμπιπτόντως, ο κατασκευαστής στο φύλλο δεδομένων δεν έγραψε πόσα ρολόι στον κύκλο μηχανής STM32 που έχει, οπότε αν αποδειχθεί ότι είναι 2 κύκλοι ρολογιού έναντι 1 για το AVR - τότε θεωρήστε ότι 48/2 = 24 πραγματικά MHz - σχεδόν το ίδιο με τα 20 MHz για το AVR. Το ερώτημα λοιπόν είναι - πού είναι το θαύμα αυτού του STM32 για το οποίο όλοι μιλάτε;

ΑΝΩΝΥΜΟΣ 09.11.16 23:03
Alexey 10/11/16 00:23

Δεν θέλω καν να διαφωνήσω. Ποια είναι καλύτερη η Intel ή η AMD; Ή Ζιγκουλί ή Βόλγα; Η STM διαθέτει υλικό USB, CAN, Ethernet, SDIO και ένα σωρό άλλα περιφερειακά που το AVR μπορεί μόνο να ονειρευτεί. Στο τέλος, υπάρχει ένας DMA ως ανεξάρτητος συνεπεξεργαστής με άμεση πρόσβαση στη μνήμη μπροστά από τον οποίο όλα τα AVR διακόπτουν νευρικά καπνό στο περιθώριο. Για παράδειγμα, η πρώτη σειρά έχει 3 UART, 2 SPI, 3 I2C επί του σκάφους. Υπάρχει μια νέα χαρτογράφηση των θυρών και δεν χρειάζεται να ανησυχείτε για το πώς να αποσυναρμολογήσετε την πλακέτα. Αν σας αρέσει να δουλεύετε με AVR, τότε δουλέψτε όποιον σας ενοχλεί. Μέχρι σήμερα, φτιάχνω μέγα όγδοους για μικρά έργα και δεν παραπονιέμαι. Ω ναι, κολλήστε το AVR δίπλα στη μίζα και προσέξτε πώς βγάζει το κεφάλι του με παρεμβολές. Το AVR δεν διαθέτει προστασία EMI. Επομένως, τα PIK τοποθετούνταν πάντα σε συναγερμούς αυτοκινήτων, αφού το AVR πεθαίνει σε τέτοιες συνθήκες. Γιατί να μαλώσετε, είναι νεκρός αριθμός.

Cornet 27.11.16 21:22

Λοιπόν, παρεμπιπτόντως, υπάρχει ήδη ένα Arduino στο STM32. Αυτό είναι το Amperka και όλα τα είδη Espruino στο JS) Επιπλέον, αν το Microchip το πήρε η Atmel, καλά, βιδώστε τα

Alexey 27.11.16 21:44

Το όνομα Espruino παρωδεί το Arduino, την πιο διάσημη πλατφόρμα χόμπι εκείνη την εποχή, αλλά το Espruino δεν είναι συμβατό με το κλασικό Arduino Unoούτε μηχανικά ούτε προγραμματικά.(απόσπασμα από Amperka)
Έχω επίσης μια πλακέτα Nucleo και επίσης δεν έχει καμία σχέση με το Arduino, εκτός από τη γεωμετρία της ίδιας της πλακέτας)))
Γενικά, στην ουσία χρησιμοποιώ το MK που είναι κατάλληλο για την τρέχουσα εργασία.

Andrey 20/12/16 22:50

Ποιος θέλει να πληρώνει υπερβολικά: αξίζει attiny2313-20 - 2Kb-flash /128bit-ram/16bit_ timer -1/8bit_ timer -1 =2,1$ vs stm32f103c8t6 64Kb-flash/20Kb-sram/16BIT dead timer για dual timer -λειτουργία PWM καναλιού ) -4/ADC-2/72MHz CPU/=2,3$ Κατά τη γνώμη μου, η κατασκευή ενός μετρητή αντίστασης για ένα κύκλωμα RLC χρησιμοποιώντας ένα AVR είναι σχεδόν αδύνατο ή υπάρχουν 10 πέτρες. Αλλά μπορείτε να το κάνετε με STM και FFT (το DMA βοηθάει). Το δοκίμασα με κάποιο τρόπο να φτιάξω έναν μετρητή συχνότητας στο Mega10 (ακρίβεια 1 hertz) - απλά δεν ήταν αρκετά γρήγορο (ή εγκαταστήστε έναν εξωτερικό μετρητή 32 bit με καταχωρητή μετατόπισης - από όπου προέρχονται οι διαστάσεις Παράτησα το AVR πριν από ένα χρόνο, το AVR είναι, αποδεικνύεται, για πλούσιους ανθρώπους.

Andrey 20/12/16 22:53

Ο ΑΝΩΝΥΜΟΣ έγραψε - "Και εδώ είναι άλλο ένα απόσπασμα από την περιγραφή του STM32 στα ρωσικά - "...Με
στιγμή
λήψη
διακόπτει
πριν
ξεκίνησε
εκτέλεση
πρώτα
της ομάδας
χειριστής
διακόπτει
ξοδεύεται
μόνο
δώδεκα
κύκλους
ρολόι
σήμα"

Αυτό είναι αλήθεια.Αλλά πολλαπλασιάστε δύο αριθμούς 32-bit με avr - σαφώς 8-10 κύκλους ρολογιού!

Alexey 20/12/16 23:31

Ναι, λυπάμαι ήδη που ξεκίνησε αυτό το halivar.))))

Αλέξανδρος 21.12.16 00:27

Διάβασα τα σχόλια και θυμήθηκα.
Δύο παιδιά στο sandbox
Μία ντουτούκα!
Δεύτερον, μπιπ!
Πρώτα, Ντουντούκα! (επιτονισμός πιο απειλητικός)
Δεύτερον, ΜΠΙΜΠΙΚΑ! (Με ακόμη πιο εκφραστικό τονισμό)
Το πρώτο DUDUKA! (Ήδη ουρλιάζει)
Δεύτερη ΜΠΙΜΠΙΚΑ!!! (Σχεδόν κλαίει)
....
Αυτή η μάχη τελείωσε, και οι δύο στέκονται και κλαίνε, ο ένας πιο δυνατά από τον άλλο.)))

Val 02/10/17 01:43

Ποια συχνότητα θα είναι αν κάνετε βρόχο χωρίς καθυστέρηση;
ενώ (1)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
}

Alexey 10.02.17 10:07

Αυτό στο λεωφορείο APB

Igor 06/08/17 22:33

Ας ενσωματώσουμε λοιπόν αμέσως φορητούς υπολογιστές σε ενσωματωμένα συστήματα, είναι εκατοντάδες φορές καλύτεροι από το STM, και υπάρχουν πολλά περιφερειακά εκεί, υπάρχει ήδη Wi-Fi και bluetooth και ακόμη και προγραμματιστές δεν χρειάζονται, αμέσως υπάρχει μια οθόνη με ένα πληκτρολόγιο για να γράψετε ένα πρόγραμμα και να το εκτελέσετε αμέσως, και δεν χρειάζονται προγραμματιστές και προγράμματα εντοπισμού σφαλμάτων.
Είναι σαν να αγοράζετε έναν εκσκαφέα για προσωπική σας χρήση στη ντάκα σας για να σκάψετε μερικές φορές μερικές τρύπες σε βάθος μισού μέτρου.
Βάζοντας STM σε θερμοστάτη, ρολόι, ζυγαριά, καλά, κατά τη γνώμη μου, αυτό δεν είναι φυσιολογικό. Παρεμπιπτόντως ναι, πόσο μάλλον μη-πτητική μνήμη, οπότε φτιάχνω θερμοστάτη, ρυθμίζω τη θερμοκρασία, μετά σβήνουν τα φώτα, οπότε τι, χάνονται οι ρυθμίσεις. Αλλά σε ενσωματωμένα συστήματα που πρέπει να ρυθμιστούν μία φορά για περαιτέρω λειτουργία, οι τιμές πρέπει να αποθηκευτούν για πάντα

Alexey 06/09/17 08:25

Λοιπόν, για παράδειγμα, το chip-dip STM32F030F4P6 κοστίζει 48 ρούβλια και το άμεσο αναλογικό ATtiny2313 κοστίζει 98 ρούβλια. Νομίζω ότι οποιοδήποτε από αυτά θα είναι αρκετό για την κατασκευή ενός θερμοστάτη. Και η αντιστάθμιση μνήμης για STM μπορεί να είναι σε οποιονδήποτε αισθητήρα θερμοκρασίας. Ναι, τουλάχιστον στο ίδιο DS18B20. Όσον αφορά τους φορητούς υπολογιστές, κάθε τερματικό αποδοχής πληρωμών έχει εγκατεστημένο υπολογιστή με λειτουργικό σύστημα και οθόνη. Υπάρχουν λοιπόν και τέτοια συστήματα. Όταν επιλέγετε ένα MK, πρώτα απ 'όλα, επιλέξτε αυτό που είναι φθηνότερο. Εάν αυτό είναι ένα χόμπι, τότε μπορείτε να αγοράσετε ένα Arduino για να μην ενοχλείτε με τη συγκόλληση και όταν το σύστημα σχεδιάζεται να τεθεί σε παραγωγή και να παραχθεί σε εκατοντάδες, τότε κάθε δεκάρα μετράει. Και το να πληρώνεις 50 ρούβλια για ένα MK όταν η τιμή του είναι 48 είναι μια απρόσιτη πολυτέλεια.

Ruslan 17/06/17 21:46

Alexey, γιατί επιλέξατε το περιβάλλον προγραμματισμού IAR;
Ποιο περιβάλλον είναι καλύτερο να επιλέξει ένας αρχάριος (έτσι ώστε να υπάρχουν πολλές συμβουλές όπως στο Atmel Studio)?

Alexey 17/06/17 22:07
Ruslan 17/06/17 22:56
Αν δεν μου φάνηκε «κακή», τότε δώστε μου έναν σύνδεσμο όπου μπορώ να κοιτάξω ή να διαβάσω πώς να το κάνω!
Ακόμα καλύτερα, κάντε ένα βίντεο, νομίζω ότι πολλοί αρχάριοι (και όχι μόνο) θα ενδιαφέρονται να το δουν!
Ευχαριστώ εκ των προτέρων!
Alexey 08/05/17 10:19
Ruslan 22.11.17 12:17

Αυτό εννοούσα https://www.youtube.com/watch?v=wOIlhRd-vN8
5 - 7 λεπτά!!!

Ruslan 22.11.17 12:18

Alexey, πες μου πώς να δουλεύω με τις απαριθμήσεις "enum", διαφορετικά δεν υπάρχουν πουθενά τέτοιες πληροφορίες και στα βίντεό σου δεν υπάρχει επίσης το "C for the smallers", αλλά το χρειάζομαι πραγματικά!
Όταν έπαιζα με AVR, δεν είχα δει ποτέ τέτοιο θαύμα όπως η απαρίθμηση, αλλά τώρα με ενδιαφέρουν τα STM, και υπάρχουν πολλά από αυτά! Και δεν υπάρχουν πληροφορίες για το πώς να συνεργαστείτε μαζί τους!
Ακολουθεί ένα παράδειγμα από πραγματικό κώδικα:


StatusCode MIFARE_Read (byte blockAddr, byte * buffer, byte * bufferSize);

Πού είναι η απαρίθμηση StatusCode:


enum Κωδικός κατάστασης: byte (
STATUS_OK , // Επιτυχία
STATUS_ERROR , // Σφάλμα επικοινωνίας
STATUS_COLLISION , // Εντοπίστηκε σύγκρουση
STATUS_TIMEOUT , // Χρονικό όριο στην επικοινωνία.
STATUS_NO_ROOM, // Το buffer δεν είναι αρκετά μεγάλο.
STATUS_INTERNAL_ERROR , // Εσωτερικό σφάλμαστον κώδικα. Δεν πρέπει να συμβεί ;-)
STATUS_INVALID , // Μη έγκυρο όρισμα.
STATUS_CRC_WRONG , // Το CRC_A δεν ταιριάζει
STATUS_MIFARE_NACK = 0xff // Ένα MIFARE PICC απάντησε με NAK.
};

Αυτό είναι από τη βιβλιοθήκη Arduino (C++), αλλά ο Keil το βρίζει!
Πώς να γράψετε σωστά την απόδοση μιας συνάρτησης απαρίθμησης;

Ruslan 22.11.17 12:29

Και πώς να δηλώσετε ένα από τα ορίσματα σε μια συνάρτηση που είναι απαρίθμηση:


void PCD_WriteRegister(PCD_Register reg, τιμή byte);

Όπου αναφέρεται το PCD_Register:


enum PCD_Register: byte (
// Σελίδα 0: Εντολή και κατάσταση
// 0x00 // δεσμευμένο για μελλοντική χρήση
CommandReg = 0x01<< 1, // starts and stops command execution
ComIEnReg = 0x02<< 1, // enable and disable interrupt request control bits
DivIEnReg = 0x03<< 1, // enable and disable interrupt request control bits
ComIrqReg = 0x04<< 1, // interrupt request bits
...
};

Και το reg, όπως καταλαβαίνω, είναι απαρίθμηση, αλλά δεν δηλώνεται πουθενά στον κωδικό και δεν καταλαβαίνω από πού προήλθε!
Διάβασα πολλές σελίδες στο Διαδίκτυο και βρήκα πληροφορίες ότι αυτές οι απαριθμήσεις μπορούν να αντικατασταθούν με ορισμούς, αλλά παρόλα αυτά ήθελα να μάθω πώς να δουλέψω με αυτές!!!

Ruslan 22.11.17 12:35

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

Ντμίτρι 28.11.17 22:02

"απλός προγραμματισμός"

Ένα ενδιαφέρον όργανο για ελεγκτές προγραμματισμού. Γενικά, δεν είναι σαφές πώς ήταν δυνατή η σύγκριση 32-bit με 8-bit. Σαν μια Porsche Cayenne με Zarporozhets.

Alexey 29/11/17 10:24

Μπορείτε να συγκρίνετε, μπορείτε. Απλά πρέπει να λάβετε υπόψη ότι σε αυτή τη σύγκριση η Porsche είναι φθηνότερη από την Zaporozhets. Όσον αφορά την ουρολογία, είναι πιο πικάντικο. Οπότε δεν θα το φτιάξω.

Κωνσταντίνου 23/12/17 00:06

Ruslan, δεν καταλαβαίνω πώς ψάχνεις και δεν βρίσκεις τίποτα (προφανώς δεν ψάχνεις). Αυτά είναι τα πολύ βασικά της γλώσσας C (όχι μόνο για MK, αλλά και για υπολογιστές). Διαβάστε το βιβλίο των Kernighan και Ritchie, όλα τα C περιγράφονται τέλεια εκεί.
Και κανείς δεν θα απαντήσει στις ερωτήσεις σας, αυτό είναι στοιχειώδες πράγμα.

ΑΝΩΝΥΜΟΣ 11.02.18 16:27

Γιατί συγκρίνεις το 32-bit ST MK με το 8-bit Atmel. Χαζή σύγκριση. Είναι ισοδύναμο με τη σύγκριση του 32-bit Atmel AT91SAM με το 8-bit STM8, ακόμη και αν σκεφτεί κανείς ότι η Atmel έχει 32 ακόμη πιο ισχυρούς εκφορτιτές

Alexey 13/02/18 12:18

Επειδή τη στιγμή που γράφτηκε το άρθρο, τα ST 8 ζωνών δεν ήταν σε πώληση και το mega και το STM32 έχουν την ίδια τιμή.

STM32_Dev 19/06/19 13:59

Λοιπόν, το AVR θέλει 4-5 κύκλους ρολογιού για να κάνει το ίδιο πράγμα!!! Μόλις. Και εδώ πάλι αποδεικνύεται ότι το AVR είναι καλύτερο από το STM32, με το φουσκωμένο ρολόι του, και το STM32 δεν έχει EEPROM μέσα όπως το AVR

Ρολόι AVR στα 16 MHz - 1/16000000 = 0,0000000625 s = 62,5 ns * 5 ρολόγια = 312,5 ns.
Ρολόι ARM στα 48 MHz - 1/48000000 = 0,0000000208 s = 20,8 ns * 12 ρολόγια = 250 ns.

Φαίνεται ότι το μουσείο atmega μετρά τους 5 κύκλους ρολογιού του περισσότερους από τους 12 κύκλους ρολογιού του STM32)))

Το STM32 δεν έχει eprom; Σίγουρος? STM32L152 - 8kB eprom! Τι γίνεται με το atmega; 512 Byte; Αχ τόσα πολλά!!! Δεν ξέρω καν τι να γράψω εκεί. Ας σκεφτούμε... μμμ... 16 μεταβλητές των 4 Byte η καθεμία)) Λοιπόν, είναι απλώς μια καταιγίδα μεταξύ των ελεγκτών))

SIM31 30/06/19 19:29

Από πλευράς κατανάλωσης μπορείς και να συγκρίνεις, τα νέα atmega και attiny είναι πολύ οικονομικά.
Και όλα έχουν τη χρήση τους. Εάν χρειάζεστε τροφοδοσία, πάρτε ένα Raspbery Pi 4 και μην ανησυχείτε, η Python έχει ακόμη περισσότερες δυνατότητες, ακόμη και ρυθμίστε έναν ολοκληρωμένο διακομιστή ιστού, ακόμη και εκτελέστε το Quake 3D.
Εάν χρειάζεται να επεξεργαστείτε ροές δεδομένων, υπάρχει ένα pls (δείτε το έργο "Mars Rover" "Mars Rover 2")
Ο συγγραφέας έχει έναν τόνο θετικών, αλλά το γεγονός ότι η Arduina είναι πιο ζωντανή από όλους τους ζωντανούς σημαίνει ότι δεν είναι όλα τόσο απλά.


Για πολλά χρόνια, οι ραδιοερασιτέχνες χρησιμοποιούν μικροελεγκτές οκτώ bit των οικογενειών PIC και AVR. Είναι δημοφιλή λόγω της χαμηλής τους τιμής, της λεπτομερούς τεκμηρίωσης, της ευκολίας προγραμματισμού και της ευκολίας εγκατάστασης. Ωστόσο, αρκετά συχνά υπάρχουν περιπτώσεις όπου η ισχύς ενός τέτοιου μικροελεγκτή δεν είναι αρκετή για να λύσει την εργασία. Το απλούστερο παράδειγμα είναι ένας μετρητής συχνότητας ή μια γεννήτρια σήματος σε έναν μικροελεγκτή, όπου η μέγιστη μετρούμενη ή παραγόμενη συχνότητα εξαρτάται άμεσα από την ταχύτητα επεξεργασίας ή εξόδου πληροφοριών.

Εκτός από την ταχύτητα, οι μικροελεγκτές οκτώ bit έχουν και άλλους περιορισμούς, για παράδειγμα, πολλά μοντέλα AVR έχουν μόνο μία σειριακή θύρα υλικού, η οποία δεν επιτρέπει τη λήψη πληροφοριών από μια εξωτερική συσκευή και την ταυτόχρονη αποστολή των αποτελεσμάτων της επεξεργασίας τους στον καταναλωτή. Για να μην αναφέρουμε τέτοια "κοινά" πράγματα όπως η εμφάνιση πληροφοριών σε μια γραφική ένδειξη, η οποία απαιτεί μεγάλους πόρους τόσο ταχύτητας όσο και μνήμης. Μετά την ανάλυση ορισμένων τέτοιων περιορισμών, ο συγγραφέας κατέληξε στην ιδέα της μετάβασης σε μικροελεγκτές της οικογένειας STM32.

Για παράδειγμα, εξετάστε δύο μικροελεγκτές της ίδιας κατηγορίας τιμής - STM32F103C6 και ATmega328P.

Τραπέζι 1

Τύπος μικροελεγκτή

Μέγεθος επεξεργαστή

Βήμα μολύβδου, mm

Συχνότητα ρολογιού, MHz

Ένταση μνήμης FLASH. KB

Ποσότητα μνήμης RAM, KB

Αριθμός USART

Αριθμός χρονόμετρων 16-bit

Αριθμός γραμμών I/O

Κατά προσέγγιση τιμή, τρίψτε.

Οι συγκριτικές τους παράμετροι δίνονται στον πίνακα. 1. Τα αποτελέσματα σύγκρισης είναι ακόμη και κάπως εκπληκτικά. Ένας μικροελεγκτής 32 bit δεν είναι μόνο πιο ισχυρός από έναν μικροελεγκτή οκτώ bit από σχεδόν όλες τις απόψεις, αλλά είναι και φθηνότερος. Φυσικά, η συγκόλληση ενός μικροελεγκτή με βήμα καρφίτσας 0,5 mm στο σπίτι δεν είναι τόσο εύκολη. Ευτυχώς, στις περισσότερες περιπτώσεις αυτό δεν απαιτείται - υπάρχουν πολλοί τύποι πλακών ανάπτυξης με μικροελεγκτές οικογένειας STM32 στην αγορά, επαρκείς για διάφορες εφαρμογές. Ας τα δούμε πιο αναλυτικά.

STM32F4-DISCOVERY

Αυτή η πλακέτα (που φαίνεται στην Εικ. 1) είναι ίσως η πιο βολική για αρχάριους που μελετούν μικροελεγκτές STM. Πρώτον, έχει ένα μεγάλο σετ περιφερειακών. Εκτός από τον μικροελεγκτή, η πλακέτα περιέχει ένα μικροηλεκτρομηχανικό επιταχυνσιόμετρο, ένα μικρόφωνο, ένα DAC ήχου, δύο υποδοχές USB, ένα κουμπί και τέσσερις λυχνίες LED.

Οι ακίδες του μικροελεγκτή βγαίνουν σε μαξιλαράκια επαφής για την τοποθέτηση των ακροδεκτών στα αριστερά και δεξιά άκρα της πλακέτας, γεγονός που καθιστά εύκολη τη σύνδεση όλων των απαραίτητων εξωτερικών συσκευών σε αυτά. Ο μικροελεγκτής STM32F407VGT6 που είναι εγκατεστημένος στην πλακέτα έχει πολύ καλές παραμέτρους: 1 MB μνήμης FLASH, 192 KB μνήμης RAM και συχνότητα ρολογιού 168 MHz.

Τέλος, η πλακέτα είναι εξοπλισμένη με ενσωματωμένο πρόγραμμα εντοπισμού σφαλμάτων ST-LINK/V2, ο οποίος μπορεί να χρησιμοποιηθεί για τον εντοπισμό σφαλμάτων προγραμμάτων όχι μόνο στον μικροελεγκτή της πλακέτας, αλλά και σε μικροελεγκτές της ίδιας οικογένειας που βρίσκονται σε άλλες πλακέτες. Η μετάβαση σε αυτά γίνεται χρησιμοποιώντας αφαιρούμενο βραχυκυκλωτήρα και τον σύνδεσμο SWD.

Η τιμή του πίνακα είναι περίπου 800 ρούβλια, η οποία μπορεί να θεωρηθεί αρκετά αποδεκτή.

Πίνακας ανάπτυξης STM32F103RBT6

Η επόμενη ενδιαφέρουσα επιλογή είναι μια πλακέτα ανάπτυξης με μικροελεγκτή STM32F103RBT6 (Εικ. 2).

Είναι κάπως πιο αδύναμο από αυτό που ήταν εγκατεστημένο στην προηγούμενη πλακέτα - συχνότητα ρολογιού 72 MHz, 128 KB μνήμης FLASH και 20 KB μνήμης RAM, αλλά οι περιφερειακές συσκευές είναι πολύ ενδιαφέρουσες. Υπάρχει οθόνη αφής TFT με ανάλυση 320x240 pixels και διαγώνιο 2,8", ενσωματωμένη θύρα USB για ανταλλαγή πληροφοριών με υπολογιστή, υποδοχή για κάρτα μνήμης SD, ρολόι χαλαζία 32768 Hz, θήκη για μπαταρία ρολογιού σε πραγματικό χρόνο και υποδοχή ST-LINK για τον εντοπισμό σφαλμάτων προγραμμάτων.

Η τιμή αυτής της πλακέτας είναι επίσης περίπου 800 ρούβλια, αλλά πρέπει να σημειωθεί ότι δεν έχει ενσωματωμένο πρόγραμμα εντοπισμού σφαλμάτων. Για να κάνετε λήψη προγραμμάτων, πρέπει είτε να αγοράσετε ένα ξεχωριστό πρόγραμμα εντοπισμού σφαλμάτων ST-LINK ή να χρησιμοποιήσετε τον πίνακα STM32F4-DISCOVERY που συζητήθηκε παραπάνω

Maple Mini

Η εξωτερική ομοιότητα αυτής της πλακέτας (Εικ. 3) με τις γνωστές μονάδες Arduino είναι εντυπωσιακή. Και αυτό δεν είναι τυχαίο.

Η πλακέτα Maple Mini σχεδιάστηκε ως αντικατάσταση του Arduino Nano. Η γλώσσα προγραμματισμού και το περιβάλλον ανάπτυξης για την οικογένεια μικροελεγκτών AVR που είναι εγκατεστημένα στο Arduino έχουν προσαρμοστεί στην οικογένεια STM. Μεταβείτε στη διεύθυνση http://leaflabs.com/docs/maple-q uickstart.html για λεπτομερείς πληροφορίες σχετικά με τη γλώσσα προγραμματισμού Maple IDE και το περιβάλλον ανάπτυξης.

Η πλακέτα ανάπτυξης διαθέτει έναν μικροελεγκτή STM32F103CBT6 που τρέχει στα 72 MHz, 128 KB μνήμης FLASH και 20 KB μνήμης RAM, που είναι αναμφίβολα περισσότερα από οποιαδήποτε μονάδα Arduino. Και είναι ακόμη πιο πλεονέκτημα ότι το περιβάλλον ανάπτυξης παρέμεινε ουσιαστικά αμετάβλητο.

Ξεχωριστά, σημειώνουμε ότι παρά το μικροσκοπικό του μέγεθος, το Maple Mini παρέχει πολύ διαφορετικά περιφερειακά: 34 γραμμές I/O, δύο κανάλια διασύνδεσης SPI και δύο I2C, τρεις σειριακές θύρες. Αυτό του επιτρέπει να χρησιμοποιηθεί με επιτυχία σε διάφορες ερασιτεχνικές εξελίξεις. Χάρη στο μικρό του μέγεθος, το Maple Mini μπορεί να ενσωματωθεί απευθείας στη συσκευή που αναπτύσσεται.

Η αρχική πλακέτα Maple Mini μπορεί να αγοραστεί για 35 $ στην ιστοσελίδα των προγραμματιστών της. Η αποστολή θα κοστίσει άλλα 5 $. Ένα αντίγραφο του πίνακα που κατασκευάζεται στην Κίνα θα κοστίζει το μισό.

Λογισμικό

Υπάρχουν διάφορες επιλογές για περιβάλλοντα ανάπτυξης που μπορούν να χρησιμοποιηθούν για την προετοιμασία προγραμμάτων για μικροελεγκτές της οικογένειας STM32:

Commercial IAR Embedded Workbench, AtollicTrueSTUDIO, Keil, κ.λπ. Αυτά τα προϊόντα με πλήρεις δυνατότητες είναι αρκετά ακριβά, με τιμή άδειας που ξεκινά από 1000 ευρώ, αλλά υπάρχουν και δωρεάν εκδόσεις επίδειξης με περιορισμό στον όγκο του προγράμματος που αναπτύσσεται. απλά έργα είναι αρκετά?

Το δωρεάν Eclipse με τον μεταγλωττιστή ARM-GCC απαιτεί μη τετριμμένη διαμόρφωση του μεταγλωττιστή πριν από τη χρήση. Το μόνο πλεονέκτημα για σήμερα είναι η δυνατότητα εργασίας όχι μόνο σε Windows, αλλά και σε Linux.

Δωρεάν CooCox IDE (CoIDE) που βασίζεται στον ίδιο επεξεργαστή Eclipse. Φορτώνει και διορθώνει προγράμματα μέσω ST-LINK. Σε αντίθεση με την προηγούμενη επιλογή, το CoIDE δεν απαιτεί ειδικές ρυθμίσεις και λειτουργεί αμέσως μετά την εγκατάσταση. Αυτή η επιλογή είναι η πιο βολική και αξίζει να τη χρησιμοποιήσετε.

Ας χρησιμοποιήσουμε το CooCox IDE για να δημιουργήσουμε ένα παράδειγμα προγράμματος για την πλακέτα STM32F4-DISCOVERY που υλοποιεί το κλασικό LED που αναβοσβήνει του πρώτου προγράμματος για οποιονδήποτε μικροελεγκτή. Υπάρχουν τέσσερα LED στην πλακέτα STM32F4-DIS-COVERY, συνδέονται με τις ακίδες PD12-PD15 του μικροελεγκτή. Ας τα κάνουμε να αναβοσβήνουν εναλλάξ.

Βήμα 1. Εκκινήστε το περιβάλλον ανάπτυξης CoIDE και δημιουργήστε ένα έργο. Από την αναπτυσσόμενη λίστα που φαίνεται στο Σχ. 4, επιλέξτε τον μικροελεγκτή STM32F407VG.

Βήμα 2. Όπως φαίνεται στο Σχ. 5, επιλέξτε τα στοιχεία που θα χρησιμοποιηθούν στο έργο. Τα κυριότερα είναι το GPIO (είσοδος-έξοδος), η C Library (βασικές λειτουργίες της γλώσσας C) και το M4 Core (συναρτήσεις πυρήνα επεξεργαστή). Όταν ενεργοποιείτε ένα στοιχείο, το CoIDE αντιγράφει αυτόματα τα απαραίτητα αρχεία στο φάκελο του έργου, κάτι που είναι πολύ βολικό.

Βήμα 3. Εισαγωγή κειμένου προγράμματος. Είναι αρκετά σύντομο και δίνεται στον πίνακα. 2.

Όπως μπορείτε να δείτε, όλα είναι απλά και προφανή. Όσοι έχουν γράψει προγράμματα για μικροελεγκτές AVR πιθανότατα θα δουν γνωστά σχέδια - αρχικοποίηση θυρών που υποδεικνύουν την κατεύθυνση (είσοδος ή έξοδος), τον κύριο βρόχο στον οποίο εκτελούνται οι απαραίτητες ενέργειες. Γενικά, η σύνταξη του προγράμματος αντιστοιχεί πλήρως στη γλώσσα C, για την οποία υπάρχει υπεραρκετή βιβλιογραφία. Υπάρχουν επίσης πολλά άρθρα σχετικά με τον προγραμματισμό του STM32 στο Διαδίκτυο. Πολλά παραδείγματα παρέχονται με την πλακέτα ανάπτυξης και μπορούν επίσης να χρησιμοποιηθούν ως δείγματα.

Αφού εισαγάγετε το κείμενο του προγράμματος κάνοντας κλικ στο κουμπί της οθόνης "Λήψη σε αναβοσβήνει", μεταφορτώνεται στον μικροελεγκτή. Τα LED στην πλακέτα αρχίζουν να αναβοσβήνουν. Ξεχωριστά, αξίζει να σημειωθούν οι δυνατότητες εντοπισμού σφαλμάτων - ένα σημείο διακοπής μπορεί να οριστεί οπουδήποτε στο πρόγραμμα, μπορείτε να εκτελέσετε το πρόγραμμα βήμα προς βήμα, προβάλλοντας τις τιμές των μεταβλητών.

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

συμπέρασμα

Γενικότερα, μετά την πρώτη γνωριμία, οι μικροελεγκτές της οικογένειας STM32 άφησαν πολύ ευχάριστες εντυπώσεις. Όλα αποδείχθηκαν ότι δεν ήταν τόσο περίπλοκα και η ευκολία του περιβάλλοντος ανάπτυξης, η διαδικασία εντοπισμού σφαλμάτων και ένας μεγάλος αριθμός τυπικών λειτουργιών υπενθύμισαν ακόμη και κάπως τη μετάβαση από το Ms DOS στα Windows - τα γενικά σημεία φαίνεται να είναι τα ίδια, αλλά όλα είναι πολύ πιο βολικό και λειτουργικό.

Αλλά το κύριο μειονέκτημα αυτής της οικογένειας για ερασιτεχνικές εξελίξεις εξακολουθεί να είναι το πολύ μικρό γήπεδο καρφίτσας. Ο σχεδιασμός και η συγκόλληση μιας σανίδας με βήμα καρφίτσας 0,5 mm στο σπίτι είναι μια πολύ μη τετριμμένη εργασία. Αλλά σε τρέχουσες τιμές, οι πίνακες εντοπισμού σφαλμάτων με ήδη τοποθετημένους μικροελεγκτές είναι αρκετά προσβάσιμοι σε κάθε ραδιοερασιτέχνη.

Αξίζει να μετατρέψετε τα πάντα σε STM και αρχιτεκτονική 32 bit; Φυσικά και όχι. Υπάρχουν εργασίες για τις οποίες το ATtiny είναι αρκετά αρκετό. Αλλά, για παράδειγμα, για να αναλύσετε το φάσμα σε έναν αυτοσχέδιο δέκτη SDR ή να λάβετε και να μεταδώσετε μεγάλες ποσότητες πληροφοριών μέσω ενός δικτύου, είναι πολύ πιο αποτελεσματικό να χρησιμοποιήσετε αμέσως έναν ισχυρό μικροελεγκτή, ώστε να μην αντιμετωπίσετε έλλειψη μνήμης ή απόδοσης όταν βελτίωση της συσκευής.

Με βάση τον πυρήνα Cortex, άρχισαν να κερδίζουν ενεργά δημοτικότητα τόσο μεταξύ των επαγγελματιών όσο και των αρχαρίων προγραμματιστών συσκευών σε μικροελεγκτές. Υπάρχουν διάφοροι λόγοι για αυτό:
- χαμηλή τιμή σε σύγκριση με τους ανταγωνιστές.
- μεγάλος αριθμός ενσωματωμένων διεπαφών.
- ευκολία προγραμματισμού και υψηλή αξιοπιστία.
Υπάρχει όμως και ένα σημαντικό μειονέκτημα - όλοι οι μικροελεγκτές STM δεν παράγονται σε πακέτα DIP, κάτι που συχνά απλά τρομάζει τους αρχάριους, επειδή η κατασκευή μιας πλακέτας με ίχνη μικρότερη από 0,3 mm στο σπίτι είναι προβληματική. Αυτή η κατάσταση έχει οδηγήσει στην εμφάνιση στην αγορά ενός τεράστιου αριθμού πλακών εντοπισμού σφαλμάτων, τόσο από την ST Microelectronics (Discovery) όσο και από πλακέτες που παράγονται από τρίτες εταιρείες (Olimex, Pinboard). Επέλεξα το Discovery για τρεις λόγους:
- σχετικά χαμηλή τιμή (ο πίνακας μπορεί να αγοραστεί από 300 ρούβλια).
- καλή κατασκευή (αν και υπάρχουν κάποια παράπονα σχετικά με την καλωδίωση, αλλά δεν είναι τόσο σημαντικά).
- πολλές πηγές και παραδείγματα δημοσιεύονται στον ιστότοπο του κατασκευαστή.
- η παρουσία ενός ενσωματωμένου προγραμματιστή (δεν χρειάζεται να τον αγοράσετε ξεχωριστά).
Ο σκοπός του πρώτου μαθήματος είναι να βοηθήσει έναν αρχάριο προγραμματιστή να επιλέξει έναν πίνακα εντοπισμού σφαλμάτων και στο μέλλον - να διδάξει τα βασικά του προγραμματισμού.
Λοιπόν πάμε.

STM32F0DISCOVERY

Αυτή η πλακέτα κυκλοφόρησε τον Φεβρουάριο του 2012 για να προσελκύσει προγραμματιστές που είχαν χρησιμοποιήσει στο παρελθόν μικροελεγκτές 8-bit, καλύπτοντας έτσι αυτή τη θέση. Δεν μπορώ να πω τίποτα κακό ή καλό για αυτήν. Μια κανονική σανίδα, φθηνή, είναι ιδανική για να ξεκινήσετε. Έχει τα ακόλουθα χαρακτηριστικά:
- μικροελεγκτής: STM32F051R8T6 (Cortex M0, 48 MHz, flash 64 KB, RAM 8 KB);
- ενσωματωμένο ST-link/V2, το οποίο μπορεί να χρησιμοποιηθεί ξεχωριστά από την πλακέτα.
- Τροφοδοτείται από USB ή από εξωτερική πηγή 3/5V.
- 4 LED και 2 κουμπιά.
- διεπαφές: USART, SPI, I2C, HDMI.
- χρονόμετρα 16 και 32 bit.
- όλες οι έξοδοι δρομολογούνται σε δύο χτένες μονής σειράς.
Στην πραγματικότητα, ένας τέτοιος πίνακας είναι ήδη αρκετά ξεπερασμένος και συνιστάται να το πάρετε μόνο για την αρχή της εκπαίδευσης.

STM32VLDISCOVERY

Διαφέρει από την προηγούμενη πλακέτα μόνο στον επεξεργαστή STM32F100RBT6B (Cortex M3, 24 MHz, flash 128 KB, RAM 8 KB) και στη διάταξη των περιφερειακών χτενών. Ακριβώς όπως αυτό που συζητήθηκε παραπάνω, είναι κατάλληλο για αρχάριους προγραμματιστές. Δεν υπάρχει τίποτα άλλο να πούμε για αυτήν.

STM32LDISCOVERY

Το STM32LDISCOVERY είναι μια αξιόλογη εξέλιξη της προηγούμενης πλακέτας. Να τι είναι ενδιαφέρον για αυτό:
- μικροελεγκτής STM32L152RBT6 (Cortex M3, 32 MHz, flash 128Kb, RAM 8Kb, EEPROM 4Kb)
- διεπαφές: USB, USART, SPI, I2C.
- 8 χρονόμετρα
- ADC 12-bit 24 καναλιών.
-12-bit DAC;
- Ρολόι πραγματικού χρόνου;
- Ελεγκτής LCD 8x40
- ενσωματωμένο ST-link/V2.
Τα ακόλουθα είναι εγκατεστημένα στον πίνακα:
- Οθόνη LCD 24x8
- 4 LED;
- 2 κουμπιά
- πληκτρολόγιο αφής
- 2 χτένες μονής σειράς με ελεύθερα καλώδια.
Θα ήθελα να πω ξεχωριστά για το USB: ο ελεγκτής υποστηρίζει λειτουργίες USB 2.0 πλήρους ταχύτητας, κεντρικού υπολογιστή και συσκευής, κάτι που σπάνια εμφανίζεται σε MK αυτής της κατηγορίας.
Στην πραγματικότητα, η πλακέτα είναι η καλύτερη επιλογή για εργασία με τον πυρήνα Cortex-M3, ώστε να μπορείτε να την πάρετε με ασφάλεια, καθώς η τιμή είναι χαμηλή.

STM32F3DISCOVERY

Το STM32F3DISCOVERY ανήκει στην επόμενη γενιά πλακών ανάπτυξης από την STM και έχει τα ακόλουθα χαρακτηριστικά:
- μικροελεγκτής STM32F303VCT6 (Cortex M4, 72 MHz, flash 256 KB, RAM 48 KB)
- Ρολόι πραγματικού χρόνου;
- ενσωματωμένο ST-link/V2.
- 13 χρονόμετρα
- Ελεγκτής DMA 12 καναλιών.
- 4 ADC
- 4 λειτουργικοί ενισχυτές.
- διεπαφές: CAN, USB 2.0, USART/UART, SPI, I2C;
- 87 γραμμές GPIO.

- προσαρμοσμένη θύρα USB
- Επιταχυνσιόμετρο 3 αξόνων και γεωμαγνητικός αισθητήρας 3 αξόνων σε ένα περίβλημα.
- Γυροσκόπιο 3 αξόνων.
- 10 LED;
- 2 κουμπιά
- 2 χτένες διπλής σειράς.
Ένα πολύ ενδιαφέρον ταμπλό, πολλές ευκαιρίες για πειραματισμούς. Σε γενικές γραμμές, η γνώμη για αυτό παραμένει καλή, αλλά η εστίασή του στην παρακολούθηση της φυσικής κατάστασης και της θέσης μειώνει σημαντικά τα περιθώρια πειραματισμού, αν και μπορείτε εύκολα να φτιάξετε έναν πίνακα επέκτασης μόνοι σας.

STM32F4DISCOVERY

Είχα την ευκαιρία να δουλέψω περισσότερο με αυτόν τον πίνακα και μου άρεσε περισσότερο από τους άλλους - η συνολική εστίασή του το επηρέασε.
Να τι είναι:
- μικροελεγκτής STM32F407VGT6 (Cortex M4, 168 MHz, flash 1 MB, RAM 192 KB)
- ενσωματωμένο ST-link/V2.
- χρονόμετρα
- Ελεγκτής DMA.
- ADC/DAC
- διεπαφές: CAN, USB 2.0, USART/UART, SPI, I2C, GPIO.
Η πλακέτα περιέχει τα ακόλουθα περιφερειακά:
- προσαρμοσμένη θύρα USB
- Επιταχυνσιόμετρο 3 αξόνων
- 8 LED;
- 2 κουμπιά
- 2 χτένες διπλής σειράς
- DAC ήχου με ενισχυτή κλάσης D.
- πανκατευθυντικό ψηφιακό μικρόφωνο.

Όπως έγραψα παραπάνω, αυτός ο πίνακας έγινε ο κύριος για μένα· ήμουν ευχαριστημένος με την ικανότητα να δουλεύω με τον ήχο και το επιταχυνσιόμετρο.

Περαιτέρω μαθήματα θα βασιστούν σε αυτόν τον πίνακα.

Περίληψη.
Εάν αποφασίσετε να ξεκινήσετε να εργάζεστε με πλακέτες εντοπισμού σφαλμάτων STM, τότε σας συμβουλεύω να πάρετε το STM32F4DISCOVERY, κατά τη γνώμη μου, έχει τη μεγαλύτερη λειτουργικότητα. Περαιτέρω άρθρα θα βασιστούν ειδικά στην εργασία με αυτό. Θα γραφτούν άρθρα για τα ακόλουθα θέματα στο άμεσο μέλλον:
- εργασία με GPIO, χρονόμετρα, διακοπές κ.λπ.
- εργασία με διασυνδέσεις UART, SPI, I2C και 1-wire χρησιμοποιώντας παραδείγματα πραγματικών συσκευών, όπως οθόνες, μονάδες GPS και GSM, αισθητήρες θερμοκρασίας, επικοινωνία με υπολογιστή μέσω RS-232 και πολλά άλλα.
Ο τελικός στόχος αυτού του κύκλου είναι η δημιουργία μιας πλακέτας επέκτασης για το STM32F4. Όλα τα υλικολογισμικά και τα διαγράμματα κυκλωμάτων θα είναι διαθέσιμα στο κοινό.