Innholdsfortegnelse:

MTP Arduino -programmeringseksempel: 5 trinn
MTP Arduino -programmeringseksempel: 5 trinn

Video: MTP Arduino -programmeringseksempel: 5 trinn

Video: MTP Arduino -programmeringseksempel: 5 trinn
Video: 30 лучших советов и рекомендаций по Windows 10 на 2020 год 2024, November
Anonim
MTP Arduino -programmeringseksempel
MTP Arduino -programmeringseksempel

I denne instruksjonsboken viser vi hvordan du bruker programmeringsskissen SLG46824/6 Arduino til å programmere en Dialog SLG46824/6 GreenPAK ™ Multiple Time Programmable (MTP) enhet.

De fleste GreenPAK-enheter er One-Time Programmable (OTP), noe som betyr at når ikke-volatile minnebanken (NVM) er skrevet, kan den ikke overskrives. GreenPAK -er med MTP -funksjonen, som SLG46824 og SLG46826, har en annen type NVM -minnebank som kan programmeres mer enn én gang.

Vi har skrevet en Arduino -skisse som lar brukeren programmere en MTP GreenPAK med noen få enkle serielle skjermkommandoer. I denne instruksjonsboken bruker vi en SLG46826 som vår GreenPAK med MTP.

Vi gir prøvekode for Arduino Uno ved å bruke en åpen kildekode-plattform basert på C/C ++. Designere bør ekstrapolere teknikkene som brukes i Arduino -koden for deres spesifikke plattform.

For spesifikk informasjon om I2C-signalspesifikasjoner, I2C-adressering og minneområder, vennligst referer til GreenPAK In-System Programming Guide på SLG46826-produktsiden. Denne instruksjonsboken gir en enkel implementering av denne programmeringsguiden.

Nedenfor har vi beskrevet trinnene som trengs for å forstå hvordan GreenPAK -brikken er programmert. Men hvis du bare vil få resultatet av programmeringen, kan du laste ned GreenPAK -programvare for å se den allerede fullførte GreenPAK -designfilen. Koble GreenPAK Development Kit til datamaskinen din og trykk på programmet for å lage den tilpassede IC.

Trinn 1: Arduino-GreenPAK-tilkoblinger

Arduino-GreenPAK-tilkoblinger
Arduino-GreenPAK-tilkoblinger
Arduino-GreenPAK-tilkoblinger
Arduino-GreenPAK-tilkoblinger

For å programmere NVM for vår SLG46826 GreenPAK med vår Arduino -skisse, må vi først koble fire Arduino Uno -pinner til vår GreenPAK. Du kan koble disse pinnene direkte til GreenPAK -sokkeladapteren eller til et utbruddskort med GreenPAK loddet ned.

Vær oppmerksom på at eksterne I2C -opptrekksmotstander ikke er vist i figur 1. Vennligst koble en 4,7 kΩ opptrekkmotstand fra både SCL og SDA til Arduino's 3.3 V -utgang.

Trinn 2: Eksportere GreenPAK NVM -data fra en GreenPAK -designfil

Eksportere GreenPAK NVM -data fra en GreenPAK -designfil
Eksportere GreenPAK NVM -data fra en GreenPAK -designfil
Eksportere GreenPAK NVM -data fra en GreenPAK -designfil
Eksportere GreenPAK NVM -data fra en GreenPAK -designfil
Eksportere GreenPAK NVM -data fra en GreenPAK -designfil
Eksportere GreenPAK NVM -data fra en GreenPAK -designfil

Vi vil sette sammen en veldig enkel GreenPAK -design for å illustrere hvordan du eksporterer NVM -data. Designet nedenfor er en enkel nivåskifter der de blå pinnene til venstre er knyttet til VDD (3.3v), mens de gule pinnene til høyre er knyttet til VDD2 (1.8v).

For å eksportere informasjonen fra dette designet, må du velge Fil → Eksporter → Eksporter NVM, som vist i figur 3.

Du må da velge Intel HEX Files (*.hex) som filtype og lagre filen.

Nå må du åpne.hex -filen med et tekstredigeringsprogram (som Notisblokk ++). For å lære mer om Intels HEX -filformat og syntaks, sjekk ut Wikipedia -siden. For denne applikasjonen er vi bare interessert i datadelen av filen som vist i figur 5.

Marker og kopier 256 byte NVM -konfigurasjonsdata som ligger i HEX -filen. Hver linje vi kopierer er 32 tegn lang, noe som tilsvarer 16 byte.

Lim inn informasjonen i den markerte nvmString -delen av Arduino-skissen som vist i figur 6. Hvis du bruker en ikke-Arduino mikrokontroller, kan du skrive en funksjon for å analysere nvmData lagret i GreenPAK. GP6-filen. (Hvis du åpner en GreenPAK-fil med et tekstredigeringsprogram, ser du at vi lagrer prosjektinformasjon i et lett tilgjengelig XML-format.)

For å angi EEPROM -dataene for GreenPAK -designen din, velg EEPROM -blokken fra komponentpanelet, åpne dens egenskaperpanel og klikk på "Angi data".

Nå kan du redigere hver byte i EEPROM individuelt med vårt GUI -grensesnitt.

Når EEPROM -dataene dine er angitt, kan du eksportere dem til en HEX -fil ved å bruke samme metode som tidligere beskrevet for eksport av NVM -data. Sett inn disse 256 byte EEPROM -dataene i eepromString -delen av Arduino -skissen.

For hvert tilpasset design er det viktig å sjekke beskyttelsesinnstillingene i kategorien "Sikkerhet" i prosjektinnstillingene. Denne kategorien konfigurerer beskyttelsesbitene for matrisekonfigurasjonsregistrene, NVM og EEPROM. Under visse konfigurasjoner kan opplasting av NVM -sekvensen låse SLG46824/6 til sin nåværende konfigurasjon og fjerne MTP -funksjonaliteten til brikken.

Trinn 3: Bruk Arduino Sketch

Bruk Arduino Sketch
Bruk Arduino Sketch

Last opp skissen til Arduino og åpne den serielle skjermen med en 115200 baudhastighet. Nå kan du bruke skisseens MENY -ledetekst til å utføre flere kommandoer:

● Les - leser enten enhetens NVM -data eller EEPROM -data ved hjelp av den angitte slaveadressen

● Slett - sletter enten enhetens NVM -data eller EEPROM -data ved hjelp av den angitte slaveadressen

● Skriv - sletter og skriver deretter enhetens NVM -data eller EEPROM -data ved hjelp av den angitte slaveadressen. Denne kommandoen skriver dataene som er lagret i matrikkene nvmString eller eepromString.

● Ping - returnerer en liste over enhetsslave -adresser som er koblet til I2C -bussen

Resultatene av disse kommandoene skrives ut til den serielle skjermkonsollen.

Trinn 4: Programmeringstips og beste praksis

I løpet av støtten til SLG46824/6 har vi dokumentert noen programmeringstips for å unngå vanlige fallgruver forbundet med sletting og skriving til NVM -adresserommet. De følgende underseksjonene beskriver dette emnet mer detaljert.

1. Utføre presise 16-Byte NVM-sider skriver:

Når du skriver data til SLG46824/6s NVM, er det tre teknikker du bør unngå:

● Siden skriver med mindre enn 16 byte

● Siden skriver med mer enn 16 byte

● Sideskriv som ikke begynner ved det første registeret på en side (IE: 0x10, 0x20, etc.)

Hvis noen av de ovennevnte teknikkene brukes, vil MTP -grensesnittet se bort fra I2C -skriveren for å unngå å laste NVM -en med feil informasjon. Vi anbefaler at du utfører en I2C -lesing av NVM -adresserommet etter å ha skrevet for å bekrefte korrekt dataoverføring.

2. Overføring av NVM -data til Matrix Configuration Registers

Når NVM skrives, lastes ikke matrisekonfigurasjonsregistrene automatisk ned med de nyskrevne NVM -dataene. Overføringen må startes manuelt ved å sykle PAK VDD eller ved å generere en myk tilbakestilling ved hjelp av I2C. Ved å sette register i adresse 0xC8, aktiverer enheten Power-On Reset (POR) -sekvensen på nytt og laster inn registerdataene fra NVM i registerene.

3. Tilbakestille I2C -adressen etter en NVM -sletting:

Når NVM er slettet, settes NVM -adressen som inneholder I2C -slaveadressen til 0000. Etter slettingen vil brikken beholde sin nåværende slave -adresse i konfigurasjonsregistrene til enheten blir tilbakestilt som beskrevet ovenfor. Når brikken er tilbakestilt, må I2C-slaveadressen settes i adressen 0xCA i konfigurasjonsregistrene hver gang GreenPAK slås av eller tilbakestilles. Dette må gjøres til den nye I2C -slaveadressesiden er skrevet i NVM.

Trinn 5: Errata -diskusjon

Errata diskusjon
Errata diskusjon

Når du skriver til “Page Erase Byte” (adresse: 0xE3), produserer SLG46824/6 en ikke-I2C-kompatibel ACK etter “Data” -delen av I2C-kommandoen. Denne oppførselen kan tolkes som en NACK avhengig av implementeringen av I2C -masteren.

For å imøtekomme denne oppførselen endret vi Arduino -programmereren ved å kommentere koden vist i figur 11. Denne delen av koden sjekker etter en I2C ACK på slutten av hver I2C -kommando i eraseChip () -funksjonen. Denne funksjonen brukes til å slette NVM- og EEPROM -sidene. Siden denne delen av koden er plassert i en For -løkke, er "return -1;" linje får MCU til å forlate funksjonen for tidlig.

Til tross for tilstedeværelsen av en NACK, vil NVM- og EEPROM -slettefunksjonene utføres som de skal. For en detaljert forklaring av denne oppførselen, vennligst referer til “Utgave 2: Ikke-I2C-kompatibel ACK-oppførsel for NVM- og EEPROM-siden slett-byte” i SLG46824/6 errata-dokumentet (Revisjon XC) på Dialogs nettsted.

Konklusjon

I denne instruksjonsboken beskriver vi prosessen med å bruke den medfølgende Arduino -programmereren til å laste opp egendefinerte NVM- og EEPROM -strenger til en GreenPAK IC. Koden i Arduino Sketch er grundig kommentert, men hvis du har spørsmål angående skissen, kan du kontakte en av våre feltapplikasjonsingeniører eller legge ut spørsmålet ditt på forumet vårt. For mer grundig informasjon om MTP-programmeringsregistre og -prosedyrer, se Dialogs programmeringsveiledning i systemet.

Anbefalt: