INHOUDSOPGAWE:

Voorbeeld van MTP Arduino -programmering: 5 stappe
Voorbeeld van MTP Arduino -programmering: 5 stappe

Video: Voorbeeld van MTP Arduino -programmering: 5 stappe

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

In hierdie instruksies wys ons hoe u die SLG46824/6 Arduino-programmeerskets kan gebruik om 'n Dialog SLG46824/6 GreenPAK ™ meervoudige programmeerbare (MTP) toestel te programmeer.

Die meeste GreenPAK-toestelle is eenmalig programmeerbaar (OTP), wat beteken dat sodra hul Non-Volatile Memory bank (NVM) geskryf is, dit nie oorskryf kan word nie. GreenPAK's met die MTP -funksie, soos die SLG46824 en SLG46826, het 'n ander tipe NVM -geheue bank wat meer as een keer geprogrammeer kan word.

Ons het 'n Arduino -skets geskryf waarmee die gebruiker 'n MTP GreenPAK kan programmeer met 'n paar eenvoudige seriële monitoropdragte. In hierdie Instructable gebruik ons 'n SLG46826 as ons GreenPAK met MTP.

Ons verskaf voorbeeldkode vir die Arduino Uno met behulp van 'n open source-platform gebaseer op C/C ++. Ontwerpers moet die tegnieke wat in die Arduino -kode gebruik word, ekstrapoleer vir hul spesifieke platform.

Vir spesifieke inligting rakende I2C-seinspesifikasies, I2C-adressering en geheueruimtes, verwys na die GreenPAK-stelselprogrammeringsgids op die SLG46826-produkbladsy. Hierdie Instructable bied 'n eenvoudige implementering van hierdie programmeergids.

Hieronder het ons die nodige stappe beskryf om te verstaan hoe die GreenPAK -chip geprogrammeer is. As u egter net die resultaat van die programmering wil kry, laai GreenPAK -sagteware af om die reeds voltooide GreenPAK -ontwerplêer te sien. Koppel die GreenPAK Development Kit aan op u rekenaar en klik op die program om die pasgemaakte IC te skep.

Stap 1: Arduino-GreenPAK-verbindings

Arduino-GreenPAK-verbindings
Arduino-GreenPAK-verbindings
Arduino-GreenPAK-verbindings
Arduino-GreenPAK-verbindings

Om die NVM van ons SLG46826 GreenPAK met ons Arduino -skets te programmeer, moet ons eers vier Arduino Uno -penne aan ons GreenPAK koppel. U kan hierdie penne direk aan die GreenPAK -aansluitadapter koppel of aan 'n uitbreekbord met die GreenPAK -soldeer.

Let asseblief daarop dat eksterne I2C optrekweerstands nie in figuur 1. getoon word nie. Koppel 'n 4,7 kΩ optrekweerstand van beide SCL en SDA aan die Arduino se 3.3 V -uitgang.

Stap 2: Uitvoer van GreenPAK NVM -data uit 'n GreenPAK -ontwerplêer

Uitvoer van GreenPAK NVM -data uit 'n GreenPAK -ontwerplêer
Uitvoer van GreenPAK NVM -data uit 'n GreenPAK -ontwerplêer
Uitvoer van GreenPAK NVM -data uit 'n GreenPAK -ontwerplêer
Uitvoer van GreenPAK NVM -data uit 'n GreenPAK -ontwerplêer
Uitvoer van GreenPAK NVM -data uit 'n GreenPAK -ontwerplêer
Uitvoer van GreenPAK NVM -data uit 'n GreenPAK -ontwerplêer

Ons sal 'n baie eenvoudige GreenPAK -ontwerp saamstel om te illustreer hoe u die NVM -data kan uitvoer. Die ontwerp hieronder is 'n eenvoudige vlakverskuiwing waar die blou penne aan die linkerkant vasgemaak is aan VDD (3.3v), terwyl die geel penne regs aan VDD2 (1.8v) vasgemaak is.

Om die inligting uit hierdie ontwerp uit te voer, moet u File → Export → Export NVM kies, soos getoon in figuur 3.

U moet dan Intel HEX -lêers (*.hex) as lêertipe kies en die lêer stoor.

U moet die.hex -lêer oopmaak met 'n teksredakteur (soos Notepad ++). Vir meer inligting oor die Intel se HEX -lêerformaat en sintaksis, gaan na die Wikipedia -bladsy. Vir hierdie toepassing stel ons slegs belang in die gegewensgedeelte van die lêer, soos getoon in figuur 5.

Merk en kopieer die 256 grepe NVM -konfigurasiedata in die HEX -lêer. Elke reël wat ons kopieer, is 32 karakters lank, wat ooreenstem met 16 grepe.

Plak die inligting in die gemerkte nvmString -gedeelte van die Arduino-skets soos getoon in figuur 6. As u 'n nie-Arduino-mikrokontroleerder gebruik, kan u 'n funksie skryf om die nvmData wat in die GreenPAK. GP6-lêer gestoor is, te ontleed. (As u 'n GreenPAK-lêer met 'n teksredakteur oopmaak, sien u dat ons projekinligting in 'n maklik toeganklike XML-formaat stoor.)

Om die EEPROM -data vir u GreenPAK -ontwerp in te stel, kies die EEPROM -blok in die komponentpaneel, maak die paneel Eienskappe oop en klik op 'Stel data'.

Nou kan u elke byte in die EEPROM individueel wysig met ons GUI -koppelvlak.

Sodra u EEPROM -data ingestel is, kan u dit na 'n HEX -lêer uitvoer met dieselfde metode wat voorheen beskryf is vir die uitvoer van die NVM -data. Voeg hierdie 256 grepe EEPROM -data in die eepromString -afdeling van die Arduino -skets in.

Vir elke pasgemaakte ontwerp is dit belangrik om die beskermingsinstellings na te gaan op die oortjie "Beveiliging" van die projekinstellings. Hierdie oortjie stel die beskermingsbits op vir die matriks -konfigurasieregisters, die NVM en die EEPROM. Onder sekere konfigurasies kan die oplaai van die NVM -reeks die SLG46824/6 tot sy huidige konfigurasie sluit en die MTP -funksionaliteit van die chip verwyder.

Stap 3: Gebruik die Arduino Sketch

Gebruik die Arduino Sketch
Gebruik die Arduino Sketch

Laai die skets op na u Arduino en maak die seriële monitor oop met 'n 115200 baud rate. U kan nou die MENU -aanwysings van die skets gebruik om verskeie opdragte uit te voer:

● Lees - lees óf die toestel se NVM -data óf EEPROM -data met behulp van die gespesifiseerde slaafadres

● Vee - vee óf die toestel se NVM -data óf EEPROM -data met behulp van die gespesifiseerde slaafadres

● Skryf - Vee uit en skryf dan die toestel se NVM -data of EEPROM -data met behulp van die gespesifiseerde slaafadres. Hierdie opdrag skryf die data wat in die nvmString of eepromString skikkings gestoor is.

● Ping - gee 'n lys van toestelle -slawe -adresse terug wat aan die I2C -bus gekoppel is

Die resultate van hierdie opdragte word na die seriële monitorkonsole gedruk.

Stap 4: Wenke vir programmering en beste praktyke

In die loop van die ondersteuning van die SLG46824/6 het ons 'n paar programmeringswenke gedokumenteer om algemene slaggate te voorkom wat verband hou met die uitvee en skryf aan die NVM -adresruimte. Die volgende onderafdelings gee 'n meer volledige uiteensetting van hierdie onderwerp.

1. Die uitvoer van presiese 16-byte NVM-bladsy skryf:

As u data aan die NVM van die SLG46824/6 skryf, is daar drie tegnieke om te vermy:

● Bladsye met minder as 16 grepe

● Bladsye met meer as 16 grepe

● Bladsye wat nie by die eerste register op 'n bladsy begin nie (IE: 0x10, 0x20, ens.)

As een van die bogenoemde tegnieke gebruik word, sal die MTP -koppelvlak die I2C -skryf ignoreer om te voorkom dat die NVM met verkeerde inligting gelaai word. Ons beveel aan dat u die NVM -adresruimte I2C lees nadat u dit geskryf het om die korrekte data -oordrag te verifieer.

2. Die oordrag van NVM -data na die Matrix -konfigurasieregisters

As die NVM geskryf word, word die matriks -konfigurasieregisters nie outomaties herlaai met die nuutgeskrewe NVM -data nie. Die oordrag moet met die hand begin word deur die PAK VDD te fiets of deur 'n sagte reset met I2C te genereer. Deur die register in adres 0xC8 in te stel, aktiveer die toestel die Power-On Reset (POR) -reeks weer en herlaai die registerdata van die NVM in die registers.

3. Herstel van die I2C -adres na 'n NVM -uitvee:

As die NVM uitgevee word, word die NVM -adres wat die I2C -slaafadres bevat, ingestel op 0000. Na die uitvee behou die chip sy huidige slawe -adres binne die konfigurasieregisters totdat die toestel herstel is soos hierbo beskryf. Sodra die chip herstel is, moet die I2C-slaafadres in adres 0xCA in die konfigurasieregisters gestel word elke keer as die GreenPAK met 'n kragopbrengs of 'n terugstelling gesit word. Dit moet gedoen word totdat die nuwe I2C -slawe -adresbladsy in die NVM geskryf is.

Stap 5: Errata -bespreking

Errata Bespreking
Errata Bespreking

As u na die 'Page Erase Byte' (adres: 0xE3) skryf, produseer die SLG46824/6 'n nie-I2C-voldoenende ACK na die gedeelte 'Data' van die I2C-opdrag. Hierdie gedrag kan geïnterpreteer word as 'n NACK, afhangende van die implementering van die I2C -meester.

Om hierdie gedrag aan te pas, het ons die Arduino -programmeerder aangepas deur kommentaar te lewer op die kode wat in Figuur 11 getoon word. Hierdie gedeelte van die kode kyk na 'n I2C ACK aan die einde van elke I2C -opdrag in die eraseChip () -funksie. Hierdie funksie word gebruik om die NVM- en EEPROM -bladsye uit te vee. Aangesien hierdie kode -afdeling in 'n For -lus geleë is, is die 'return -1;' lyn veroorsaak dat die MCU die funksie vroegtydig verlaat.

Ondanks die teenwoordigheid van 'n NACK, sal die NVM- en EEPROM -vee -funksies behoorlik uitgevoer word. Vir 'n gedetailleerde verduideliking van hierdie gedrag, verwys na "Uitgawe 2: nie-I2C-voldoenende ACK-gedrag vir die NVM- en EEPROM-bladsywisgedeelte" in die SLG46824/6 errata-dokument (hersiening XC) op Dialog se webwerf.

Afsluiting

In hierdie instruksies beskryf ons die proses van die gebruik van die meegeleverde Arduino -programmeerder om pasgemaakte NVM- en EEPROM -snare na 'n GreenPAK IC op te laai. Die kode in die Arduino Sketch word deeglik kommentaar gelewer, maar as u enige vrae het oor die skets, kontak een van ons veldtoepassingsingenieurs of plaas u vraag op ons forum. Vir meer diepgaande inligting rakende MTP-programmeringsregisters en -prosedures, verwys u na die dialoog se programmeergids in die stelsel.

Aanbeveel: