Turinys:

MTP „Arduino“programavimo pavyzdys: 5 žingsniai
MTP „Arduino“programavimo pavyzdys: 5 žingsniai

Video: MTP „Arduino“programavimo pavyzdys: 5 žingsniai

Video: MTP „Arduino“programavimo pavyzdys: 5 žingsniai
Video: #407 ESP32-S2 New Arduino USB Functionality: Cool Combination with WiFi 2024, Lapkritis
Anonim
MTP „Arduino“programavimo pavyzdys
MTP „Arduino“programavimo pavyzdys

Šioje instrukcijoje parodome, kaip naudoti programavimo eskizą SLG46824/6 „Arduino“programuojant „Dialog SLG46824/6 GreenPAK ™ Multiple-Time Programmable“(MTP) įrenginį.

Dauguma „GreenPAK“įrenginių yra vienkartiniai programuojami (OTP), tai reiškia, kad parašius jų nepastoviosios atminties banką (NVM), jo negalima perrašyti. „GreenPAK“su MTP funkcija, pvz., SLG46824 ir SLG46826, turi kitokio tipo NVM atminties banką, kurį galima užprogramuoti daugiau nei vieną kartą.

Parašėme „Arduino“eskizą, kuris leidžia vartotojui užprogramuoti MTP GreenPAK naudojant kelias paprastas serijinio monitoriaus komandas. Šioje instrukcijoje mes naudojame „GreenPAK“su MTP kaip SLG46826.

Mes pateikiame „Arduino Uno“kodo pavyzdį naudodami atvirojo kodo platformą, pagrįstą C/C ++. Dizaineriai turėtų ekstrapoliuoti „Arduino“kode naudojamus metodus savo konkrečiai platformai.

Daugiau informacijos apie I2C signalo specifikacijas, I2C adresavimą ir atminties vietas rasite „GreenPAK“programavimo vadove, pateiktame SLG46826 produkto puslapyje. Šioje instrukcijoje pateikiamas paprastas šio programavimo vadovo įgyvendinimas.

Žemiau aprašėme veiksmus, kurių reikia norint suprasti, kaip buvo užprogramuotas „GreenPAK“lustas. Tačiau, jei norite gauti programavimo rezultatą, atsisiųskite „GreenPAK“programinę įrangą, kad peržiūrėtumėte jau užpildytą „GreenPAK“dizaino failą. Prijunkite „GreenPAK Development Kit“prie kompiuterio ir paspauskite programą, kad sukurtumėte pasirinktinį IC.

1 žingsnis: „Arduino-GreenPAK“ryšiai

„Arduino-GreenPAK“jungtys
„Arduino-GreenPAK“jungtys
„Arduino-GreenPAK“jungtys
„Arduino-GreenPAK“jungtys

Norėdami užprogramuoti mūsų SLG46826 GreenPAK NVM su mūsų „Arduino“eskizu, pirmiausia turėsime prijungti keturis „Arduino Uno“kaiščius prie „GreenPAK“. Šiuos kaiščius galite prijungti tiesiai prie „GreenPAK“lizdo adapterio arba prie pertraukimo plokštės, kai „GreenPAK“yra prilituota.

Atminkite, kad išoriniai I2C traukimo rezistoriai nerodomi 1 paveiksle. Prijunkite 4,7 kΩ ištraukiamąjį rezistorių iš SCL ir SDA prie „Arduino“3,3 V išėjimo.

2 veiksmas: „GreenPAK NVM“duomenų eksportavimas iš „GreenPAK“dizaino failo

„GreenPAK NVM“duomenų eksportavimas iš „GreenPAK“dizaino failo
„GreenPAK NVM“duomenų eksportavimas iš „GreenPAK“dizaino failo
„GreenPAK NVM“duomenų eksportavimas iš „GreenPAK“dizaino failo
„GreenPAK NVM“duomenų eksportavimas iš „GreenPAK“dizaino failo
„GreenPAK NVM“duomenų eksportavimas iš „GreenPAK“dizaino failo
„GreenPAK NVM“duomenų eksportavimas iš „GreenPAK“dizaino failo

Sudarysime labai paprastą „GreenPAK“dizainą, kuris parodys, kaip eksportuoti NVM duomenis. Žemiau esantis dizainas yra paprastas lygio perjungiklis, kai mėlyni kaiščiai kairėje yra susieti su VDD (3.3v), o geltoni kaiščiai dešinėje yra susieti su VDD2 (1.8v).

Norėdami eksportuoti informaciją iš šio dizaino, turite pasirinkti Failas → Eksportuoti → Eksportuoti NVM, kaip parodyta 3 paveiksle.

Tada kaip failo tipą turėsite pasirinkti „Intel HEX Files“(*.hex) ir išsaugoti failą.

Dabar turėsite atidaryti.hex failą naudodami teksto rengyklę (pvz., „Notepad ++“). Norėdami sužinoti daugiau apie „Intel“HEX failo formatą ir sintaksę, apsilankykite „Wikipedia“puslapyje. Šiai programai mus domina tik failo duomenų dalis, kaip parodyta 5 paveiksle.

Pažymėkite ir nukopijuokite 256 baitus NVM konfigūracijos duomenų, esančių HEX faile. Kiekviena mūsų kopijuojama eilutė yra 32 simbolių, o tai atitinka 16 baitų.

Įklijuokite informaciją į paryškintą „Arduino“eskizo skyrių nvmString , kaip parodyta 6 paveiksle. Jei naudojate ne „Arduino“mikrovaldiklį, galite parašyti funkciją, kad išanalizuotumėte „GreenPAK. GP6“faile išsaugotus „nvmData“duomenis. (Jei atidarysite „GreenPAK“failą naudodami teksto redaktorių, pamatysite, kad projekto informaciją saugome lengvai pasiekiamu XML formatu.)

Norėdami nustatyti „GreenPAK“dizaino EEPROM duomenis, komponentų skydelyje pasirinkite EEPROM bloką, atidarykite jo ypatybių skydelį ir spustelėkite „Nustatyti duomenis“.

Dabar galite atskirai redaguoti kiekvieną baitą EEPROM naudodami mūsų GUI sąsają.

Nustatę EEPROM duomenis, galite juos eksportuoti į HEX failą, naudodami tą patį metodą, aprašytą anksčiau NVM duomenų eksportavimui. Įdėkite šiuos 256 baitus EEPROM duomenų į „Arduino“eskizo skyrių „eepromString.

Kiekvieno pasirinkto dizaino atveju svarbu patikrinti apsaugos nustatymus projekto nustatymų skirtuke „Sauga“. Šiame skirtuke konfigūruojami matricos konfigūracijos registrų, NVM ir EEPROM apsaugos bitai. Esant tam tikroms konfigūracijoms, įkėlus NVM seką, SLG46824/6 galima užrakinti dabartinę konfigūraciją ir pašalinti lusto MTP funkcijas.

3 žingsnis: naudokite „Arduino“eskizą

Naudokite „Arduino“eskizą
Naudokite „Arduino“eskizą

Įkelkite eskizą į „Arduino“ir atidarykite nuoseklųjį monitorių naudodami 115200 baudų spartą. Dabar galite naudoti eskizo MENU raginimus kelioms komandoms atlikti:

● Skaityti - nuskaito įrenginio NVM duomenis arba EEPROM duomenis, naudodami nurodytą vergo adresą

● Ištrinti - ištrina įrenginio NVM duomenis arba EEPROM duomenis, naudodami nurodytą vergo adresą

● Rašyti - ištrina ir tada įrašo įrenginio NVM duomenis arba EEPROM duomenis, naudodami nurodytą vergo adresą. Ši komanda įrašo duomenis, įrašytus į nvmString arba eepromString masyvus.

● „Ping“- grąžina prie I2C magistralės prijungtų įrenginių vergų adresų sąrašą

Šių komandų rezultatai bus atspausdinti serijinio monitoriaus pulte.

4 žingsnis: programavimo patarimai ir geriausia praktika

Remdami SLG46824/6, užfiksavome keletą programavimo patarimų, kurie padės išvengti bendrų spąstų, susijusių su ištrynimu ir rašymu į NVM adresų sritį. Tolesniuose poskyriuose ši tema aprašoma išsamiau.

1. Tikslių 16 baitų NVM puslapių rašymo vykdymas:

Rašant duomenis į SLG46824/6 NVM, reikia vengti trijų būdų:

● Puslapio įrašai su mažiau nei 16 baitų

● Puslapis rašo daugiau nei 16 baitų

● Puslapio rašymas, kuris neprasideda nuo pirmojo puslapio registro (IE: 0x10, 0x20 ir kt.)

Jei naudojamas bet kuris iš aukščiau išvardytų metodų, MTP sąsaja nepaisys I2C rašymo, kad į NVM nebūtų įkelta neteisinga informacija. Rekomenduojame po rašymo atlikti I2C skaitymą NVM adresų erdvėje, kad būtų patikrintas teisingas duomenų perdavimas.

2. NVM duomenų perkėlimas į matricos konfigūracijos registrus

Kai rašomas NVM, matricos konfigūracijos registrai nėra automatiškai perkraunami su naujai parašytais NVM duomenimis. Perkėlimas turi būti pradėtas rankiniu būdu, sukant dviračiu PAK VDD arba sukuriant minkštą atstatymą naudojant I2C. Nustatydamas registrą adresu 0xC8, įrenginys iš naujo įgalina įjungimo iš naujo (POR) seką ir iš naujo įkelia registro duomenis iš NVM į registrus.

3. I2C adreso nustatymas iš naujo po NVM ištrynimo:

Kai NVM bus ištrintas, NVM adresas, kuriame yra I2C vergo adresas, bus nustatytas į 0000. Po ištrynimo lustas išlaikys savo dabartinį vergo adresą konfigūracijos registruose, kol įrenginys bus atkurtas, kaip aprašyta aukščiau. Kai mikroschema bus iš naujo nustatyta, I2C slave adresas turi būti nustatytas adresu 0xCA konfigūracijos registruose kiekvieną kartą, kai „GreenPAK“įjungiamas maitinimas arba iš naujo nustatomas. Tai turi būti daroma tol, kol NVM nebus parašytas naujas I2C vergo adreso puslapis.

5 žingsnis: klaidinga diskusija

Errata Diskusija
Errata Diskusija

Rašant į „Puslapio ištrynimo baitą“(adresas: 0xE3), SLG46824/6 po I2C komandos dalies „Duomenys“sukuria su I2C nesuderinamą ACK. Šis elgesys gali būti interpretuojamas kaip NACK, priklausomai nuo I2C pagrindinio diegimo.

Siekdami prisitaikyti prie tokio elgesio, pakeitėme „Arduino“programuotoją, pakomentuodami 11 paveiksle parodytą kodą. Šis kodo skyrius patikrina, ar nėra I2C ACK kiekvienos funkcijos „eraseChip“() funkcijos pabaigoje. Ši funkcija naudojama NVM ir EEPROM puslapiams ištrinti. Kadangi ši kodo skiltis yra for For, ciklas „return -1“eilutė priverčia MCU per anksti išeiti iš funkcijos.

Nepaisant to, kad yra NACK, NVM ir EEPROM ištrynimo funkcijos veiks tinkamai. Norėdami išsamiai paaiškinti šią elgseną, skaitykite Dialogo svetainės SLG46824/6 klaidų dokumento (XC versija) skiltyje „2 problema: su I2C nesuderinama ACK elgsena NVM ir EEPROM puslapio ištrynimo baitams“.

Išvada

Šioje instrukcijoje aprašome pateikto „Arduino“programuotojo naudojimo procesą įkeliant pasirinktines NVM ir EEPROM eilutes į „GreenPAK IC“. „Arduino“eskizo kodas yra išsamiai komentuojamas, tačiau jei turite klausimų dėl eskizo, susisiekite su vienu iš mūsų lauko taikomųjų programų inžinierių arba paskelbkite savo klausimą mūsų forume. Išsamesnės informacijos apie MTP programavimo registrus ir procedūras rasite Dialog sistemos programavimo vadove.

Rekomenduojamas: