Բովանդակություն:

MTP Arduino ծրագրավորման օրինակ. 5 քայլ
MTP Arduino ծրագրավորման օրինակ. 5 քայլ

Video: MTP Arduino ծրագրավորման օրինակ. 5 քայլ

Video: MTP Arduino ծրագրավորման օրինակ. 5 քայլ
Video: MTP 12103 COMPUTER PROGRAMMING 2024, Նոյեմբեր
Anonim
MTP Arduino ծրագրավորման օրինակ
MTP Arduino ծրագրավորման օրինակ

Այս Ուղեցույցում մենք ցույց ենք տալիս, թե ինչպես օգտագործել SLG46824/6 Arduino ծրագրավորման ուրվագիծը ՝ Dialog SLG46824/6 GreenPAK ™ Multiple-Time Programmable (MTP) սարք ծրագրավորելու համար:

GreenPAK սարքերի մեծամասնությունը մեկանգամյա ծրագրավորվող է (OTP), ինչը նշանակում է, որ երբ գրվում է դրանց ոչ-անկայուն հիշողության բանկը (NVM), այն չի կարող վերագրվել: MTP գործառույթով GreenPAK- երը, ինչպես SLG46824 և SLG46826, ունեն տարբեր տեսակի NVM հիշողության բանկ, որը կարող է ծրագրավորվել մեկից ավելի անգամ:

Մենք գրել ենք Arduino- ի ուրվագիծ, որը թույլ է տալիս օգտվողին ծրագրավորել MTP GreenPAK- ը մի քանի սերիական մոնիտորի պարզ հրամաններով: Այս հրահանգում մենք օգտագործում ենք SLG46826 որպես մեր GreenPAK ՝ MTP- ով:

Մենք տրամադրում ենք օրինակելի կոդը Arduino Uno- ի համար ՝ օգտագործելով բաց կոդով հարթակ ՝ հիմնված C/C ++-ի վրա: Դիզայներները պետք է արտացոլեն Arduino ծածկագրում օգտագործվող տեխնիկան իրենց հատուկ հարթակի համար:

I2C ազդանշանների բնութագրերի, I2C հասցեագրման և հիշողության տարածքների վերաբերյալ հատուկ տեղեկատվության համար խնդրում ենք հղում կատարել GreenPAK համակարգային ծրագրավորման ուղեցույցին, որը տրամադրված է SLG46826 արտադրանքի էջում: Այս հրահանգը ապահովում է այս ծրագրավորման ուղեցույցի պարզ իրականացումը:

Ստորև մենք նկարագրեցինք անհրաժեշտ քայլերը `հասկանալու համար, թե ինչպես է ծրագրավորվել GreenPAK չիպը: Այնուամենայնիվ, եթե դուք պարզապես ցանկանում եք ստանալ ծրագրավորման արդյունքը, ներբեռնեք GreenPAK ծրագիրը ՝ արդեն ավարտված GreenPAK դիզայնի ֆայլը դիտելու համար: Միացրեք GreenPAK Development Kit- ը ձեր համակարգչին և հարվածեք ծրագրին `անհատականացված IC ստեղծելու համար:

Քայլ 1. Arduino-GreenPAK միացումներ

Arduino-GreenPAK միացումներ
Arduino-GreenPAK միացումներ
Arduino-GreenPAK միացումներ
Arduino-GreenPAK միացումներ

Մեր SLG46826 GreenPAK- ի NVM- ն Arduino էսքիզով ծրագրավորելու համար նախ պետք է Arduino Uno- ի չորս կապում միացնենք մեր GreenPAK- ին: Դուք կարող եք այս կապումներն ուղղակիորեն միացնել GreenPAK վարդակից ադապտերին կամ GreenPAK- ի հետ միացված ջարդման տախտակին:

Խնդրում ենք նկատի ունենալ, որ արտաքին I2C ձգվող դիմադրիչները ցույց չեն տրված Նկար 1 -ում: Խնդրում ենք միացնել 4.7 kΩ ձգվող դիմադրություն ինչպես SCL- ից, այնպես էլ SDA- ից Arduino- ի 3.3 Վ ելքային հզորությանը:

Քայլ 2. GreenPAK NVM տվյալների արտահանում GreenPAK նախագծման ֆայլից

GreenPAK NVM տվյալների արտահանում GreenPAK դիզայնի ֆայլից
GreenPAK NVM տվյալների արտահանում GreenPAK դիզայնի ֆայլից
GreenPAK NVM տվյալների արտահանում GreenPAK դիզայնի ֆայլից
GreenPAK NVM տվյալների արտահանում GreenPAK դիզայնի ֆայլից
GreenPAK NVM տվյալների արտահանում GreenPAK դիզայնի ֆայլից
GreenPAK NVM տվյալների արտահանում GreenPAK դիզայնի ֆայլից

Մենք կկազմենք GreenPAK- ի շատ պարզ դիզայն ՝ պատկերելու համար, թե ինչպես արտահանել NVM տվյալները: Ստորև ներկայացված դիզայնը պարզ մակարդակի փոփոխիչ է, որտեղ ձախ կապույտ կապումներն ամրացված են VDD- ով (3.3v), իսկ աջից դեղին կապում `VDD2 (1.8v):

Այս դիզայնից տեղեկատվություն արտահանելու համար հարկավոր է ընտրել Ֆայլ → Արտահանել → Արտահանել NVM, ինչպես ցույց է տրված Նկար 3 -ում:

Դրանից հետո ձեզ հարկավոր է ընտրել Intel HEX ֆայլեր (*.hex) որպես ֆայլի տեսակ և պահպանել ֆայլը:

Այժմ, ձեզ հարկավոր է բացել.hex ֆայլը տեքստային խմբագրիչով (ինչպես Notepad ++): Intel- ի HEX ֆայլի ձևաչափի և շարահյուսության մասին ավելին իմանալու համար այցելեք նրա Վիքիպեդիայի էջը: Այս հավելվածի համար մեզ հետաքրքրում է միայն ֆայլի տվյալների հատվածը, ինչպես ցույց է տրված Նկար 5 -ում:

Նշեք և պատճենեք HEX ֆայլի մեջ տեղակայված NVM կազմաձևման տվյալների 256 բայթ: Յուրաքանչյուր տող, որը մենք պատճենում ենք, ունի 32 նիշ, որը համապատասխանում է 16 բայթ:

Տեղադրեք տեղեկատվությունը Arduino- ի էսքիզի ընդգծված nvmString բաժնում, ինչպես ցույց է տրված Նկար 6-ում: Եթե օգտագործում եք ոչ Arduino միկրոկառավարիչ, կարող եք գրել գործառույթ ՝ GreenPAK. GP6 ֆայլում պահված nvmData- ի վերլուծության համար: (Եթե GreenPAK ֆայլը բացեք տեքստային խմբագրիչով, կտեսնեք, որ մենք նախագծի տեղեկատվությունը պահում ենք հեշտ հասանելի XML ձևաչափով):

EEPROM- ի տվյալները ձեր GreenPAK նախագծի համար սահմանելու համար բաղադրիչների վահանակից ընտրեք EEPROM բլոկը, բացեք դրա հատկությունների վահանակը և կտտացրեք «Սահմանել տվյալները»:

Այժմ կարող եք EEPROM- ի յուրաքանչյուր բայթ առանձին խմբագրել մեր GUI ինտերֆեյսի միջոցով:

Երբ ձեր EEPROM տվյալները կարգավորվեն, կարող եք դրանք արտահանել HEX ֆայլ ՝ օգտագործելով NVM տվյալների արտահանման համար նախկինում նկարագրված նույն մեթոդը: Տեղադրեք այս 256 բայթ EEPROM տվյալների Arduino ուրվագծի eepromString բաժնում:

Յուրաքանչյուր անհատական դիզայնի համար կարևոր է ստուգել պաշտպանության կարգավորումները ծրագրի պարամետրերի «Անվտանգություն» ներդիրում: Այս ներդիրը կարգավորում է մատրիցային կազմաձևման գրանցամատյանների, NVM- ի և EEPROM- ի պաշտպանության բիթերը: Որոշ կոնֆիգուրացիաների դեպքում NVM հաջորդականության վերբեռնումը կարող է կողպել SLG46824/6 -ը իր ընթացիկ կազմաձևին և հեռացնել չիպի MTP ֆունկցիոնալությունը:

Քայլ 3: Օգտագործեք Arduino ուրվագիծը

Օգտագործեք Arduino Sketch- ը
Օգտագործեք Arduino Sketch- ը

Վերբեռնեք էսքիզը ձեր Arduino- ում և բացեք սերիական մոնիտորը 115200 բաուդ արագությամբ: Այժմ դուք կարող եք օգտագործել էսքիզի MENU- ի հուշումները ՝ մի քանի հրաման կատարելու համար.

● Կարդալ - կարդում է կամ սարքի NVM տվյալները, կամ EEPROM- ի տվյալները `օգտագործելով նշված ստրուկի հասցեն

● raseնջել - ջնջում է կամ սարքի NVM տվյալները կամ EEPROM տվյալները ՝ օգտագործելով նշված ստրուկի հասցեն

● Գրեք - rasesնջում և այնուհետև գրում է կամ սարքի NVM տվյալները կամ EEPROM տվյալները ՝ օգտագործելով նշված ստրուկի հասցեն: Այս հրամանը գրում է այն տվյալները, որոնք պահվում են nvmString կամ eepromString զանգվածներում:

● Ping - վերադարձնում է սարքի ստրուկ հասցեների ցանկը, որոնք միացված են I2C ավտոբուսին

Այս հրամանների արդյունքները տպվելու են սերիական մոնիտորի վահանակում:

Քայլ 4. mingրագրավորման խորհուրդներ և լավագույն փորձ

SLG46824/6 -ին աջակցելու ընթացքում մենք փաստաթղթավորեցինք մի քանի ծրագրավորման խորհուրդներ, որոնք կօգնեն խուսափել NVM հասցեների տարածքի ջնջման և գրելու հետ կապված ընդհանուր որոգայթներից: Հետևյալ ենթաբաժիններն ավելի մանրամասն նկարագրում են այս թեման:

1. cutշգրիտ 16 բայթ NVM էջը գրում է.

SLG46824/6 -ի NVM- ին տվյալներ գրելիս խուսափելու երեք եղանակ կա.

● Էջը գրում է 16 բայթից պակաս

● Էջը գրում է ավելի քան 16 բայթ

● Էջը գրում է, որ չի սկսվում էջի առաջին գրանցումից (IE: 0x10, 0x20 և այլն)

Եթե վերը նշված մեթոդներից որևէ մեկն օգտագործվում է, MTP ինտերֆեյսը անտեսում է I2C գրությունը, որպեսզի խուսափի NVM- ի սխալ տեղեկատվությամբ բեռնումից: Մենք խորհուրդ ենք տալիս գրելուց հետո կատարել NVM հասցեի տարածքի I2C ընթերցում `տվյալների ճիշտ փոխանցումը ստուգելու համար:

2. NVM Տվյալների փոխանցում Մատրիցայի կազմաձևման գրանցամատյաններում

Երբ NVM- ն գրված է, մատրիցի կազմաձևման գրանցամատյանները ինքնաբերաբար չեն վերբեռնվում նոր գրված NVM տվյալներով: Փոխանցումը պետք է ձեռնարկվի ձեռքով `PAK VDD- ի հեծանվավազքի միջոցով կամ I2C- ի միջոցով փափուկ վերականգնում առաջացնելով: 0xC8 հասցեում գրանցամատյան սահմանելով ՝ սարքը նորից միացնում է Power-On Reset (POR) հաջորդականությունը և գրանցիչի տվյալները վերաբեռնում NVM- ից գրանցամատյաններում:

3. Վերականգնել I2C հասցեն NVM ջնջումից հետո.

Երբ NVM- ը ջնջվի, N2M հասցեն պարունակող NVM հասցեն կսահմանվի 0000: theնջումից հետո չիպը կպահպանի իր ընթացիկ ստրուկի հասցեն կազմաձևման գրանցամատյաններում, մինչև սարքը չվերակայվի, ինչպես նկարագրված է վերևում: Չիպը վերակայվելուց հետո I2C ստրուկի հասցեն պետք է տեղադրվի 0xCA հասցեում ՝ կազմաձևման գրանցամատյաններում, ամեն անգամ, երբ GreenPAK- ը հոսանքահարվում կամ զրոյացվում է: Դա պետք է արվի, քանի դեռ N2M- ում գրված չէ I2C ստրուկի հասցեի էջը:

Քայլ 5. Errata- ի քննարկում

Էրրատայի քննարկում
Էրրատայի քննարկում

«Էջի ջնջման բայթ» (Հասցե ՝ 0xE3) գրելիս SLG46824/6-ը I2C հրամանի «Տվյալներ» հատվածից հետո արտադրում է I2C- ին չհամապատասխանող ACK: Այս պահվածքը կարող է մեկնաբանվել որպես NACK ՝ կախված I2C վարպետի իրականացումից:

Այս վարքագծին հարմարվելու համար մենք փոփոխեցինք Arduino ծրագրավորողը `մեկնաբանելով Նկար 11 -ում նշված կոդը: Այս ծածկագրի հատվածը ստուգում է I2C ACK- ը eraseChip () գործառույթի յուրաքանչյուր I2C հրամանի վերջում: Այս գործառույթը օգտագործվում է NVM և EEPROM էջերը ջնջելու համար: Քանի որ կոդի այս հատվածը գտնվում է For loop- ում, «վերադարձ -1;» գծի պատճառով MCU- ն վաղաժամ դուրս է գալիս գործառույթից:

Չնայած NACK- ի առկայությանը, NVM և EEPROM ջնջման գործառույթները ճիշտ կիրականացվեն: Այս վարքագծի մանրամասն բացատրության համար խնդրում ենք անդրադառնալ «Թողարկում 2. NVM- ի և EEPROM էջի ջնջման բայթ ոչ I2C- ի համաձայն ACK վարքագծին» SLG46824/6 սխալի փաստաթղթում (Revision XC) ՝ Dialog- ի կայքում:

Եզրակացություն

Այս Instructable- ում մենք նկարագրում ենք տրամադրված Arduino ծրագրավորողի օգտագործման գործընթացը GreenPAK IC- ում մաքսային NVM և EEPROM տողերը վերբեռնելու համար: Arduino Sketch- ի ծածկագիրը մանրակրկիտ մեկնաբանված է, բայց եթե էսքիզին վերաբերող որևէ հարց ունեք, դիմեք մեր դաշտային կիրառման ճարտարագետներից մեկին կամ ձեր հարցը տեղադրեք մեր ֆորումում: MTP ծրագրավորման գրանցամատյանների և ընթացակարգերի վերաբերյալ ավելի մանրամասն տեղեկությունների համար դիմեք Dialog's In-System Programming Guide- ին:

Խորհուրդ ենք տալիս: