Sadržaj:

Primjer programiranja MTP Arduino: 5 koraka
Primjer programiranja MTP Arduino: 5 koraka

Video: Primjer programiranja MTP Arduino: 5 koraka

Video: Primjer programiranja MTP Arduino: 5 koraka
Video: Altium uvod #11: Izdelava novega simbola 2024, Srpanj
Anonim
Primjer programiranja MTP Arduino
Primjer programiranja MTP Arduino

U ovom Instructable-u pokazat ćemo kako koristiti programsku skicu SLG46824/6 Arduino za programiranje Dialog SLG46824/6 GreenPAK ™ uređaja za višestruko programiranje (MTP).

Većina GreenPAK uređaja je jednokratno programibilna (OTP), što znači da se jednom kad se upiše njihova memorijska banka (NVM) ne može prebrisati. GreenPAK -ovi sa značajkom MTP, poput SLG46824 i SLG46826, imaju različitu vrstu NVM memorijske banke koja se može programirati više puta.

Napisali smo Arduino skicu koja omogućuje korisniku da programira MTP GreenPAK s nekoliko jednostavnih naredbi za serijski monitor. U ovom Instructable -u koristimo SLG46826 kao naš GreenPAK s MTP -om.

Pružamo uzorak koda za Arduino Uno pomoću platforme otvorenog koda zasnovane na C/C ++. Dizajneri bi trebali ekstrapolirati tehnike korištene u Arduino kodu za svoju specifičnu platformu.

Za posebne informacije o specifikacijama I2C signala, I2C adresiranju i memorijskim prostorima, molimo pogledajte Vodič za programiranje unutar sustava GreenPAK koji se nalazi na stranici proizvoda SLG46826. Ovaj Instructable pruža jednostavnu implementaciju ovog programskog vodiča.

U nastavku smo opisali korake potrebne za razumijevanje načina programiranja GreenPAK čipa. Međutim, ako samo želite dobiti rezultat programiranja, preuzmite GreenPAK softver kako biste vidjeli već dovršenu datoteku za dizajn GreenPAK. Priključite GreenPAK Development Kit na svoje računalo i pritisnite program za stvaranje prilagođenog IC -a.

Korak 1: Arduino-GreenPAK veze

Arduino-GreenPAK veze
Arduino-GreenPAK veze
Arduino-GreenPAK veze
Arduino-GreenPAK veze

Za programiranje NVM -a našeg SLG46826 GreenPAK -a s našom Arduino skicom, prvo ćemo morati spojiti četiri Arduino Uno pina na naš GreenPAK. Ove pinove možete spojiti izravno na adapter za utičnicu GreenPAK ili na ploču za odvajanje sa lemljenjem prema gore.

Napominjemo da vanjski I2C pull -up otpornici nisu prikazani na slici 1. Molimo spojite 4,7 kΩ pull -up otpornik iz SCL -a i SDA -a na Arduino 3,3 V izlaz.

Korak 2: Izvoz podataka GreenPAK NVM -a iz datoteke dizajna GreenPAK -a

Izvoz GreenPAK NVM podataka iz GreenPAK datoteke za dizajn
Izvoz GreenPAK NVM podataka iz GreenPAK datoteke za dizajn
Izvoz GreenPAK NVM podataka iz GreenPAK datoteke za dizajn
Izvoz GreenPAK NVM podataka iz GreenPAK datoteke za dizajn
Izvoz GreenPAK NVM podataka iz GreenPAK datoteke za dizajn
Izvoz GreenPAK NVM podataka iz GreenPAK datoteke za dizajn

Sastavit ćemo vrlo jednostavan dizajn GreenPAK -a za ilustraciju načina izvoza NVM podataka. Donji dizajn je jednostavan mjenjač razine gdje su plave iglice s lijeve strane vezane za VDD (3,3 v), dok su žute igle s desne strane vezane za VDD2 (1,8 v).

Da biste izvezli podatke iz ovog dizajna, morate odabrati Datoteka → Izvoz → Izvezi NVM, kao što je prikazano na slici 3.

Zatim ćete kao vrstu datoteke morati odabrati Intel HEX datoteke (*.hex) i spremiti datoteku.

Sada ćete morati otvoriti.hex datoteku s uređivačem teksta (poput Notepada ++). Da biste saznali više o Intelovom HEX formatu datoteke i sintaksi, posjetite njezinu stranicu Wikipedia. Za ovu aplikaciju zanima nas samo dio podataka datoteke kako je prikazano na slici 5.

Označite i kopirajte 256 bajtova NVM konfiguracijskih podataka koji se nalaze unutar HEX datoteke. Svaki redak koji kopiramo ima 32 znaka, što odgovara 16 bajtova.

Zalijepite informacije u označeni odjeljak nvmString Arduino skice kao što je prikazano na slici 6. Ako koristite mikrokontroler koji nije Arduino, mogli biste napisati funkciju za raščlanjivanje nvmData spremljenih u datoteci GreenPAK. GP6. (Ako otvorite datoteku GreenPAK s uređivačem teksta, vidjet ćete da podatke o projektu pohranjujemo u lako dostupan XML format.)

Da biste postavili podatke EEPROM -a za svoj GreenPAK dizajn, odaberite blok EEPROM na ploči sa komponentama, otvorite ploču s svojstvima i kliknite "Postavi podatke".

Sada možete uređivati svaki bajt u EEPROM -u pojedinačno pomoću našeg GUI sučelja.

Nakon što su vaši EEPROM podaci postavljeni, možete ih izvesti u HEX datoteku na isti način opisan prije za izvoz NVM podataka. Umetnite ovih 256 bajtova podataka EEPROM -a u odjeljak eepromString Arduino skice.

Za svaki prilagođeni dizajn važno je provjeriti postavke zaštite na kartici "Sigurnost" postavki projekta. Ova kartica konfigurira zaštitne bitove za matrične konfiguracijske registre, NVM i EEPROM. Pod određenim konfiguracijama, učitavanje NVM sekvence može zaključati SLG46824/6 u trenutnu konfiguraciju i ukloniti MTP funkcionalnost čipa.

Korak 3: Upotrijebite Arduino skicu

Upotrijebite Arduino Sketch
Upotrijebite Arduino Sketch

Prenesite skicu na svoj Arduino i otvorite serijski monitor s brzinom prijenosa od 115200. Sada možete upotrijebiti upute iz izbornika skice za izvođenje nekoliko naredbi:

● Čitanje - čita NVM podatke uređaja ili EEPROM podatke koristeći navedenu adresu slave

● Brisanje - briše NVM podatke uređaja ili EEPROM podatke pomoću navedene adrese slave

● Zapisivanje - Briše i zatim upisuje podatke NVM -a uređaja ili EEPROM podatke koristeći navedenu pomoćnu adresu. Ova naredba zapisuje podatke koji su spremljeni u nvmString ili eepromString nizove.

● Ping - vraća popis adresa slave uređaja koje su spojene na I2C sabirnicu

Rezultati ovih naredbi bit će ispisani na konzoli serijskog monitora.

Korak 4: Savjeti za programiranje i najbolje prakse

Tijekom podrške SLG46824/6 dokumentirali smo nekoliko programskih savjeta koji će pomoći u izbjegavanju uobičajenih zamki povezanih s brisanjem i pisanjem u NVM adresni prostor. Sljedeći pododsjeci detaljnije opisuju ovu temu.

1. Izvođenje precizne 16-bajtne NVM stranice piše:

Prilikom pisanja podataka u NVM SLG46824/6 postoje tri tehnike koje treba izbjegavati:

● Stranica zapisuje s manje od 16 bajtova

● Stranica zapisuje s više od 16 bajtova

● Zapisi stranica koji ne počinju prvim registrom unutar stranice (IE: 0x10, 0x20 itd.)

Ako se koristi bilo koja od gore navedenih tehnika, MTP sučelje zanemarit će zapis I2C kako bi izbjeglo učitavanje NVM -a netočnim podacima. Preporučujemo čitanje I2C čitanja NVM adresnog prostora nakon pisanja radi provjere ispravnog prijenosa podataka.

2. Prijenos NVM podataka u matrične konfiguracijske registre

Kad je NVM upisan, konfiguracijski matrični registri se ne učitavaju automatski s novo zapisanim NVM podacima. Prijenos se mora pokrenuti ručno kruženjem PAK VDD -a ili generiranjem mekog resetiranja pomoću I2C. Postavljanjem registra na adresu 0xC8, uređaj ponovno omogućuje redoslijed Ponovnog postavljanja (POR) i ponovno učitava podatke registra iz NVM-a u registre.

3. Resetiranje I2C adrese nakon NVM brisanja:

Kad se NVM obriše, NVM adresa koja sadrži I2C slave adresu bit će postavljena na 0000. Nakon brisanja, čip će zadržati svoju trenutnu podređenu adresu u konfiguracijskim registrima sve dok se uređaj ne vrati na prethodno opisani način. Nakon što je čip resetiran, I2C slave adresa mora biti postavljena na adresu 0xCA u konfiguracijskim registrima svaki put kada se GreenPAK uključi ili resetira napajanjem. To se mora činiti sve dok se nova adresa adrese I2C slave ne ispiše u NVM.

Korak 5: Rasprava o greškama

Rasprava o greškama
Rasprava o greškama

Prilikom pisanja u "Bajt za brisanje stranice" (adresa: 0xE3), SLG46824/6 proizvodi ACK koji nije usklađen sa I2C nakon dijela "Podaci" naredbe I2C. Ovo se ponašanje može tumačiti kao NACK, ovisno o implementaciji I2C -master.

Kako bismo se prilagodili ovom ponašanju, izmijenili smo Arduino programer komentirajući kôd prikazan na slici 11. Ovaj odjeljak koda provjerava postoji li I2C ACK na kraju svake I2C naredbe u funkciji eraseChip (). Ova se funkcija koristi za brisanje stranica NVM -a i EEPROM -a. Budući da se ovaj odjeljak koda nalazi u For petlji, "return -1;" linija uzrokuje preuranjeni izlaz MCU -a iz funkcije.

Unatoč prisutnosti NACK -a, funkcije brisanja NVM -a i EEPROM -a ispravno će se izvršavati. Za detaljno objašnjenje ovog ponašanja, pogledajte "Pitanje 2: Ponašanje ACK-a koje nije usklađeno sa I2C za NVM i EEPROM bajt za brisanje stranice" u dokumentu o grešci SLG46824/6 (Revision XC) na web stranici Dialoga.

Zaključak

U ovom Instructable opisujemo postupak korištenja Arduino programera za učitavanje prilagođenih NVM i EEPROM nizova na GreenPAK IC. Kôd u Arduino Sketchu temeljito je komentiran, ali ako imate pitanja u vezi sa skicom, obratite se jednom od naših inženjera za primjenu na terenu ili postavite svoje pitanje na naš forum. Za detaljnije informacije o registrima i procedurama programiranja MTP-a, molimo pogledajte Dialog-ov Vodič za programiranje unutar sustava.

Preporučeni: