Obsah:

Príklad programovania MTP Arduino: 5 krokov
Príklad programovania MTP Arduino: 5 krokov

Video: Príklad programovania MTP Arduino: 5 krokov

Video: Príklad programovania MTP Arduino: 5 krokov
Video: 36. Обзор умной IP 4K камеры видеонаблюдения Reolink RLC-820A. Подключение, Настройка, Примеры. 2024, Júl
Anonim
Príklad programovania MTP Arduino
Príklad programovania MTP Arduino

V tomto návode vám ukážeme, ako použiť programovaciu skicu SLG46824/6 Arduino na programovanie zariadenia Dialog SLG46824/6 GreenPAK ™ Multiple-Time Programmable (MTP).

Väčšina zariadení GreenPAK je jednorazovo programovateľných (OTP), čo znamená, že akonáhle je ich banka energeticky nezávislej pamäte (NVM) zapísaná, nemožno ju prepísať. GreenPAK s funkciou MTP, podobne ako SLG46824 a SLG46826, majú iný typ pamäťovej banky NVM, ktorú je možné naprogramovať viackrát.

Napísali sme skicu Arduino, ktorá umožňuje používateľovi naprogramovať MTP GreenPAK pomocou niekoľkých jednoduchých príkazov sériového monitora. V tomto návode používame SLG46826 ako náš GreenPAK s MTP.

Ponúkame ukážkový kód pre Arduino Uno pomocou open-source platformy založenej na C/C ++. Dizajnéri by mali extrapolovať techniky používané v kóde Arduino pre svoju konkrétnu platformu.

Konkrétne informácie o špecifikáciách signálu I2C, adresovaní I2C a pamäťových priestoroch nájdete v In-System Programming Guide spoločnosti GreenPAK, ktorá sa nachádza na stránke produktu SLG46826. Tento návod poskytuje jednoduchú implementáciu tohto sprievodcu programovaním.

Ďalej sme popísali potrebné kroky, aby ste pochopili, ako bol čip GreenPAK naprogramovaný. Ak však chcete získať iba výsledok programovania, stiahnite si softvér GreenPAK a zobrazte už dokončený súbor návrhu GreenPAK. Pripojte vývojovú súpravu GreenPAK k počítaču a kliknutím na program vytvorte vlastný integrovaný obvod.

Krok 1: Pripojenia Arduino-GreenPAK

Pripojenia Arduino-GreenPAK
Pripojenia Arduino-GreenPAK
Pripojenia Arduino-GreenPAK
Pripojenia Arduino-GreenPAK

Na programovanie NVM nášho SLG46826 GreenPAK pomocou našej skici Arduino budeme najskôr musieť pripojiť štyri piny Arduino Uno k nášmu GreenPAK. Tieto piny môžete pripojiť priamo k zásuvkovému adaptéru GreenPAK alebo k oddeľovacej doske so spájkovaným GreenPAK.

Vezmite prosím na vedomie, že externé pull -up rezistory I2C nie sú na obrázku 1. Pripojte 4,7 kΩ pull -up odpor z SCL aj SDA k 3,3 V výstupu Arduina.

Krok 2: Export údajov GreenPAK NVM zo súboru návrhu GreenPAK

Export údajov GreenPAK NVM zo súboru návrhu GreenPAK
Export údajov GreenPAK NVM zo súboru návrhu GreenPAK
Export údajov GreenPAK NVM zo súboru návrhu GreenPAK
Export údajov GreenPAK NVM zo súboru návrhu GreenPAK
Export údajov GreenPAK NVM zo súboru návrhu GreenPAK
Export údajov GreenPAK NVM zo súboru návrhu GreenPAK

Zostavíme veľmi jednoduchý dizajn GreenPAK, ktorý ilustruje, ako exportovať údaje NVM. Nasledujúci dizajn je jednoduchý radič úrovní, kde sú modré kolíky vľavo viazané na VDD (3,3v), zatiaľ čo žlté kolíky napravo sú viazané na VDD2 (1,8v).

Ak chcete exportovať informácie z tohto návrhu, musíte vybrať Súbor → Exportovať → Exportovať NVM, ako je znázornené na obrázku 3.

Potom budete musieť vybrať typ súboru Intel HEX Files (*.hex) a uložiť súbor.

Teraz budete musieť otvoriť súbor.hex v textovom editore (napríklad Notepad ++). Ak sa chcete dozvedieť viac o formáte a syntaxi súboru HEX spoločnosti Intel, navštívte jeho stránku Wikipedia. Pre túto aplikáciu nás zaujíma iba dátová časť súboru, ako je znázornené na obrázku 5.

Zvýraznite a skopírujte 256 bajtov konfiguračných údajov NVM umiestnených v súbore HEX. Každý riadok, ktorý kopírujeme, má 32 znakov, čo zodpovedá 16 bajtom.

Vložte informácie do zvýraznenej sekcie nvmString náčrtu Arduino, ako je znázornené na obrázku 6. Ak používate mikrokontrolér, ktorý nie je Arduino, môžete napísať funkciu na analýzu nvmData uložených v súbore GreenPAK. GP6. (Ak otvoríte súbor GreenPAK pomocou textového editora, uvidíte, že informácie o projekte ukladáme v ľahko prístupnom formáte XML.)

Ak chcete nastaviť údaje EEPROM pre svoj návrh GreenPAK, vyberte blok EEPROM na paneli komponentov, otvorte panel vlastností a kliknite na „Nastaviť údaje“.

Teraz môžete každý bajt v EEPROM upravovať jednotlivo pomocou nášho rozhrania GUI.

Akonáhle sú vaše údaje EEPROM nastavené, môžete ich exportovať do súboru HEX pomocou rovnakého postupu, aký bol predtým popísaný pri exporte údajov NVM. Vložte týchto 256 bajtov údajov EEPROM do sekcie eepromString náčrtu Arduino.

Pri každom vlastnom dizajne je dôležité skontrolovať nastavenia ochrany na karte „Zabezpečenie“v nastaveniach projektu. Táto karta konfiguruje ochranné bity pre maticové konfiguračné registre, NVM a EEPROM. V určitých konfiguráciách môže nahranie sekvencie NVM zablokovať SLG46824/6 do aktuálnej konfigurácie a odstrániť funkčnosť MTP čipu.

Krok 3: Použite skicu Arduino

Použite skicu Arduino
Použite skicu Arduino

Nahrajte skicu do svojho Arduina a otvorte sériový monitor s prenosovou rýchlosťou 115 200 baudov. Teraz môžete pomocou výziev MENU skice vykonávať niekoľko príkazov:

● Čítať - číta údaje NVM zariadenia alebo údaje EEPROM pomocou zadanej adresy slave

● Vymazať - vymaže údaje NVM zariadenia alebo údaje EEPROM pomocou zadanej adresy slave

● Zápis - Vymaže a potom zapíše buď údaje NVM zariadenia, alebo údaje EEPROM pomocou zadanej adresy slave. Tento príkaz zapíše údaje, ktoré sú uložené v poliach nvmString alebo eepromString.

● Ping - vráti zoznam adries slave zariadení, ktoré sú pripojené k zbernici I2C

Výsledky týchto príkazov sa vytlačia na konzolu sériového monitora.

Krok 4: Programovacie tipy a osvedčené postupy

V priebehu podpory SLG46824/6 sme zdokumentovali niekoľko programovacích tipov, ktoré vám pomôžu vyhnúť sa bežným nástrahám spojeným s vymazaním a zápisom do adresného priestoru NVM. Nasledujúce podsekcie podrobnejšie rozoberajú túto tému.

1. Vykonanie presných 16-bajtových zápisov stránky NVM:

Pri zápise údajov do NVM SLG46824/6 existujú tri techniky, ktorým sa treba vyhnúť:

● Stránka zapisuje menej ako 16 bajtov

● Stránka zapisuje viac ako 16 bajtov

● Stránka píše, že sa nezačína prvým registrom na stránke (IE: 0x10, 0x20 atď.)

Ak sa použije niektorá z vyššie uvedených techník, rozhranie MTP bude ignorovať zápis I2C, aby sa zabránilo načítaniu NVM nesprávnymi informáciami. Po zápise odporúčame vykonať I2C čítanie adresného priestoru NVM, aby ste overili správny prenos údajov.

2. Prenos údajov NVM do registrov konfigurácie matice

Keď je zapísaný NVM, maticové konfiguračné registre sa automaticky znova nenačítajú s novo zapísanými údajmi NVM. Prenos sa musí začať manuálne cyklovaním PAK VDD alebo vygenerovaním mäkkého resetu pomocou I2C. Nastavením registra na adrese 0xC8 zariadenie znova povolí sekvenciu Power-On Reset (POR) a znova zavedie údaje registra z NVM do registrov.

3. Resetovanie adresy I2C po vymazaní NVM:

Keď je NVM vymazaný, adresa NVM obsahujúca adresu I2C slave bude nastavená na 0000. Po vymazaní si čip zachová svoju aktuálnu adresu slave v konfiguračných registroch, kým sa zariadenie resetuje, ako je popísané vyššie. Akonáhle bol čip resetovaný, adresa I2C slave musí byť nastavená na adrese 0xCA v konfiguračných registroch vždy, keď je GreenPAK napájaný alebo resetovaný. To sa musí vykonať, kým nebude do NVM zapísaná nová stránka s adresou slave I2C.

Krok 5: Diskusia Errata

Diskusia Errata
Diskusia Errata

Pri zápise na „Bajt vymazania stránky“(adresa: 0xE3), SLG46824/6 produkuje ACK, ktorý nie je kompatibilný s I2C, za časť „Data“príkazu I2C. Toto správanie môže byť interpretované ako NACK v závislosti od implementácie hlavného I2C.

Aby sme sa vyhli tomuto správaniu, upravili sme programátor Arduino komentovaním kódu zobrazeného na obrázku 11. Táto časť kódu kontroluje I2C ACK na konci každého príkazu I2C vo funkcii eraseChip (). Táto funkcia sa používa na vymazanie stránok NVM a EEPROM. Pretože je táto časť kódu umiestnená v slučke For, „return -1;“riadok spôsobí, že MCU predčasne ukončí funkciu.

Napriek prítomnosti NACK, funkcie mazania NVM a EEPROM budú správne fungovať. Podrobné vysvetlenie tohto správania nájdete v časti „Problém 2: Správanie ACK, ktoré nie je v súlade s I2C pre bajt vymazania stránky NVM a EEPROM“v dokumente errata SLG46824/6 (Revízia XC) na webovej stránke Dialog.

Záver

V tomto návode popisujeme proces použitia dodaného programátora Arduino na nahranie vlastných reťazcov NVM a EEPROM do IC GreenPAK. Kód v náčrte Arduino je dôkladne okomentovaný, ale ak máte akékoľvek otázky týkajúce sa náčrtu, kontaktujte jedného z našich terénnych aplikačných inžinierov alebo uverejnite svoju otázku na našom fóre. Podrobnejšie informácie o registroch a postupoch programovania MTP nájdete v In-System Programming Guide spoločnosti Dialog.

Odporúča: