Innehållsförteckning:
- Steg 1: Arduino-GreenPAK-anslutningar
- Steg 2: Exportera GreenPAK NVM -data från en GreenPAK -designfil
- Steg 3: Använd Arduino Sketch
- Steg 4: Programmeringstips och bästa praxis
- Steg 5: Errata -diskussion
Video: MTP Arduino -programmeringsexempel: 5 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:41
I denna instruktionsbok visar vi hur man använder SLG46824/6 Arduino-programmeringsskissen för att programmera en Dialog SLG46824/6 GreenPAK ™ Multiple Time Programable (MTP) -enhet.
De flesta GreenPAK-enheter är One-Time Programmable (OTP), vilket betyder att när deras Non-Volatile Memory Bank (NVM) är skrivet kan det inte skrivas över. GreenPAK med MTP -funktionen, som SLG46824 och SLG46826, har en annan typ av NVM -minnesbank som kan programmeras mer än en gång.
Vi har skrivit en Arduino -skiss som gör att användaren kan programmera en MTP GreenPAK med några enkla seriella övervakningskommandon. I denna instruktionsbok använder vi en SLG46826 som vår GreenPAK med MTP.
Vi tillhandahåller exempelkod för Arduino Uno med en plattform med öppen källkod baserad på C/C ++. Designers bör extrapolera teknikerna som används i Arduino -koden för sin specifika plattform.
För specifik information om I2C-signalspecifikationer, I2C-adressering och minnesutrymmen, hänvisas till GreenPAK In-System Programming Guide som finns på SLG46826-produktsidan. Denna instruktör ger en enkel implementering av denna programmeringsguide.
Nedan beskrivs stegen som behövs för att förstå hur GreenPAK -chipet har programmerats. Men om du bara vill få resultatet av programmeringen, ladda ner GreenPAK -programvara för att se den redan färdiga GreenPAK -designfilen. Anslut GreenPAK Development Kit till din dator och tryck på programmet för att skapa den anpassade IC.
Steg 1: Arduino-GreenPAK-anslutningar
För att programmera NVM för vår SLG46826 GreenPAK med vår Arduino -skiss måste vi först ansluta fyra Arduino Uno -stift till vår GreenPAK. Du kan ansluta dessa stift direkt till GreenPAK -sockeladaptern eller till ett utbrottskort med GreenPAK -lödningen.
Observera att externa I2C -uppdragningsmotstånd inte visas i figur 1. Anslut ett 4,7 kΩ uppdragningsmotstånd från både SCL och SDA till Arduinos 3,3 V -utgång.
Steg 2: Exportera GreenPAK NVM -data från en GreenPAK -designfil
Vi kommer att sätta ihop en mycket enkel GreenPAK -design för att illustrera hur man exporterar NVM -data. Designen nedan är en enkel nivåskiftare där de blå stiften till vänster är knutna till VDD (3.3v), medan de gula stiften till höger är knutna till VDD2 (1.8v).
För att exportera informationen från denna design måste du välja Arkiv → Exportera → Exportera NVM, som visas i figur 3.
Du måste sedan välja Intel HEX Files (*.hex) som filtyp och spara filen.
Nu måste du öppna.hex -filen med en textredigerare (som Anteckningar ++). För att lära dig mer om Intels HEX -filformat och syntax, kolla in dess Wikipedia -sida. För den här applikationen är vi bara intresserade av datadelen av filen som visas i figur 5.
Markera och kopiera 256 byte NVM -konfigurationsdata som finns i HEX -filen. Varje rad som vi kopierar är 32 tecken lång, vilket motsvarar 16 byte.
Klistra in informationen i det markerade nvmString -avsnittet i Arduino-skissen som visas i figur 6. Om du använder en icke-Arduino mikrokontroller kan du skriva en funktion för att analysera nvmData som sparats i GreenPAK. GP6-filen. (Om du öppnar en GreenPAK-fil med en textredigerare ser du att vi lagrar projektinformation i ett lättillgängligt XML-format.)
För att ställa in EEPROM -data för din GreenPAK -design, välj EEPROM -blocket från komponentpanelen, öppna dess egenskaperspanel och klicka på "Ställ in data".
Nu kan du redigera varje byte i EEPROM individuellt med vårt GUI -gränssnitt.
När din EEPROM -data är inställd kan du exportera den till en HEX -fil med samma metod som beskrivits tidigare för att exportera NVM -data. Infoga dessa 256 byte EEPROM -data i avsnittet eepromString i Arduino -skissen.
För varje anpassad design är det viktigt att kontrollera skyddsinställningarna på fliken "Säkerhet" i projektinställningarna. Denna flik konfigurerar skyddsbitarna för matriskonfigurationsregistren, NVM och EEPROM. Under vissa konfigurationer kan uppladdning av NVM -sekvensen låsa SLG46824/6 till sin nuvarande konfiguration och ta bort chipets MTP -funktionalitet.
Steg 3: Använd Arduino Sketch
Ladda upp skissen till din Arduino och öppna seriell bildskärm med en 115200 baudhastighet. Nu kan du använda skissens MENY -uppmaningar för att utföra flera kommandon:
● Läs - läser antingen enhetens NVM -data eller EEPROM -data med den angivna slavadressen
● Radera - raderar antingen enhetens NVM -data eller EEPROM -data med den angivna slavadressen
● Skriv - Raderar och skriver sedan antingen enhetens NVM -data eller EEPROM -data med den angivna slavadressen. Detta kommando skriver data som sparas i nvmString eller eepromString arrays.
● Ping - returnerar en lista över enhetsslavadresser som är anslutna till I2C -bussen
Resultaten av dessa kommandon kommer att skrivas ut till den seriella skärmkonsolen.
Steg 4: Programmeringstips och bästa praxis
Under supporten av SLG46824/6 har vi dokumenterat några programmeringstips för att undvika vanliga fallgropar i samband med att radera och skriva till NVM -adressutrymmet. Följande underavsnitt beskriver detta ämne mer detaljerat.
1. Exekvera 16-Byte NVM-sidskrivningar:
När du skriver data till SLG46824/6: s NVM finns det tre tekniker att undvika:
● Sidan skriver med mindre än 16 byte
● Sidan skriver med mer än 16 byte
● Sidskrivningar som inte börjar vid det första registret på en sida (IE: 0x10, 0x20, etc.)
Om någon av ovanstående tekniker används kommer MTP -gränssnittet att bortse från I2C -skrivningen för att undvika att ladda NVM med felaktig information. Vi rekommenderar att du läser NV2 -adressutrymmet I2C efter skrivning för att verifiera korrekt dataöverföring.
2. Överföring av NVM -data till Matrix Configuration Register
När NVM skrivs laddas inte matrisens konfigurationsregister automatiskt med de nyskrivna NVM -data. Överföringen måste initieras manuellt genom att cykla PAK VDD eller genom att generera en mjuk återställning med I2C. Genom att ställa in registret i adressen 0xC8, återaktiverar enheten Power-On Reset (POR) -sekvensen och laddar om registerdata från NVM till registren.
3. Återställa I2C -adressen efter ett NVM -radering:
När NVM raderas kommer NVM -adressen som innehåller I2C -slavadressen att ställas in på 0000. Efter raderingen kommer chipet att behålla sin nuvarande slavadress inom konfigurationsregistren tills enheten återställs enligt beskrivningen ovan. När chipet har återställts måste I2C-slavadressen ställas in i adressen 0xCA i konfigurationsregistren varje gång GreenPAK-enheten slås på eller återställs. Detta måste göras tills den nya I2C -slavadresssidan har skrivits i NVM.
Steg 5: Errata -diskussion
När du skriver till "Page Erase Byte" (adress: 0xE3) producerar SLG46824/6 en icke-I2C-kompatibel ACK efter "Data" -delen av I2C-kommandot. Detta beteende kan tolkas som en NACK beroende på implementeringen av I2C -mastern.
För att tillgodose detta beteende modifierade vi Arduino -programmeraren genom att kommentera koden som visas i figur 11. Detta avsnitt av kod söker efter en I2C ACK i slutet av varje I2C -kommando i eraseChip () -funktionen. Denna funktion används för att radera NVM- och EEPROM -sidorna. Eftersom denna koddel är belägen i en For -slinga, kommer "return -1;" rad får MCU att i förtid lämna funktionen.
Trots närvaron av en NACK kommer NVM- och EEPROM -raderingar att fungera korrekt. För en detaljerad förklaring av detta beteende, hänvisa till”Fråga 2: Icke-I2C-kompatibelt ACK-beteende för NVM- och EEPROM-sidraderingsbyte” i SLG46824/6 errata-dokumentet (Revision XC) på Dialogs webbplats.
Slutsats
I denna instruktionsbok beskriver vi processen med att använda den medföljande Arduino -programmeraren för att ladda upp anpassade NVM- och EEPROM -strängar till en GreenPAK IC. Koden i Arduino Sketch kommenteras noggrant, men om du har några frågor angående skissen, kontakta någon av våra fältansökningsingenjörer eller lägg upp din fråga på vårt forum. För mer ingående information om MTP-programmeringsregister och -procedurer, vänligen hänvisa till Dialogs programguide för system.
Rekommenderad:
Arduino Car Reverse Parking Alert System - Steg för steg: 4 steg
Arduino Car Reverse Parking Alert System | Steg för steg: I det här projektet kommer jag att utforma en enkel Arduino Car Reverse Parking Sensor Circuit med Arduino UNO och HC-SR04 Ultrasonic Sensor. Detta Arduino -baserade bilomvändningsvarningssystem kan användas för autonom navigering, robotavstånd och andra
Steg för steg PC -byggnad: 9 steg
Steg för steg PC -byggnad: Tillbehör: Hårdvara: ModerkortCPU & CPU -kylarePSU (strömförsörjningsenhet) Lagring (HDD/SSD) RAMGPU (krävs inte) CaseTools: Skruvmejsel ESD -armband/mathermisk pasta med applikator
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
RC -spårad robot med Arduino - Steg för steg: 3 steg
RC -spårad robot med Arduino - Steg för steg: Hej killar, jag är tillbaka med ett annat häftigt robotchassi från BangGood. Hoppas att du har gått igenom våra tidigare projekt - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot med Robotic Arms och The Badland Braw
DIY Arduino robotarm, steg för steg: 9 steg
DIY Arduino robotarm, steg för steg: Denna handledning lär dig hur du bygger en robotarm själv