Turinys:
- 1 žingsnis: „Arduino-GreenPAK“ryšiai
- 2 veiksmas: „GreenPAK NVM“duomenų eksportavimas iš „GreenPAK“dizaino failo
- 3 žingsnis: naudokite „Arduino“eskizą
- 4 žingsnis: programavimo patarimai ir geriausia praktika
- 5 žingsnis: klaidinga diskusija
Video: MTP „Arduino“programavimo pavyzdys: 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
Š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
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
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ą
Į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
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:
Kaip sukurti savo OS! (paketas ir pavyzdys viduje): 5 žingsniai
Kaip sukurti savo OS! (partija ir pavyzdys viduje): padarykite tai dabar
Modernus ir naujas bei lengvesnis spintelės pavyzdys su „Arduino Matrix“klaviatūra 4x4: 3 žingsniai
Modernus ir naujas bei lengvesnis spintelės su „Arduino Matrix“klaviatūra 4x4 pavyzdys: Kitas LCD klaviatūros matricos 4x4 su I2C grandine pavyzdys
APP INVENTOR 2 - Išvalykite priekinius patarimus (+4 pavyzdys): 6 žingsniai
APP INVENTOR 2 - švarūs priekiniai patarimai (+4 pavyzdys): pažiūrėsime, kaip galime padaryti jūsų programą AI2 estetišką :) Šį kartą kodo nėra, tik patarimai sklandžiai programai, kaip 4 pavyzdys viršuje
„IoT Guru Cloud“- paprastas diagramos pavyzdys: 4 žingsniai
„IoT Guru Cloud“- paprasta diagrama Pavyzdys: „IoT Guru Cloud“teikia daugybę galinių paslaugų per REST API ir jūs galite lengvai integruoti šiuos REST skambučius į savo tinklalapį. Naudodami „Highcharts“, galite rodyti matavimo diagramas tiesiog skambindami AJAX
Spintelės su „Arduino Matrix“klaviatūra 4x4 pavyzdys: 6 žingsniai
Spintelės su „Arduino Matrix“klaviatūra 4x4 pavyzdys: 2 būdai valdyti 16 mygtukų klaviatūrą su mažiausiai smeigtukais