Tartalomjegyzék:

MTP Arduino programozási példa: 5 lépés
MTP Arduino programozási példa: 5 lépés

Videó: MTP Arduino programozási példa: 5 lépés

Videó: MTP Arduino programozási példa: 5 lépés
Videó: Fast checkout with Scan and Pay at Lotus 2024, Július
Anonim
Példa az MTP Arduino programozására
Példa az MTP Arduino programozására

Ebben az utasításban bemutatjuk, hogyan kell használni az SLG46824/6 Arduino programozási vázlatot egy Dialog SLG46824/6 GreenPAK ™ többszörös programozható (MTP) eszköz programozásához.

A legtöbb GreenPAK eszköz egyszeri programozható (OTP), ami azt jelenti, hogy a nem illékony memóriabank (NVM) írása után nem írható felül. Az MTP funkcióval rendelkező GreenPAK -ok, például az SLG46824 és az SLG46826, más típusú NVM memóriabankokkal rendelkeznek, amelyek többször is programozhatók.

Írtunk egy Arduino vázlatot, amely lehetővé teszi a felhasználó számára, hogy néhány egyszerű soros monitor paranccsal programozzon egy MTP GreenPAK programot. Ebben az utasításban SLG46826 -ot használunk GreenPAK -ként MTP -vel.

Minta kódot biztosítunk az Arduino Uno számára egy nyílt forráskódú C/C ++ platformon keresztül. A tervezőknek extrapolálniuk kell az Arduino kódban használt technikákat saját platformjukhoz.

Az I2C jel specifikációival, az I2C címzéssel és a memóriaterületekkel kapcsolatos részletes információkért tekintse meg az SLG46826 termékoldalon található GreenPAK rendszeren belüli programozási útmutatót. Ez az Instructable a programozási útmutató egyszerű megvalósítását nyújtja.

Az alábbiakban a GreenPAK chip programozásának megértéséhez szükséges lépéseket ismertettük. Ha azonban csak a programozás eredményét szeretné elérni, töltse le a GreenPAK szoftvert a már elkészült GreenPAK tervezési fájl megtekintéséhez. Csatlakoztassa a GreenPAK fejlesztői készletet a számítógépéhez, és nyomja meg a programot az egyéni IC létrehozásához.

1. lépés: Arduino-GreenPAK kapcsolatok

Arduino-GreenPAK kapcsolatok
Arduino-GreenPAK kapcsolatok
Arduino-GreenPAK kapcsolatok
Arduino-GreenPAK kapcsolatok

Ahhoz, hogy az SLG46826 GreenPAK NVM -jét az Arduino vázlatunkkal programozzuk, először négy Arduino Uno csapot kell csatlakoztatnunk a GreenPAK -hoz. Ezeket a csapokat közvetlenül a GreenPAK foglalatadapterhez vagy a GreenPAK forrasztott kitörési táblához csatlakoztathatja.

Kérjük, vegye figyelembe, hogy a külső I2C felhúzó ellenállások nem láthatók az 1. ábrán. Kérjük, csatlakoztasson egy 4,7 kΩ -os felhúzó ellenállást az SCL -ből és az SDA -ból az Arduino 3,3 V -os kimenetére.

2. lépés: GreenPAK NVM adatok exportálása GreenPAK tervezési fájlból

GreenPAK NVM adatok exportálása GreenPAK tervezési fájlból
GreenPAK NVM adatok exportálása GreenPAK tervezési fájlból
GreenPAK NVM adatok exportálása GreenPAK tervezési fájlból
GreenPAK NVM adatok exportálása GreenPAK tervezési fájlból
GreenPAK NVM adatok exportálása GreenPAK tervezési fájlból
GreenPAK NVM adatok exportálása GreenPAK tervezési fájlból

Összeállítunk egy nagyon egyszerű GreenPAK kialakítást, amely bemutatja az NVM adatok exportálásának módját. Az alábbi kialakítás egy egyszerű szintváltó, ahol a bal oldali kék csapok a VDD -hez (3.3v), míg a jobb oldali sárga csapok a VDD2 -hez (1.8v) vannak kötve.

Az ebből a tervből származó információk exportálásához válassza a Fájl → Exportálás → NVM exportálása lehetőséget, amint az a 3. ábrán látható.

Ezután ki kell választania az Intel HEX Files (*.hex) fájltípust, és el kell mentenie a fájlt.

Most meg kell nyitnia a.hex fájlt egy szövegszerkesztővel (például Notepad ++). Ha többet szeretne megtudni az Intel HEX fájlformátumáról és szintaxisáról, nézze meg a Wikipedia oldalát. Ennél az alkalmazásnál csak a fájl adatrészlete érdekel minket, amint az az 5. ábrán látható.

Jelölje ki és másolja ki a HEX fájlban található 256 bájt NVM konfigurációs adatot. Minden sor, amelyet másolunk, 32 karakter hosszú, ami 16 bájtnak felel meg.

Illessze be az információkat az Arduino vázlat kiemelt nvmString szakaszába, a 6. ábra szerint. Ha nem Arduino mikrokontrollert használ, írhat egy funkciót a GreenPAK. GP6 fájlba mentett nvmData elemzésére. (Ha megnyit egy GreenPAK fájlt szövegszerkesztővel, látni fogja, hogy a projektinformációkat könnyen hozzáférhető XML formátumban tároljuk.)

Az EEPROM -adatok GreenPAK -tervhez történő beállításához válassza ki az EEPROM -blokkot a komponensek paneljéről, nyissa meg a tulajdonságpanelt, és kattintson az "Adatok beállítása" gombra.

Most az EEPROM minden bájtját külön -külön szerkesztheti a GUI felületünkkel.

Miután beállította az EEPROM -adatokat, exportálhatja azokat egy HEX -fájlba az NVM -adatok exportálásához korábban leírt módszerrel. Illessze be ezeket a 256 bájt EEPROM adatokat az Arduino vázlat eepromString szakaszába.

Minden egyedi kialakításnál fontos, hogy ellenőrizze a védelmi beállításokat a projektbeállítások „Biztonság” fülén. Ez a lap konfigurálja a mátrix konfigurációs regiszterek, az NVM és az EEPROM védelmi bitjeit. Bizonyos konfigurációk esetén az NVM sorozat feltöltése zárolhatja az SLG46824/6 készüléket a jelenlegi konfigurációjához, és eltávolíthatja a chip MTP funkcióit.

3. lépés: Használja az Arduino vázlatot

Használja az Arduino vázlatot
Használja az Arduino vázlatot

Töltse fel a vázlatot az Arduino készülékére, és nyissa meg a soros monitort 115200 baud sebességgel. Most a vázlat MENU parancsaival több parancsot is végrehajthat:

● Olvasás - vagy a készülék NVM- vagy EEPROM -adatait olvassa be a megadott slave -címmel

● Törlés - vagy a készülék NVM -adatait, vagy az EEPROM -adatokat törli a megadott slave -címmel

● Írás - Törli, majd a megadott szolgacím használatával törli vagy írja az eszköz NVM -adatait vagy EEPROM -adatait. Ez a parancs írja be az nvmString vagy eepromString tömbökbe mentett adatokat.

● Ping - az I2C buszhoz csatlakoztatott eszköz -slave címek listáját adja vissza

E parancsok eredményei kinyomtatásra kerülnek a soros monitorkonzolra.

4. lépés: Programozási tippek és bevált gyakorlatok

Az SLG46824/6 támogatása során néhány programozási tippet dokumentáltunk, amelyek segítenek elkerülni az NVM -címtér törlésével és írásával kapcsolatos gyakori buktatókat. A következő alfejezetek részletesebben körvonalazzák ezt a témát.

1. Pontos 16 bájtos NVM oldalírások végrehajtása:

Amikor adatokat ír az SLG46824/6 NVM -jébe, három módszert kell elkerülni:

● Az oldal írása kevesebb, mint 16 bájt

● Az oldal több mint 16 bájtos írással rendelkezik

● Olyan oldalak írása, amelyek nem az első regiszternél kezdődnek (IE: 0x10, 0x20 stb.)

Ha a fenti technikák bármelyikét alkalmazzák, az MTP interfész figyelmen kívül hagyja az I2C írást, hogy elkerülje az NVM hibás információk betöltését. Javasoljuk, hogy írás után végezze el az NVM címtér I2C leolvasását, hogy ellenőrizze a helyes adatátvitelt.

2. NVM adatok átvitele a Mátrix konfigurációs nyilvántartásokba

Az NVM írásakor a mátrix konfigurációs regiszterek nem töltődnek be automatikusan az újonnan írt NVM adatokkal. Az átvitelt manuálisan kell elindítani a PAK VDD ciklusával, vagy az I2C segítségével soft reset létrehozásával. A regiszter beállításával a 0xC8 címen az eszköz újra engedélyezi a bekapcsolási visszaállítás (POR) szekvenciát, és újra betölti a regiszteradatokat az NVM-ből a regiszterekbe.

3. Az I2C cím visszaállítása NVM törlés után:

Az NVM törlésekor az I2C slave címet tartalmazó NVM cím 0000 lesz. A törlés után a chip megtartja jelenlegi slave címét a konfigurációs regisztereken belül, amíg az eszközt vissza nem állítja a fent leírt módon. A chip alaphelyzetbe állítása után az I2C szolga címet be kell állítani a konfigurációs regiszterek 0xCA címére minden alkalommal, amikor a GreenPAK bekapcsol, vagy újraindul. Ezt addig kell megtenni, amíg az új I2C slave címoldal meg nem lett írva az NVM -ben.

5. lépés: Hibás megbeszélés

Errata vita
Errata vita

Amikor az „Oldaltörlő bájtba” (cím: 0xE3) ír, az SLG46824/6 nem az I2C-kompatibilis ACK-t állít elő az I2C parancs „Data” része után. Ez a viselkedés NACK -ként értelmezhető az I2C master megvalósításától függően.

Ennek a viselkedésnek való megfelelés érdekében módosítottuk az Arduino programozót a 11. ábrán látható kód megjegyzésével. Ez a kódrészlet ellenőrzi az I2C ACK -t az eraseChip () függvény minden I2C parancsának végén. Ezzel a funkcióval törölheti az NVM és az EEPROM oldalakat. Mivel a kód ezen része a For ciklusban található, a „return -1;” sor miatt az MCU idő előtt kilép a funkcióból.

A NACK jelenléte ellenére az NVM és az EEPROM törlési funkciók megfelelően fognak működni. Ennek a viselkedésnek a részletes magyarázatát lásd a „2. probléma: Nem I2C-kompatibilis ACK viselkedés az NVM és az EEPROM oldal törlési bájtja” című részben az SLG46824/6 hibadokumentumban (XC változat) a Dialog webhelyén.

Következtetés

Ebben az utasításban leírjuk a folyamatot, amikor a mellékelt Arduino programozót használjuk az egyéni NVM és EEPROM karakterláncok GreenPAK IC -re történő feltöltéséhez. Az Arduino Sketch -ben található kódot alaposan megjegyzik, de ha kérdései vannak a vázlattal kapcsolatban, kérjük, vegye fel a kapcsolatot egyik alkalmazásmérnökünkkel, vagy tegye fel kérdését fórumunkon. Az MTP programozási nyilvántartásokkal és eljárásokkal kapcsolatos részletesebb információkért kérjük, tekintse meg a Dialog rendszeren belüli programozási útmutatóját.

Ajánlott: