Sadržaj:

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

Video: Primjer MTP Arduino programiranja: 5 koraka

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

U ovom Instructable-u pokazujemo kako se pomoću programske skice SLG46824/6 Arduino programira Dialog SLG46824/6 GreenPAK ™ uređaj za višestruko programiranje (MTP).

Većina GreenPAK uređaja je jednokratno programibilna (OTP), što znači da jednom kada se upiše njihova memorijska banka trajne memorije (NVM) ne može se 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ćava korisniku da programira MTP GreenPAK s nekoliko jednostavnih naredbi serijskog monitora. U ovom Instructable -u koristimo SLG46826 kao naš GreenPAK sa MTP -om.

Pružamo uzorak koda za Arduino Uno koristeći platformu otvorenog koda zasnovanu 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 GreenPAK Vodič za programiranje unutar sistema 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 da biste vidjeli već završenu GreenPAK datoteku za dizajn. Priključite GreenPAK Development Kit na svoje računalo i pritisnite program za kreiranje prilagođenog IC -a.

Korak 1: Arduino-GreenPAK veze

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

Da bismo programirali NVM našeg SLG46826 GreenPAK -a sa našom Arduino skicom, prvo ćemo morati spojiti četiri Arduino Uno pina na naš GreenPAK. Ove pinove možete spojiti direktno na GreenPAK utičnicu ili na ploču za isključivanje sa GreenPAK -om lemljenim nadole.

Imajte na umu 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 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
Izvoz GreenPAK NVM podataka iz GreenPAK datoteke za dizajn

Sastavit ćemo vrlo jednostavan GreenPAK dizajn za ilustraciju načina izvoza NVM podataka. Donji dizajn je jednostavan mjenjač nivoa gdje su plave iglice s lijeve strane vezane za VDD (3,3 v), dok su žute iglice 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 morati odabrati Intel HEX datoteke (*.hex) kao vrstu datoteke 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 njenu stranicu Wikipedia. Za ovu aplikaciju zanima nas samo dio podataka datoteke prikazan na slici 5.

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

Zalijepite informacije u označeni dio nvmString Arduino skice kao što je prikazano na slici 6. Ako koristite mikrokontroler koji nije Arduino, mogli biste napisati funkciju za raščlanjivanje nvmData sačuvanih 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 s ploče s 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 EEPROM podataka 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: Koristite Arduino skicu

Koristite Arduino skicu
Koristite Arduino skicu

Prenesite skicu na svoj Arduino i otvorite serijski monitor sa brzinom prijenosa od 115200. Sada možete koristiti upite MENU skice za izvođenje nekoliko naredbi:

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

● Izbriši - briše NVM podatke uređaja ili EEPROM podatke koristeći navedenu slave adresu

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

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

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

Korak 4: Savjeti za programiranje i najbolje prakse

Tijekom pružanja podrške SLG46824/6, dokumentirali smo nekoliko programskih savjeta kako bismo izbjegli uobičajene zamke povezane 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 piše sa manje od 16 bajtova

● Stranica piše s više od 16 bajtova

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

Ako se koristi bilo koja od gore navedenih tehnika, MTP sučelje će zanemariti I2C pisanje 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

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

3. Resetiranje I2C adrese nakon NVM brisanja:

Kada 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 slave adresu unutar konfiguracijskih registara sve dok se uređaj ne resetira kako je gore opisano. 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 adresa I2C slave ne ispiše u NVM.

Korak 5: Rasprava o greškama

Errata Discussion
Errata Discussion

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 -a.

Kako bismo se prilagodili ovom ponašanju, izmijenili smo Arduino programer komentarišući kôd prikazan na slici 11. Ovaj odjeljak koda provjerava postoji li I2C ACK na kraju svake I2C naredbe u funkciji eraseChip (). Ova funkcija se koristi za brisanje stranica NVM -a i EEPROM -a. Budući da se ovaj odjeljak koda nalazi u For petlji, „return -1;“linija uzrokuje da MCU prerano izađe 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 (Revizija 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 Sketch -u je detaljno 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 sistema.

Preporučuje se: