Kazalo:

Primer programiranja MTP Arduino: 5 korakov
Primer programiranja MTP Arduino: 5 korakov

Video: Primer programiranja MTP Arduino: 5 korakov

Video: Primer programiranja MTP Arduino: 5 korakov
Video: Altium uvod #11: Izdelava novega simbola 2024, November
Anonim
Primer programiranja MTP Arduino
Primer programiranja MTP Arduino

V tem navodilu je prikazano, kako s programsko skico SLG46824/6 Arduino programirati Dialog SLG46824/6 GreenPAK ™ napravo za večkratno programiranje (MTP).

Večina naprav GreenPAK je za enkratno programiranje (OTP), kar pomeni, da jih enkrat, ko je zapisana njihova nehlapna pomnilniška banka (NVM), ni mogoče prepisati. GreenPAK -i s funkcijo MTP, na primer SLG46824 in SLG46826, imajo drugačno vrsto pomnilniške banke NVM, ki jo je mogoče programirati več kot enkrat.

Napisali smo skico Arduino, ki uporabniku omogoča programiranje MTP GreenPAK z nekaj preprostimi ukazi serijskega monitorja. V tem navodilu za uporabo uporabljamo SLG46826 kot naš GreenPAK z MTP.

Nudimo vzorčno kodo za Arduino Uno z odprtokodno platformo, ki temelji na C/C ++. Oblikovalci bi morali ekstrapolirati tehnike, uporabljene v kodi Arduino, za svojo posebno platformo.

Za podrobne informacije o specifikacijah signalov I2C, naslavljanju I2C in pomnilniških prostorih si oglejte priročnik za sistemsko programiranje GreenPAK na strani izdelka SLG46826. Ta Instructable ponuja preprosto izvedbo tega programskega vodnika.

Spodaj smo opisali potrebne korake za razumevanje, kako je programiran čip GreenPAK. Če pa želite samo doseči rezultat programiranja, prenesite programsko opremo GreenPAK, če si želite ogledati že dokončano oblikovalsko datoteko GreenPAK. Priključite razvojni komplet GreenPAK v računalnik in pritisnite program, da ustvarite IC po meri.

Korak: Povezave Arduino-GreenPAK

Povezave Arduino-GreenPAK
Povezave Arduino-GreenPAK
Povezave Arduino-GreenPAK
Povezave Arduino-GreenPAK

Če želite programirati NVM našega SLG46826 GreenPAK -a z našo skico Arduino, bomo morali najprej priključiti štiri zatiče Arduino Uno na naš GreenPAK. Te zatiče lahko priključite neposredno na vtičnico GreenPAK ali na odklopno ploščo, pri čemer je GreenPAK spajkan navzdol.

Upoštevajte, da zunanji vlečni upori I2C niso prikazani na sliki 1. Priključite 4,7 kΩ uporovni upor iz SCL in SDA na 3,3 V izhod Arduina.

2. korak: Izvoz podatkov GreenPAK NVM iz datoteke oblikovanja GreenPAK

Izvoz podatkov GreenPAK NVM iz datoteke oblikovanja GreenPAK
Izvoz podatkov GreenPAK NVM iz datoteke oblikovanja GreenPAK
Izvoz podatkov GreenPAK NVM iz datoteke oblikovanja GreenPAK
Izvoz podatkov GreenPAK NVM iz datoteke oblikovanja GreenPAK
Izvoz podatkov GreenPAK NVM iz datoteke oblikovanja GreenPAK
Izvoz podatkov GreenPAK NVM iz datoteke oblikovanja GreenPAK

Sestavili bomo zelo preprosto zasnovo GreenPAK, ki ponazarja, kako izvoziti podatke NVM. Spodnja zasnova je preprost nivojski menjalnik, pri katerem so modri zatiči na levi strani vezani na VDD (3,3 V), rumeni zatiči na desni pa na VDD2 (1,8 V).

Če želite izvoziti podatke iz te zasnove, izberite Datoteka → Izvozi → Izvozi NVM, kot je prikazano na sliki 3.

Nato boste morali za vrsto datoteke izbrati datoteke Intel HEX (*.hex) in datoteko shraniti.

Zdaj boste morali odpreti datoteko.hex z urejevalnikom besedila (na primer Notepad ++). Če želite izvedeti več o Intelovi obliki zapisa datoteke in skladnji HEX, si oglejte njeno stran Wikipedia. Za to aplikacijo nas zanima samo del podatkovne datoteke, kot je prikazano na sliki 5.

Označite in kopirajte 256 bajtov konfiguracijskih podatkov NVM, ki se nahajajo v datoteki HEX. Vsaka vrstica, ki jo kopiramo, je dolga 32 znakov, kar ustreza 16 bajtom.

Podatke prilepite v označeni del nvmString skice Arduino, kot je prikazano na sliki 6. Če uporabljate mikrokrmilnik, ki ni Arduino, lahko napišete funkcijo za razčlenitev nvmData, shranjenega v datoteki GreenPAK. GP6. (Če odprete datoteko GreenPAK z urejevalnikom besedila, boste videli, da podatke o projektu hranimo v lahko dostopni obliki XML.)

Če želite nastaviti podatke EEPROM za svojo zasnovo GreenPAK, na plošči s komponentami izberite blok EEPROM, odprite ploščo z lastnostmi in kliknite »Nastavi podatke«.

Zdaj lahko vsak bajt v EEPROM -u urejate posebej z našim vmesnikom GUI.

Ko so podatki EEPROM nastavljeni, jih lahko izvozite v datoteko HEX z uporabo iste metode, ki je bila opisana prej za izvoz podatkov NVM. Vstavite teh 256 bajtov podatkov EEPROM v odsek eepromString skice Arduino.

Za vsako zasnovo po meri je pomembno preveriti nastavitve zaščite na zavihku »Varnost« v nastavitvah projekta. Ta zavihek konfigurira zaščitne bite za matrične konfiguracijske registre, NVM in EEPROM. Pri določenih konfiguracijah lahko nalaganje zaporedja NVM priklene SLG46824/6 na trenutno konfiguracijo in odstrani funkcijo MTP čipa.

3. korak: Uporabite Arduino Sketch

Uporabite Arduino Sketch
Uporabite Arduino Sketch

Skico naložite v svoj Arduino in odprite serijski monitor s hitrostjo 115200 baud. Zdaj lahko uporabite pozive MENU skice za izvajanje več ukazov:

● Branje - prebere podatke NVM naprave ali podatke EEPROM z uporabo navedenega podrejenega naslova

● Izbriši - izbriše podatke NVM ali EEPROM v napravi z navedenim podrejenim naslovom

● Zapiši - izbriše in nato zapiše podatke NVM naprave ali podatke EEPROM z navedenim podrejenim naslovom. Ta ukaz zapiše podatke, ki so shranjeni v matrikah nvmString ali eepromString.

● Ping - vrne seznam podrejenih naslovov naprav, ki so povezani z vodilom I2C

Rezultati teh ukazov bodo natisnjeni na konzolo serijskega monitorja.

4. korak: Nasveti za programiranje in najboljše prakse

Med podporo SLG46824/6 smo dokumentirali nekaj programskih nasvetov, s katerimi se lahko izognemo pogostim napakam, povezanim z brisanjem in pisanjem v naslovni prostor NVM. Naslednji pododdelki podrobneje opisujejo to temo.

1. Izvajanje natančne 16-bajtne strani NVM zapiše:

Pri zapisovanju podatkov v NVM SLG46824/6 se je treba izogniti trem tehnikam:

● Stran zapisuje z manj kot 16 bajti

● Stran zapisuje z več kot 16 bajti

● Zapisi strani, ki se ne začnejo pri prvem registru strani (IE: 0x10, 0x20 itd.)

Če uporabite katero koli od zgornjih tehnik, vmesnik MTP ne upošteva zapisa I2C, da se izogne nalaganju NVM z napačnimi informacijami. Priporočamo, da po pisanju izvedete branje I2C naslovnega prostora NVM, da preverite pravilen prenos podatkov.

2. Prenos podatkov NVM v matrične konfiguracijske registre

Ko je zapisan NVM, se konfiguracijski registri matrike ne naložijo samodejno z novo zapisanimi podatki NVM. Prenos je treba začeti ročno s ciklom PAK VDD ali z generiranjem mehke ponastavitve z uporabo I2C. Z nastavitvijo registra na naslovu 0xC8 naprava znova omogoči zaporedje ponastavitve pri vklopu (POR) in ponovno naloži podatke registra iz NVM v registre.

3. Ponastavitev naslova I2C po izbrisu NVM:

Ko se NVM izbriše, bo naslov NVM, ki vsebuje podrejeni naslov I2C, nastavljen na 0000. Po izbrisu bo čip ohranil svoj trenutni podrejeni naslov v konfiguracijskih registrih, dokler se naprava ne ponastavi, kot je opisano zgoraj. Ko je čip ponastavljen, mora biti podrejeni naslov I2C nastavljen na naslov 0xCA v konfiguracijskih registrih vsakič, ko se GreenPAK ciklira ali ponastavi. To je treba storiti, dokler se v NVM ne zapiše nova naslovna stran I2C podrejenega.

5. korak: Razprava o napakah

Razprava o napaki
Razprava o napaki

Ko zapisuje v »Bajt za brisanje strani« (naslov: 0xE3), SLG46824/6 po delu »Podatki« ukaza I2C ustvari ACK, ki ni skladen z I2C. To vedenje se lahko razlaga kot NACK, odvisno od izvajanja glavnega I2C.

Da bi se prilagodili temu vedenju, smo programer Arduino spremenili tako, da smo komentirali kodo, prikazano na sliki 11. Ta del kode preverja, ali obstaja I2C ACK na koncu vsakega ukaza I2C v funkciji eraseChip (). Ta funkcija se uporablja za brisanje strani NVM in EEPROM. Ker se ta odsek kode nahaja v zanki For, je "return -1;" vrstica povzroči, da MCU predčasno zapre funkcijo.

Kljub prisotnosti NACK -a se bosta funkciji brisanja NVM in EEPROM pravilno izvajali. Za podrobnejšo razlago tega vedenja si oglejte »2. vprašanje: Vedenje ACK, ki ni skladno z I2C, za bajt za brisanje strani NVM in EEPROM« v dokumentu o napakah SLG46824/6 (Revizija XC) na spletnem mestu Dialoga.

Zaključek

V tem navodilu opisujemo postopek uporabe priloženega programerja Arduino za nalaganje nizov NVM in EEPROM po meri na IC IC GreenPAK. Koda v Arduino Sketchu je temeljito komentirana, če pa imate kakršna koli vprašanja v zvezi s skico, se obrnite na enega od naših inženirjev terenskih aplikacij ali postavite svoje vprašanje na naš forum. Za podrobnejše informacije o programih in postopkih programiranja MTP se obrnite na Dialog's In-System Programming Guide.

Priporočena: