Indholdsfortegnelse:

MTP Arduino -programmeringseksempel: 5 trin
MTP Arduino -programmeringseksempel: 5 trin

Video: MTP Arduino -programmeringseksempel: 5 trin

Video: MTP Arduino -programmeringseksempel: 5 trin
Video: Fix USB Device Not Recognized in Windows 11 / 10 | How To Solve usb device not recognized {5 Ways} 2024, Juli
Anonim
MTP Arduino -programmeringseksempel
MTP Arduino -programmeringseksempel

I denne Instructable viser vi, hvordan du bruger SLG46824/6 Arduino-programmeringsskitsen til at programmere en Dialog SLG46824/6 GreenPAK ™ Multiple-Time Programmable (MTP) -enhed.

De fleste GreenPAK-enheder er One-Time Programmable (OTP), hvilket betyder, at når deres Non-Volatile Memory bank (NVM) er skrevet, kan den ikke overskrives. GreenPAK'er med MTP -funktionen, ligesom SLG46824 og SLG46826, har en anden type NVM -hukommelsesbank, der kan programmeres mere end én gang.

Vi har skrevet en Arduino -skitse, der giver brugeren mulighed for at programmere en MTP GreenPAK med et par enkle serielle skærmkommandoer. I denne Instructable bruger vi en SLG46826 som vores GreenPAK med MTP.

Vi leverer prøvekode til Arduino Uno ved hjælp af en open source-platform baseret på C/C ++. Designere bør ekstrapolere de teknikker, der bruges i Arduino -koden til deres specifikke platform.

For specifikke oplysninger om I2C-signalspecifikationer, I2C-adressering og hukommelsesrum, henvises til GreenPAK In-System Programming Guide på SLG46826-produktsiden. Denne instruktør giver en enkel implementering af denne programmeringsguide.

Nedenfor beskrev vi de nødvendige trin for at forstå, hvordan GreenPAK -chippen er blevet programmeret. Men hvis du bare vil få resultatet af programmeringen, skal du downloade GreenPAK -software for at se den allerede gennemførte GreenPAK -designfil. Tilslut GreenPAK Development Kit til din computer, og tryk på programmet for at oprette den brugerdefinerede IC.

Trin 1: Arduino-GreenPAK-forbindelser

Arduino-GreenPAK-forbindelser
Arduino-GreenPAK-forbindelser
Arduino-GreenPAK-forbindelser
Arduino-GreenPAK-forbindelser

For at programmere NVM af vores SLG46826 GreenPAK med vores Arduino -skitse, skal vi først forbinde fire Arduino Uno -pins til vores GreenPAK. Du kan tilslutte disse ben direkte til GreenPAK -stikadapteren eller til et breakout -bord med GreenPAK loddet ned.

Bemærk, at eksterne I2C -pull -up -modstande ikke er vist i figur 1. Tilslut en 4,7 kΩ pull -up -modstand fra både SCL og SDA til Arduino's 3,3 V -udgang.

Trin 2: Eksport af GreenPAK NVM -data fra en GreenPAK -designfil

Eksport af GreenPAK NVM -data fra en GreenPAK -designfil
Eksport af GreenPAK NVM -data fra en GreenPAK -designfil
Eksport af GreenPAK NVM -data fra en GreenPAK -designfil
Eksport af GreenPAK NVM -data fra en GreenPAK -designfil
Eksport af GreenPAK NVM -data fra en GreenPAK -designfil
Eksport af GreenPAK NVM -data fra en GreenPAK -designfil

Vi sammensætter et meget enkelt GreenPAK -design for at illustrere, hvordan man eksporterer NVM -data. Designet herunder er en simpel niveauskifter, hvor de blå stifter til venstre er bundet til VDD (3.3v), mens de gule stifter til højre er bundet til VDD2 (1.8v).

For at eksportere oplysningerne fra dette design skal du vælge Fil → Eksporter → Eksporter NVM, som vist i figur 3.

Du skal derefter vælge Intel HEX Files (*.hex) som filtype og gemme filen.

Nu skal du åbne.hex -filen med et teksteditor (som Notesblok ++). Hvis du vil vide mere om Intels HEX -filformat og syntaks, kan du tjekke dens Wikipedia -side. For denne applikation er vi kun interesseret i datadelen af filen som vist i figur 5.

Fremhæv og kopier de 256 bytes NVM -konfigurationsdata, der er placeret i HEX -filen. Hver linje, vi kopierer, er 32 tegn lang, hvilket svarer til 16 bytes.

Indsæt oplysningerne i det fremhævede nvmString -afsnit af Arduino-skitsen som vist i figur 6. Hvis du bruger en ikke-Arduino mikrokontroller, kan du skrive en funktion til at analysere nvmData, der er gemt i GreenPAK. GP6-filen. (Hvis du åbner en GreenPAK-fil med en teksteditor, kan du se, at vi gemmer projektoplysninger i et let tilgængeligt XML-format.)

For at indstille EEPROM -data til dit GreenPAK -design skal du vælge EEPROM -blokken fra komponentpanelet, åbne dets egenskabspanel og klikke på "Indstil data".

Nu kan du redigere hver byte i EEPROM individuelt med vores GUI -interface.

Når dine EEPROM -data er indstillet, kan du eksportere dem til en HEX -fil ved hjælp af den samme metode, der er beskrevet tidligere til eksport af NVM -data. Indsæt disse 256 bytes EEPROM -data i afsnittet eepromString i Arduino -skitsen.

For hvert brugerdefineret design er det vigtigt at kontrollere beskyttelsesindstillingerne på fanen "Sikkerhed" i projektindstillingerne. Denne fane konfigurerer beskyttelsesbitene til matrixkonfigurationsregistre, NVM og EEPROM. Under visse konfigurationer kan upload af NVM -sekvensen låse SLG46824/6 til dens nuværende konfiguration og fjerne chipens MTP -funktionalitet.

Trin 3: Brug Arduino Sketch

Brug Arduino Sketch
Brug Arduino Sketch

Upload skitsen til din Arduino, og åbn den serielle skærm med en 115200 baudrate. Nu kan du bruge skitsens MENU -opfordringer til at udføre flere kommandoer:

● Læs - læser enten enhedens NVM -data eller EEPROM -data ved hjælp af den angivne slaveadresse

● Slet - sletter enten enhedens NVM -data eller EEPROM -data ved hjælp af den angivne slaveadresse

● Skriv - Sletter og skriver derefter enten enhedens NVM -data eller EEPROM -data ved hjælp af den angivne slaveadresse. Denne kommando skriver de data, der er gemt i nvmString eller eepromString arrays.

● Ping - returnerer en liste over enheds -slave -adresser, der er forbundet til I2C -bussen

Resultaterne af disse kommandoer udskrives på den serielle skærmkonsol.

Trin 4: Programmeringstip og bedste praksis

I løbet af støtten til SLG46824/6 har vi dokumenteret et par programmeringstip til at undgå almindelige faldgruber forbundet med sletning og skrivning til NVM -adresserummet. De følgende underafsnit beskriver dette emne mere detaljeret.

1. Udførelse af præcise 16-Byte NVM-sider skriver:

Når du skriver data til SLG46824/6’s NVM, er der tre teknikker, der skal undgås:

● Siden skriver med mindre end 16 bytes

● Siden skriver med mere end 16 bytes

● Sideskrifter, der ikke begynder ved det første register på en side (IE: 0x10, 0x20 osv.)

Hvis en af ovenstående teknikker bruges, ignorerer MTP -grænsefladen I2C -skrivningen for at undgå at indlæse NVM'en med forkerte oplysninger. Vi anbefaler at udføre en I2C -læsning af NVM -adresserummet efter at have skrevet for at verificere korrekt dataoverførsel.

2. Overførsel af NVM -data til Matrix Configuration Registers

Når NVM'en skrives, indlæses matrixkonfigurationsregistrene ikke automatisk med de nyskrevne NVM -data. Overførslen skal startes manuelt ved at cykle PAK VDD eller ved at generere en soft reset ved hjælp af I2C. Ved at indstille register i adresse 0xC8 genaktiverer enheden Power-On Reset (POR) sekvensen og genindlæser registerdata fra NVM i registrene.

3. Nulstilling af I2C -adressen efter en NVM -sletning:

Når NVM er slettet, indstilles NVM -adressen, der indeholder I2C -slaveadressen, til 0000. Efter sletningen bevarer chippen sin nuværende slave -adresse i konfigurationsregistrene, indtil enheden nulstilles som beskrevet ovenfor. Når chippen er blevet nulstillet, skal I2C-slaveadressen indstilles i adressen 0xCA i konfigurationsregistrene, hver gang GreenPAK er strømcyklet eller nulstillet. Dette skal gøres, indtil den nye I2C -slaveadresseside er blevet skrevet i NVM.

Trin 5: Errata -diskussion

Errata Diskussion
Errata Diskussion

Når der skrives til “Side Erase Byte” (adresse: 0xE3), producerer SLG46824/6 en ikke-I2C-kompatibel ACK efter “Data” -delen af I2C-kommandoen. Denne adfærd kan tolkes som en NACK afhængigt af implementeringen af I2C -masteren.

For at imødekomme denne adfærd ændrede vi Arduino -programmøren ved at kommentere koden vist i figur 11. Dette afsnit af kode kontrollerer en I2C ACK i slutningen af hver I2C -kommando i eraseChip () -funktionen. Denne funktion bruges til at slette NVM- og EEPROM -siderne. Da denne sektion af kode er placeret i en For -sløjfe, er "return -1;" linje får MCU til at forlade funktionen for tidligt.

På trods af tilstedeværelsen af en NACK udføres NVM- og EEPROM -sletningsfunktionerne korrekt. For en detaljeret forklaring af denne adfærd henvises til "Problem 2: Ikke-I2C-kompatibel ACK-adfærd for NVM- og EEPROM-side-slettebyte" i SLG46824/6 errata-dokumentet (Revision XC) på Dialogs websted.

Konklusion

I denne instruktionsbog beskriver vi processen med at bruge den medfølgende Arduino -programmør til at uploade brugerdefinerede NVM- og EEPROM -strenge til en GreenPAK IC. Koden i Arduino Sketch er grundigt kommenteret, men hvis du har spørgsmål vedrørende skitsen, bedes du kontakte en af vores Field Application Engineers eller sende dit spørgsmål på vores forum. For mere dybdegående information om MTP-programmeringsregistre og -procedurer henvises til Dialogs programmeringsvejledning i systemet.

Anbefalede: