Cuprins:

Afișaj STONE + STM32 + Cafetieră: 6 pași
Afișaj STONE + STM32 + Cafetieră: 6 pași

Video: Afișaj STONE + STM32 + Cafetieră: 6 pași

Video: Afișaj STONE + STM32 + Cafetieră: 6 pași
Video: flexyPage Tutorial | How to start and set up your lift-display 2024, Iulie
Anonim
Afișaj STONE + STM32 + Filtru de cafea
Afișaj STONE + STM32 + Filtru de cafea

Sunt inginer software MCU, am primit recent un proiect este să fie o mașină de cafea, cerințele gospodăriei cu funcționare pe ecran tactil, funcția este bună, este deasupra selecției ecranului poate să nu fie foarte bună, din fericire, acest proiect pot decide ce MCU pentru a mă folosi, de asemenea, pot fi folosite pentru a decide ce ecran, așa că am ales STM32 de acest tip de MCU simplu și ușor de utilizat, ecran de afișaj Am ales ecranul tactil al STONE, ecranul este simplu și ușor de utilizat, STM32 MCU numai prin comunicarea UART este în regulă.

Ecran LCD de afișare serial STONE, care poate comunica prin portul serial al MCU. În același timp, proiectarea logică a interfeței UI a acestui ecran de afișare poate fi proiectată direct utilizând STONE TOOL Box furnizat de site-ul oficial al STONE, ceea ce este foarte convenabil. Așa că o voi folosi pentru acest proiect de mașină de cafea. În același timp, voi înregistra pur și simplu dezvoltarea de bază. Deoarece acesta este un proiect al companiei mele, voi înregistra doar un demo simplu și nu voi scrie codul complet. Unele tutoriale de bază despre ecranul de afișare a pietrei pot fi accesate pe site-ul web: https://www.stoneitech.com/ Site-ul web conține o varietate de informații despre model, utilizare și documentație de proiectare, precum și tutoriale video. Nu voi intra în prea multe detalii aici.

Pasul 1: Introducerea funcției ecranului de afișare a mașinii de cafea

Acest proiect are următoarele funcții: l

  • Afișează ora și data curente
  • Pe ecran sunt patru butoane pentru american, latte, cappuccino și espresso.
  • Afișează cantitatea actuală de boabe de cafea, lapte și zahăr de cafea rămase
  • O casetă de afișare text afișează starea curentă

Având în vedere aceste concepte, puteți proiecta o interfață UI. STONE a ecranelor tactile din designul UI este relativ simplu, utilizatorul prin software-ul PhotoShop proiectează o interfață UI bună și efectul butonului, prin STONE TOOL Box pentru a proiecta imagini bune pe ecran și pentru a adăuga propriile butoane cu logica STONE TOOL Box și date seriale valoarea returnată este ok, foarte ușor de dezvoltat pentru dvs.

Pasul 2: Faceți imagini UI pentru afișajul STONE

Creați imagini UI pentru afișajul STONE
Creați imagini UI pentru afișajul STONE
Creați imagini UI pentru afișajul STONE
Creați imagini UI pentru afișajul STONE
Creați imagini UI pentru afișajul STONE
Creați imagini UI pentru afișajul STONE

Conform cerințelor funcționale, am realizat următoarele două interfețe de afișare UI, una este interfața principală și cealaltă este efectul buton.

Utilizarea cutiei STONE TOOL În prezent, STONE oferă instrument. Deschideți acest instrument pentru a crea un proiect nou, apoi importați interfața de utilizare proiectată pentru a afișa imagini și adăugați propriile butoane, casete de afișare a textului etc. Site-ul oficial al STONE are un tutorial foarte complet despre cum să utilizați acest software : https: / /www.stoneitech.com/support/download/video

Efectele adăugării de butoane și afișarea componentelor în STONE TOOL Box sunt după cum urmează:

STONE TOOL Box are funcția de afișare de simulare, prin intermediul căreia puteți vedea efectul de funcționare al interfeței UI:

În acest moment, afișajul meu UI este complet și tot ce trebuie să fac este să scriu codul MCU. Descărcați fișierele generate de STONE TOOL Box pe ecranul de afișare pentru a vedea rezultatele reale.

Pasul 3: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

STM32F103RCT6 MCU are funcții puternice. Iată parametrii de bază ai MCU:

  • Seria: STM32F10X l Kerne
  • ARM - COTEX32
  • Viteza: 72 MHZ
  • Interfață de comunicare: CAN, I2C, IrDA, LIN, SPI, UART / USART, USB
  • Echipamente periferice: DMA, control motor PWM, PDR, POR, PVD, PWM, senzor de temperatură, WDT
  • Capacitate de stocare a programului: 256 KB
  • Tipul de memorie al programului: FLASH
  • Capacitate RAM: 48K
  • Tensiune - sursa de alimentare (Vcc / Vdd): 2 V ~ 3,6 V
  • Oscilator: intern
  • Temperatura de funcționare: -40 ° C ~ 85 ° C
  • Pachet / carcasă: 64 de vieți

În acest proiect, voi folosi UART, GPIO, Watch Dog și Timer pentru STM32F103RCT6. Dezvoltarea acestor periferice este documentată mai jos. STM32 UTILIZĂ Dezvoltarea software-ului Keil MDK, ceea ce nu vă este străin, așa că nu voi introduce metoda de instalare a acestui software. STM32 poate fi simulat online prin j-link sau st-link și alte instrumente de simulare. Următoarea imagine este placa de circuit STM32 pe care am folosit-o:

Pasul 4: Seria UART

Seria UART
Seria UART
Seria UART
Seria UART
Seria UART
Seria UART

STM32F103RCT6 are mai multe porturi seriale. În acest proiect, am folosit canalul de port serial PA9 / PA10, iar rata baud a portului serial a fost setată la 115200.

GPIO

În interfața cu utilizatorul acestui proiect, există un total de patru butoane, care sunt de fapt fabricarea a patru tipuri de cafea. În aparatul de cafea, controlul numărului de boabe de cafea, al consumului de lapte și al debitului de apă al diferitelor cafele se realizează prin controlul senzorilor și relei, în timp ce eu controlez pur și simplu pinul GPIO.

Pasul 5: Cronometru

Temporizator
Temporizator
Temporizator
Temporizator

Când inițializați cronometrul, specificați coeficientul de divizare a frecvenței PSC, iată ceasul nostru de sistem (72 MHz) pentru divizarea frecvenței

Apoi specificați valoarea de reîncărcare arr, ceea ce înseamnă că atunci când temporizatorul nostru atinge acest arr, temporizatorul va reîncărca alte valori.

De exemplu, când setăm temporizatorul să numere în sus, valoarea numărării temporizatorului este egală cu arr și va fi ștearsă cu 0 și recalculată

Numărul temporizatorului este reîncărcat și o dată este o actualizare

Calculați formula de timp de actualizare Tout = ((arr + 1) * (PSC +1)) / Tclk

Derivarea formulei: Talk este sursa ceasului temporizatorului, iată 72Mhz

Împărțim frecvența de ceas alocată, specificăm valoarea de divizare a frecvenței ca PSC, apoi împărțim Talk-ul nostru în PSC +1, frecvența finală a cronometrului nostru este Tclk / (PSC +1) MHz

Deci, ceea ce înțelegem prin frecvența de aici este că avem 1s de conversație peste PSC +1 M numere (1M = 10 ^ 6), iar timpul pentru fiecare număr este PSC +1 / Talk și este ușor de înțeles că inversul a frecvenței este perioada, iar perioada pentru fiecare număr aici este PSC +1 / Talk second și apoi mergem de la 0 la arr este (arr + 1) * (PSC +1) / Tclk

De exemplu, să setăm arr = 7199 și PSC = 9999

Am împărțit 72MHz în 9999 + 1 este egal cu 7200Hz

Aceasta reprezintă 9 000 de conturi pe secundă și fiecare număr este de 1/7, 200 de secundă

Deci, înregistrăm 9 000 de numere aici pentru a merge la actualizarea temporizatorului (7199 + 1) * (1/7200) = 1s, deci 1s merge la o actualizare.

void TIM3_Int_Init (u16 arr, u16 psc) {

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3, ENABLE);

// ceas TIM_TimeBaseStructure. TIM_Period = arr;

TIM_TimeBaseStructure. TIM_Prescaler = psc; TIM_TimeBaseStructure. TIM_ClockDivision = 0;

// TDTS = Tck_tim TIM_TimeBaseStructure. TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit (TIM3 și & TIM_TimeBaseStructure);

Vă rugăm să ne contactați dacă aveți nevoie de o procedură completă:

www.stoneitech.com/contact

Vă voi răspunde în termen de 12 ore.

Pasul 6: Urmăriți câinele

Watch Dog
Watch Dog
Watch Dog
Watch Dog

Pentru a preveni blocarea sistemului în timp ce programul rulează, am adăugat câinele de pază. De fapt, toate proiectele care utilizează MCU folosesc în general un câine de pază.

STM32 are doi câini de pază încorporați, oferind mai multă securitate, precizie de timp și flexibilitate. Două dispozitive de supraveghere (supraveghere independentă și fereastră) pot fi utilizate pentru a detecta și rezolva defecțiunile cauzate de erori de software. Când contorul atinge o anumită valoare de expirare, se declanșează o întrerupere (numai pentru câinele de pază al ferestrei) sau resetarea sistemului. Caine de pază independent (IWDG):

Acționat de un ceas dedicat de viteză redusă (LSI), acesta funcționează chiar dacă ceasul principal eșuează.

Este adecvat pentru utilizare în situații în care câinele de pază trebuie să funcționeze complet independent în afara programului principal și necesită o precizie redusă a timpului. Ceas de pază al ferestrei (WWDG):

Condus de ceasul de la ceasul APB1 după divizarea frecvenței. Detectați operația anormal de târzie sau prematură a aplicației printr-o fereastră de timp configurabilă. Potrivit pentru programele care necesită câini de pază pentru a funcționa în Windows cu sincronizare precisă.

int main (nul) {

delay_init ();

// întârziere init NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2);

// NVIC INIT uart_init (115200);

// UART INIT PAD_INIT ();

// Light Init IWDG_Init (4, 625);

în timp ce (1) {

dacă (USART_RX_END)

{switch (USART_RX_BUF [5])

{

carcasa Espresso:

CoffeeSelect (Espresso, USART_RX_BUF [8]);

pauză;

caz american:

CoffeeSelect (Americano, USART_RX_BUF [8]);

Logica principală în funcția principală este următoarea:

u8 timer_cnt = 0;

void TIM3_IRQHandler (void) // TIM3

{

if (TIM_GetITStatus (TIM3, TIM_IT_Update)! = RESET)

{

TIM_ClearITPendingBit (TIM3, TIM_IT_Update);

timer_cnt ++;

dacă (timer_cnt> = 200)

{

milk_send [6] = milk ();

În cele din urmă, adăugați codul în întreruperea temporizatorului: În întreruperea temporizatorului, scopul meu este să verific cât de multă cafea și lapte a rămas, apoi să trimiteți valoarea detectată pe ecranul de afișare printr-un port serial. Măsurarea cantității de lapte și boabe de cafea rămase se face de obicei cu ajutorul senzorilor. Metodele simple includ senzori de presiune, care măsoară greutatea actuală a laptelui și a boabelor de cafea pentru a determina cât a rămas.

Scrie în ultimul

Acest articol înregistrează doar procesul simplu de dezvoltare al proiectului meu. Având în vedere confidențialitatea proiectului companiei, interfața de afișare a interfeței pe care am folosit-o am fost făcută și de mine, nu interfața de afișare a interfeței reale a acestui proiect. Partea de cod a STM32 adaugă doar driverul periferic al MCU și codul logic aferent. Având în vedere și confidențialitatea proiectului companiei, partea tehnologică cheie specifică nu este dată, vă rugăm să înțelegeți. Cu toate acestea, conform codului pe care l-am furnizat, colaborați cu ecranul de afișare STONE. prietenii mei, care sunt și ingineri software, trebuie să petreacă doar câteva zile pentru a adăuga părți tehnice cheie în cadrul meu de coduri pentru a finaliza proiectul.

Pentru a afla mai multe despre proiect, faceți clic aici