Բովանդակություն:
- Քայլ 1. Սուրճի մեքենայի ցուցադրման էկրանի գործառույթի ներածություն
- Քայլ 2. Ստեղծեք UI նկարներ ՔԱՐԻ ցուցադրման համար
- Քայլ 3: STM32F103RCT6
- Քայլ 4: UART սերիա
- Քայլ 5: Timամաչափ
- Քայլ 6: Watch Dog
Video: STONE Display +STM32 +Սուրճ պատրաստող ՝ 6 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:45
Ես MCU ծրագրային ապահովման ինժեներ եմ, վերջերս ստացել եմ սուրճի սարք լինելու նախագիծը, սենսորային էկրանով տնային տնտեսության պահանջները, գործառույթը լավ է, էկրանի վերևում ընտրությունը կարող է շատ լավ չլինել, բարեբախտաբար, այս նախագիծը ես կարող եմ որոշել, թե ինչ MCU- ն ինքնուրույն օգտագործելու համար կարող է օգտագործվել նաև էկրանը որոշելու համար, ուստի ես ընտրեցի այս տեսակի պարզ և հեշտ MCU- ի STM32- ը, ցուցադրման էկրան Ես ընտրեցի STONE- ի սենսորային էկրանը, էկրանը պարզ է և հեշտ օգտագործման համար, իմը STM32 MCU- ն միայն UART հաղորդակցության միջոցով լավ է դրան:
STONE սերիական LCD էկրան, որը կարող է հաղորդակցվել MCU- ի սերիական նավահանգստի միջոցով: Միևնույն ժամանակ, այս ցուցադրման էկրանի UI ինտերֆեյսի տրամաբանական դիզայնը կարող է նախագծվել ուղղակիորեն `օգտագործելով STONE- ի պաշտոնական կայքի տրամադրած STONE TOOL Box- ը, ինչը շատ հարմար է: Այսպիսով, ես պատրաստվում եմ օգտագործել այն սուրճի մեքենայի նախագծի համար: Միևնույն ժամանակ, ես պարզապես կարձանագրեմ հիմնական զարգացումը: Քանի որ սա իմ ընկերության նախագիծն է, ես միայն մի պարզ ցուցադրական ձայնագրություն կանեմ և չգրեմ ամբողջական ծածկագիրը: Քարի ցուցադրման էկրանի վերաբերյալ որոշ հիմնական ձեռնարկներ կարող են այցելել վեբ կայք ՝ https://www.stoneitech.com/ Կայքն ունի բազմազան տեղեկատվություն մոդելի, օգտագործման և նախագծման փաստաթղթերի, ինչպես նաև վիդեո ձեռնարկների մասին: Այստեղ ես շատ մանրամասն չեմ անդրադառնա:
Քայլ 1. Սուրճի մեքենայի ցուցադրման էկրանի գործառույթի ներածություն
Այս նախագիծն ունի հետևյալ գործառույթները
- Ուցադրում է ընթացիկ ժամն ու ամսաթիվը
- Էկրանի վրա կա չորս կոճակ ՝ ամերիկանո, լատե, կապուչինո և էսպրեսսո:
- Coffeeուցադրում է սուրճի մնացած հատիկների, կաթի և սուրճի շաքարի ընթացիկ քանակությունը
- Տեքստի ցուցադրման տուփը ցույց է տալիս ընթացիկ վիճակը
Այս հասկացությունները նկատի ունենալով ՝ կարող եք նախագծել UI ինտերֆեյս: UI դիզայնի հպման էկրանների STONE- ը համեմատաբար պարզ է, օգտվողը PhotoShop ծրագրային ապահովման միջոցով նախագծում է լավ UI ինտերֆեյս և կոճակի էֆեկտ, STONE TOOL Box- ի միջոցով `լավ նկարներ նախագծելու էկրանին և ձեր սեփական կոճակները ավելացնելու STONE TOOL Box տրամաբանությամբ և սերիական տվյալներ վերադարձելի արժեքը լավ է, ձեզ համար շատ հեշտ է մշակվել:
Քայլ 2. Ստեղծեք UI նկարներ ՔԱՐԻ ցուցադրման համար
Ֆունկցիոնալ պահանջների համաձայն, ես պատրաստեցի հետևյալ երկու UI ցուցադրման ինտերֆեյսերը, մեկը `հիմնական ինտերֆեյսը, իսկ մյուսը` կոճակի էֆեկտը:
STONE TOOL Box- ի օգտագործումը Ներկայումս STONE- ն ապահովում է TOOL: Բացեք այս Գործիքը ՝ նոր նախագիծ ստեղծելու համար, այնուհետև ներմուծեք նախագծված UI ՝ նկարներ ցուցադրելու համար և ավելացրեք ձեր սեփական կոճակները, տեքստի ցուցադրման տուփերը և այլն: /www.stoneitech.com/support/download/video
STONE TOOL Box- ում կոճակներ ավելացնելու և բաղադրիչներ ցուցադրելու հետևանքները հետևյալն են.
STONE TOOL Box- ն ունի մոդելավորման ցուցադրման գործառույթ, որի միջոցով կարող եք տեսնել UI ինտերֆեյսի աշխատանքի էֆեկտը.
Այս պահին իմ UI ցուցադրումն ավարտված է, և ինձ մնում է միայն գրել MCU ծածկագիրը: Ներբեռնեք STONE TOOL Box- ի ստեղծած ֆայլերը ցուցադրման էկրանին `իրական արդյունքները տեսնելու համար:
Քայլ 3: STM32F103RCT6
STM32F103RCT6 MCU- ն ունի հզոր գործառույթներ: Ահա MCU- ի հիմնական պարամետրերը.
- Սերիան: STM32F10X l Kerne
- ARM - COTEX32
- Արագություն ՝ 72 ՄՀց
- Հաղորդակցության միջերես ՝ CAN, I2C, IrDA, LIN, SPI, UART/USART, USB
- Perայրամասային սարքավորումներ. DMA, շարժիչի կառավարման PWM, PDR, POR, PVD, PWM, ջերմաստիճանի տվիչ, WDT
- Storageրագրի պահպանման հզորությունը `256 ԿԲ
- Programրագրի հիշողության տեսակը ՝ FLASH
- RAM- ի հզորությունը `48K
- Լարման - սնուցման աղբյուր (Vcc/Vdd): 2 V ~ 3.6 V
- Տատանող `ներքին
- Գործող ջերմաստիճանը `-40 ° C ~ 85 ° C
- Փաթեթ/բնակարան ՝ 64 կյանք
Այս նախագծում ես կօգտագործեմ UART, GPIO, Watch Dog և STM32F103RCT6- ի ժամաչափ: Այս ծայրամասային սարքերի զարգացումը փաստաթղթավորված է ստորև: STM32- ն օգտագործում է Keil MDK ծրագրային ապահովման մշակում, որը ձեզ խորթ չէ, այնպես որ ես չեմ ներկայացնի այս ծրագրաշարի տեղադրման եղանակը: STM32- ը կարող է առցանց մոդելավորվել j-link կամ st-link և այլ մոդելավորման գործիքների միջոցով: Հետևյալ նկարը ես օգտագործել եմ STM32 տպատախտակը.
Քայլ 4: UART սերիա
STM32F103RCT6- ն ունի մի քանի սերիական նավահանգիստ: Այս նախագծում ես օգտագործեցի սերիական նավահանգիստ PA9/PA10 ալիքը, իսկ սերիական նավահանգստի բաուդ արագությունը սահմանվեց 115200:
GPIO
Այս նախագծի օգտագործողի միջերեսում ընդհանուր առմամբ կա չորս կոճակ, որոնք իրականում չորս տեսակի սուրճի պատրաստում են: Սուրճի մեքենայում սուրճի հատիկների քանակը, կաթի սպառումը և տարբեր սուրճերի ջրի հոսքը վերահսկելը իրականում իրականացվում է սենսորների և ռելեներ վերահսկելու միջոցով, մինչդեռ ես նախ վերահսկում եմ GPIO- ի քորոցը:
Քայլ 5: Timամաչափ
Theամաչափը նախաստորագրելիս նշեք հաճախականության բաժանման գործակիցը PSC, ահա հաճախականությունների բաժանման մեր համակարգի ժամացույցը (72 ՄՀց)
Այնուհետև նշեք վերաբեռնման արժեքի arr- ը, ինչը նշանակում է, որ երբ մեր ժամաչափը հասնի այս arr- ին, ժամաչափը կվերաբեռնի այլ արժեքներ:
Օրինակ, երբ մենք սահմանում ենք ժամաչափի հաշվարկը, ժամաչափի արժեքը հավասար է arr- ի և մաքրվելու է 0 -ով և վերահաշվարկվում է
Erամաչափի հաշվարկը վերաբեռնվում է, և մեկ անգամ `թարմացում
Հաշվեք Թարմացման ժամանակի բանաձևը Tout = ((arr +1)*(PSC +1))/Tclk
Բանաձևի ածանցում. Խոսքը ժամաչափի ժամացույցի աղբյուրն է, ահա 72 ՄՀց
Մենք բաժանում ենք հատկացված ժամացույցի հաճախականությունը, նշում ենք հաճախականության բաժանման արժեքը որպես PSC, այնուհետև մեր Talk- ը բաժանում ենք PSC +1, մեր ժամաչափի վերջնական հաճախականությունը Tclk/(PSC +1) ՄՀց է:
Այսպիսով, այստեղ հաճախականություն ասելով ՝ մենք ունենք 1s խոսակցություն PSC +1 M Numbers (1M = 10 ^ 6), և յուրաքանչյուր թվի ժամանակը PSC +1 /Talk է, և հեշտ է հասկանալ, որ հակադարձ հաճախականությունը ժամանակաշրջանն է, և այստեղ յուրաքանչյուր համարի համար ընկած ժամանակահատվածը PSC +1 /Խոսքի վայրկյան է, իսկ հետո 0 -ից անցնում ենք arr (arr +1)*(PSC +1) /Tclk
Օրինակ, եկեք սահմանենք arr = 7199 և PSC = 9999
Մենք 72 ՄՀց -ը բաժանեցինք 9999+1 -ի, հավասար է 7200 Հց -ի
Սա 9,000 հաշվում է վայրկյանում, և յուրաքանչյուր հաշվում է 1/7, 200 վայրկյան
Այսպիսով, մենք այստեղ գրանցում ենք 9000 թիվ ՝ ժամաչափի թարմացմանը գնալու համար (7199+1)*(1/7200) = 1s, այնպես որ 1s- ը անցնում է թարմացման:
դատարկ TIM3_Int_Init (u16 arr, u16 psc) {
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3, ԱՆՎԱՐ);
// ժամացույց 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);
Խնդրում ենք կապնվել մեզ հետ, եթե ձեզ անհրաժեշտ է ամբողջական ընթացակարգ.
www.stoneitech.com/contact
Ես ձեզ կպատասխանեմ 12 ժամվա ընթացքում:
Քայլ 6: Watch Dog
Preventրագիրը գործարկելիս համակարգի խափանումից խուսափելու համար ես ավելացրեցի պահակախումբը: Փաստորեն, բոլոր նախագծերը, որոնք օգտագործում են MCU- ն, հիմնականում օգտագործում են պահակախումբ:
STM32- ն ունի երկու ներկառուցված պահակ ՝ ապահովելով ավելի մեծ անվտանգություն, ժամանակի ճշգրտություն և ճկունություն: Երկու հսկիչ սարքեր (անկախ պահակ և պատուհանների հսկիչ) կարող են օգտագործվել ծրագրային սխալներից առաջացած անսարքությունները հայտնաբերելու և լուծելու համար: Երբ հաշվիչը հասնում է որոշակի ժամանակային արժեքի, գործարկվում է ընդհատում (միայն պատուհանի հսկիչ) կամ համակարգի վերակայում: Անկախ դիտորդ (IWDG).
Venածր արագությամբ նվիրված ժամացույցի (LSI) շարժիչով այն աշխատում է նույնիսկ այն դեպքում, երբ հիմնական ժամացույցը չի աշխատում:
Այն հարմար է այն իրավիճակներում օգտագործման համար, երբ պահակախմբից պահանջվում է ամբողջովին անկախ աշխատել հիմնական ծրագրից դուրս և պահանջում է ցածր ժամանակի ճշգրտություն: Պատուհանների հսկիչ շուն (WWDG):
Հաճախականությունների բաժանումից հետո ժամացույցը շարժվում է APB1 ժամացույցից: Հայտնաբերեք աննորմալ ուշ կամ վաղաժամկետ կիրառման գործողությունը `կարգավորելի ժամանակային պատուհանի միջոցով: Հարմար է այն ծրագրերի համար, որոնցից պահանջվում է, որ դիտորդները գործեն Windows- ի ճշգրիտ ժամկետներում:
int հիմնական (անվավեր) {
delay_init ();
// հետաձգել init NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2);
// NVIC INIT uart_init (115200);
// UART INIT PAD_INIT ();
// Light Init IWDG_Init (4, 625);
մինչդեռ (1) {
եթե (USART_RX_END)
{անջատիչ (USART_RX_BUF [5])
{
պատյան Espresso:
CoffeeSelect (էսպրեսսո, USART_RX_BUF [8]);
ընդմիջում;
գործ Americano:
CoffeeSelect (Americano, USART_RX_BUF [8]);
Հիմնական գործառույթի հիմնական տրամաբանությունը հետևյալն է.
u8 timer_cnt = 0;
դատարկ TIM3_IRQHandler (անվավեր) // TIM3
{
եթե (TIM_GetITStatus (TIM3, TIM_IT_Update)! = RESET)
{
TIM_ClearITPendingBit (TIM3, TIM_IT_Update);
timer_cnt ++;
եթե (timer_cnt> = 200)
{
կաթ_ուղարկել [6] = կաթ ();
Վերջապես, ժամաչափի ընդհատման մեջ ավելացրեք կոդը. Theամաչափի ընդհատման մեջ իմ նպատակն է ստուգել, թե որքան սուրճ և կաթ է մնացել, այնուհետև հայտնաբերված արժեքը սերիական նավահանգստի միջոցով ուղարկել ցուցադրման էկրանին: Կաթի և սուրճի հատիկների մնացորդի չափումը սովորաբար կատարվում է սենսորների միջոցով: Պարզ մեթոդները ներառում են ճնշման տվիչներ, որոնք չափում են կաթի և սուրճի հատիկների ընթացիկ քաշը `որոշելու, թե որքան է մնացել:
Գրեք վերջինում
Այս հոդվածը միայն արձանագրում է իմ նախագծի զարգացման պարզ ընթացքը: Հաշվի առնելով ընկերության նախագծի գաղտնիությունը, իմ օգտագործած UI ցուցադրման ինտերֆեյսը նույնպես ինքս եմ պատրաստել, այլ ոչ թե այս նախագծի իրական UI ցուցադրման միջերեսը: STM32- ի ծածկագրի մասը ավելացնում է միայն MCU- ի ծայրամասային վարորդը և դրա հետ կապված տրամաբանական կոդը: Հաշվի առնելով նաև ընկերության նախագծի գաղտնիությունը, տեխնոլոգիայի հիմնական առանցքային մասը տրված չէ, խնդրում ենք հասկանալ: Սակայն, իմ տրամադրած ծածկագրի համաձայն, համագործակցեք STONE ցուցադրման էկրանի հետ: իմ ընկերները, ովքեր նաև ծրագրային ապահովման ինժեներներ են, ընդամենը մի քանի օր պետք է ծախսեն ՝ նախագծի ավարտի համար իմ ծածկագրերի հիմնական տեխնիկական մասերը ավելացնելու համար:
Նախագծի մասին ավելին իմանալու համար կտտացրեք այստեղ