INHOUDSOPGAWE:
- Stap 1: Inleiding vir die vertoning van die koffiemasjien
- Stap 2: Maak UI -foto's vir STONE Display
- Stap 3: STM32F103RCT6
- Stap 4: UART -reeks
- Stap 5: Timer
- Stap 6: Waghond
Video: STONE Display +STM32 +koffiemaker: 6 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:23
Ek is 'n sagteware -ingenieur van die MCU, het onlangs 'n projek gekry om 'n koffiemasjien te wees, huishoudelike vereistes met 'n aanraakskerm, die funksie is goed, die keuse bo die skerm is miskien nie baie goed nie, gelukkig kan ek met hierdie projek besluit wat MCU om myself te gebruik, kan ook gebruik word om te besluit wat die skerm is, so ek het die STM32 van hierdie soort eenvoudige en maklike MCU gekies om te gebruik, skerm Ek het STONE se aanraakskerm gekies, die skerm is eenvoudig en maklik om te gebruik, My STM32 MCU slegs deur UART -kommunikasie is goed daarmee.
STONE seriële LCD -skerm, wat kan kommunikeer deur die seriële poort van MCU. Terselfdertyd kan die logiese ontwerp van die UI -koppelvlak van hierdie vertoningsskerm direk ontwerp word met behulp van die STONE TOOL -boks wat deur STONE se amptelike webwerf verskaf word, wat baie gerieflik is. Ek gaan dit dus gebruik vir hierdie koffiemasjienprojek. Terselfdertyd sal ek eenvoudig die basiese ontwikkeling aanteken. Aangesien dit 'n projek van my onderneming is, neem ek slegs 'n eenvoudige demo op en skryf ek nie die volledige kode nie. 'N Paar basiese tutoriale oor die klipskerm kan na die webwerf gaan: https://www.stoneitech.com/ Die webwerf bevat 'n verskeidenheid inligting oor die model, gebruik en ontwerpdokumentasie, sowel as video -tutoriale. Ek sal nie hier te veel besonderhede uitvoer nie.
Stap 1: Inleiding vir die vertoning van die koffiemasjien
Hierdie projek het die volgende funksies: l
- Gee die huidige tyd en datum
- Daar is vier knoppies op die skerm vir americano, latte, cappuccino en espresso.
- Toon die huidige hoeveelheid oorblywende koffiebone, melk en koffiesuiker
- 'N Tekskassie wys die huidige toestand
Met hierdie konsepte in gedagte, kan u 'n UI -koppelvlak ontwerp. STONE van die aanraakskerms in die UI -ontwerp is relatief eenvoudig; die gebruiker ontwerp deur die PhotoShop -sagteware 'n goeie UI -koppelvlak en knoppie -effek, deur die STONE TOOL Box om goeie foto's op die skerm te ontwerp, en voeg u eie knoppies by met STONE TOOL Box logika en seriële data, die opbrengswaarde is ok, baie maklik om te ontwikkel.
Stap 2: Maak UI -foto's vir STONE Display
Volgens funksionele vereistes het ek die volgende twee UI -skermkoppelvlakke gemaak, die een is die belangrikste koppelvlak en die ander is die knoppie -effek.
Gebruik van STONE TOOL -boks Tans verskaf STONE TOOL. Maak hierdie GEREEDSKAP oop om 'n nuwe projek te skep, en voer dan die ontwerpte UI in om foto's te vertoon, en voeg u eie knoppies, tekskassies, ens. Die amptelike webwerf van STONE bevat 'n baie volledige handleiding oor hoe u hierdie sagteware kan gebruik: https:/ /www.stoneitech.com/support/download/video
Die gevolge van die toevoeging van knoppies en die vertoon van komponente in die STONE TOOL Box is soos volg:
STONE TOOL Box het die funksie van simulasievertoning, waardeur u die werkingseffek van die UI -koppelvlak kan sien:
Op hierdie stadium is my UI -skerm voltooi, en al wat ek hoef te doen is om die MCU -kode te skryf. Laai die lêers wat deur die STONE TOOL Box op die skerm verskyn, af om die werklike resultate te sien.
Stap 3: STM32F103RCT6
STM32F103RCT6 MCU het kragtige funksies. Hier is die basiese parameters van die MCU:
- Reeks: STM32F10X l Kerne
- ARM - COTEX32
- Spoed: 72 MHZ
- Kommunikasie -koppelvlak: CAN, I2C, IrDA, LIN, SPI, UART/USART, USB
- Randapparatuur: DMA, motorbeheer PWM, PDR, POR, PVD, PWM, temperatuursensor, WDT
- Programbergingskapasiteit: 256KB
- Programgeheue tipe: FLASH
- RAM -kapasiteit: 48K
- Spanning - kragtoevoer (Vcc/Vdd): 2 V ~ 3,6 V
- Ossillator: intern
- Bedryfstemperatuur: -40 ° C ~ 85 ° C
- Pakket/behuising: 64 lewens
In hierdie projek gebruik ek UART, GPIO, Watch Dog en Timer van STM32F103RCT6. Die ontwikkeling van hierdie randapparatuur word hieronder gedokumenteer. STM32 GEBRUIK Keil MDK sagteware -ontwikkeling, wat u nie vreemd is nie, daarom sal ek nie die installeringsmetode van hierdie sagteware bekendstel nie. STM32 kan aanlyn gesimuleer word deur j-link of st-link en ander simulasie-instrumente. Die volgende prentjie is die STM32 -kring wat ek gebruik het:
Stap 4: UART -reeks
STM32F103RCT6 het verskeie seriële poorte. In hierdie projek het ek die seriële poortkanaal PA9/PA10 gebruik, en die baud -koers van die seriële poort is op 115200 gestel.
GPIO
In die gebruikerskoppelvlak van hierdie projek is daar altesaam vier knoppies, wat eintlik vier soorte koffie maak. In die koffiemasjien word die hoeveelheid koffiebone, melkverbruik en watervloei van verskillende koffies reguleer deur die beheer van sensors en relais, terwyl ek eers die GPIO -pen beheer.
Stap 5: Timer
Spesifiseer die frekwensie -verdelingskoëffisiënt PSC tydens die initialisering van die timer; hier is ons stelselklok (72MHz) vir frekwensieverdeling
Spesifiseer dan die herlaai waarde arr, wat beteken dat wanneer die timer hierdie arr bereik, die timer ander waardes herlaai.
As ons byvoorbeeld die tydteller stel om op te tel, is die waarde van die tydteller gelyk aan ar en word dit met 0 skoongemaak en herbereken
Die tydteller word herlaai en een keer is dit 'n opdatering
Bereken die opdateringstydformule Tout = ((arr +1)*(PSC +1))/Tclk
Formule afleiding: Talk is die klokbron van die timer, hier is 72Mhz
Ons verdeel die toegekende klokfrekwensie, spesifiseer die frekwensie -afdelingwaarde as PSC, verdeel dan ons Talk in PSC +1, die finale frekwensie van ons timer is Tclk/(PSC +1) MHz
Ons bedoel dus met die frekwensie hier dat ons 1s Talk oor PSC +1 M -getalle het (1M = 10 ^ 6), en die tyd vir elke getal PSC +1 /Talk is, en dit is maklik om te verstaan dat die inverse van die frekwensie is die periode, en die tydperk vir elke getal hier is PSC +1 /Geselsekondes en dan gaan ons van 0 na arr is (arr +1)*(PSC +1) /Tclk
Byvoorbeeld, laat ons arr = 7199 en PSC = 9999 stel
Ons verdeel 72MHz in 9999+1 is gelyk aan 7200Hz
Dit is 9 000 tellings per sekonde, en elke telling is 1/7, 200 sekondes
Ons neem dus 9 000 nommers hier op om na die tydopdatering (7199+1)*(1/7200) = 1s te gaan, dus gaan 1s na 'n opdatering.
ongeldig TIM3_Int_Init (u16 arr, u16 psc) {
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3, ENABLE);
// klok 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, & TIM_TimeBaseStructure);
Kontak ons as u 'n volledige prosedure benodig:
www.stoneitech.com/contact
Ek sal u binne 12 uur antwoord.
Stap 6: Waghond
Om te verhoed dat die stelsel vasval terwyl die program loop, het ek die waghond bygevoeg. Trouens, alle projekte wat die MCU gebruik, gebruik gewoonlik 'n waghond.
STM32 het twee ingeboude waghonde, wat groter sekuriteit, tydsakkuraatheid en buigsaamheid bied. Twee waghond -toestelle (onafhanklike waghond en vensterwaghond) kan gebruik word om foute wat deur sagtewarefoute veroorsaak word, op te spoor en op te los. As die teller 'n gegewe tydsduurwaarde bereik, word 'n onderbreking (slegs vensterwaghond) of stelselherstel veroorsaak. Onafhanklike waghond (IWDG):
Aangedryf deur 'n toegewyde lae-spoedklok (LSI), werk dit selfs as die hoofklok misluk.
Dit is geskik vir gebruik in situasies waar die waghond heeltemal onafhanklik buite die hoofprogram moet werk en 'n lae tydsakkuraatheid benodig. Venster waghond (WWDG):
Gedryf deur die klok vanaf die APB1 -klok na frekwensieverdeling. Ontdek abnormaal laat of voortydige toepassing deur 'n instelbare tydvenster. Geskik vir programme wat waghonde vereis om op presiese tydsberekening van Windows te funksioneer.
int main (leeg) {
delay_init ();
// vertraag init NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2);
// NVIC INIT uart_init (115200);
// UART INIT PAD_INIT ();
// Light Init IWDG_Init (4, 625);
terwyl (1) {
as (USART_RX_END)
{skakelaar (USART_RX_BUF [5])
{
kas Espresso:
CoffeeSelect (Espresso, USART_RX_BUF [8]);
breek;
saak Americano:
CoffeeSelect (Americano, USART_RX_BUF [8]);
Die hooflogika in die hooffunksie is soos volg:
u8 timer_cnt = 0;
leegte TIM3_IRQHandler (leegte) // TIM3
{
as (TIM_GetITStatus (TIM3, TIM_IT_Update)! = RESET)
{
TIM_ClearITPendingBit (TIM3, TIM_IT_Update);
timer_cnt ++;
as (timer_cnt> = 200)
{
melk_stuur [6] = melk ();
Voeg laastens die kode by die timer -onderbreking: in die timer -onderbreking, is my doel om te kyk hoeveel koffie en melk daar oor is, en stuur dan die opgespoorde waarde na die skerm deur 'n seriële poort. Gewoonlik word sensore bepaal hoeveel melk en koffiebone daar oorbly. Eenvoudige metodes sluit in druksensors, wat die huidige gewig van die melk en koffiebone meet om te bepaal hoeveel daar oor is.
Skryf in die laaste
Hierdie artikel bevat slegs die eenvoudige ontwikkelingsproses van my projek. Met inagneming van die vertroulikheid van die onderneming se projek, is die UI -skermkoppelvlak wat ek gebruik het, ook self gemaak, nie die werklike UI -vertoonvlak van hierdie projek nie. Die kode -deel van STM32 voeg slegs die perifere bestuurder van MCU en verwante logiese kode by. As u ook die vertroulikheid van die projek van die onderneming in ag neem, word die spesifieke sleuteltegnologie -gedeelte nie gegee nie, verstaan dit asseblief. Volgens die kode wat ek verskaf het, werk u egter saam met die STONE -skerm. my vriende, wat ook sagteware -ingenieurs is, hoef net 'n paar dae te spandeer om belangrike tegniese onderdele by my kode raamwerk te voeg om die projek te voltooi.
Vir meer inligting oor die projek, klik hier