Obsah:

Příklad programování MTP Arduino: 5 kroků
Příklad programování MTP Arduino: 5 kroků

Video: Příklad programování MTP Arduino: 5 kroků

Video: Příklad programování MTP Arduino: 5 kroků
Video: vývoj SW a testování emailů: #mailcatcher 2024, Červenec
Anonim
Příklad programování MTP Arduino
Příklad programování MTP Arduino

V tomto Instructable ukazujeme, jak pomocí programovací skici SLG46824/6 Arduino naprogramovat zařízení Dialog SLG46824/6 GreenPAK ™ Multiple-Time Programmable (MTP).

Většina zařízení GreenPAK je jednorázově programovatelná (OTP), což znamená, že jakmile je zapsána jejich banka energeticky nezávislé paměti (NVM), nelze ji přepsat. GreenPAK s funkcí MTP, jako SLG46824 a SLG46826, mají jiný typ paměťové banky NVM, který lze naprogramovat více než jednou.

Napsali jsme skicu Arduino, která uživateli umožňuje naprogramovat MTP GreenPAK pomocí několika jednoduchých příkazů pro sériový monitor. V tomto Instructable používáme SLG46826 jako náš GreenPAK s MTP.

Poskytujeme ukázkový kód pro Arduino Uno pomocí open-source platformy založené na C/C ++. Návrháři by měli extrapolovat techniky používané v kódu Arduino pro jejich konkrétní platformu.

Konkrétní informace týkající se specifikací signálu I2C, adresování I2C a paměťových prostor naleznete v Průvodci programováním systému GreenPAK, který je k dispozici na stránce produktu SLG46826. This Instructable provides a simple implementation of this programming guide.

Níže jsme popsali potřebné kroky, abychom pochopili, jak byl čip GreenPAK naprogramován. Pokud však chcete získat pouze výsledek programování, stáhněte si software GreenPAK a zobrazte již dokončený soubor návrhu GreenPAK. Připojte vývojovou sadu GreenPAK k počítači a spusťte program a vytvořte vlastní integrovaný obvod.

Krok 1: Připojení Arduino-GreenPAK

Připojení Arduino-GreenPAK
Připojení Arduino-GreenPAK
Připojení Arduino-GreenPAK
Připojení Arduino-GreenPAK

Abychom mohli naprogramovat NVM našeho SLG46826 GreenPAK pomocí naší skici Arduino, musíme nejprve připojit čtyři piny Arduino Uno k našemu GreenPAK. Tyto piny můžete připojit přímo k zásuvkovému adaptéru GreenPAK nebo k odlamovací desce s připájeným GreenPAK.

Vezměte prosím na vědomí, že externí I2C pull up rezistory nejsou na obrázku 1. Na 3,3 V výstup Arduina připojte pull -up odpor 4,7 kΩ z SCL i SDA.

Krok 2: Export dat GreenPAK NVM ze souboru návrhu GreenPAK

Export dat GreenPAK NVM ze souboru návrhu GreenPAK
Export dat GreenPAK NVM ze souboru návrhu GreenPAK
Export dat GreenPAK NVM ze souboru návrhu GreenPAK
Export dat GreenPAK NVM ze souboru návrhu GreenPAK
Export dat GreenPAK NVM ze souboru návrhu GreenPAK
Export dat GreenPAK NVM ze souboru návrhu GreenPAK

Sestavíme velmi jednoduchý design GreenPAK, který ilustruje, jak exportovat data NVM. Níže uvedený design je jednoduchý řadič úrovně, kde jsou modré kolíky vlevo spojeny s VDD (3,3 V), zatímco žluté kolíky vpravo jsou spojeny s VDD2 (1,8 V).

Chcete -li exportovat informace z tohoto návrhu, musíte vybrat Soubor → Exportovat → Exportovat NVM, jak ukazuje obrázek 3.

Poté budete muset vybrat typ souboru Intel HEX Files (*.hex) a soubor uložit.

Nyní budete muset otevřít soubor.hex pomocí textového editoru (například Notepad ++). Chcete -li se dozvědět více o formátu a syntaxi souboru HEX společnosti Intel, podívejte se na jeho stránku Wikipedie. Pro tuto aplikaci nás zajímá pouze datová část souboru, jak ukazuje obrázek 5.

Zvýrazněte a zkopírujte 256 bajtů konfiguračních dat NVM umístěných v souboru HEX. Každý řádek, který kopírujeme, je dlouhý 32 znaků, což odpovídá 16 bytům.

Vložte informace do zvýrazněné části nvmString náčrtu Arduino, jak ukazuje obrázek 6. Pokud používáte mikrokontrolér jiný než Arduino, můžete napsat funkci pro analýzu nvmData uložených v souboru GreenPAK. GP6. (Pokud otevřete soubor GreenPAK pomocí textového editoru, uvidíte, že informace o projektu ukládáme ve snadno přístupném formátu XML.)

Chcete -li nastavit data EEPROM pro návrh GreenPAK, vyberte blok EEPROM na panelu komponent, otevřete panel vlastností a klikněte na „Nastavit data“.

Nyní můžete každý bajt v EEPROM upravovat jednotlivě pomocí našeho rozhraní GUI.

Jakmile jsou vaše data EEPROM nastavena, můžete je exportovat do souboru HEX stejným způsobem, jaký byl dříve popsán pro export dat NVM. Vložte těchto 256 bajtů dat EEPROM do sekce eepromString náčrtu Arduino.

U každého vlastního návrhu je důležité zkontrolovat nastavení ochrany na kartě „Zabezpečení“v nastavení projektu. Tato karta konfiguruje ochranné bity pro maticové konfigurační registry, NVM a EEPROM. Za určitých konfigurací může nahrání sekvence NVM uzamknout SLG46824/6 do její aktuální konfigurace a odebrat funkci MTP čipu.

Krok 3: Použijte skicu Arduino

Použijte skicu Arduino
Použijte skicu Arduino

Nahrajte skicu do svého Arduina a otevřete sériový monitor s přenosovou rychlostí 115200 baudů. Nyní můžete pomocí výzev MENU skici provést několik příkazů:

● Číst - čte data NVM zařízení nebo data EEPROM pomocí zadané adresy slave

● Vymazat - vymaže buď data NVM zařízení, nebo data EEPROM pomocí zadané adresy slave

● Zápis - Vymaže a poté zapíše buď data NVM zařízení, nebo data EEPROM pomocí zadané adresy slave. Tento příkaz zapíše data uložená v polích nvmString nebo eepromString.

● Ping - vrátí seznam adres slave zařízení, které jsou připojeny ke sběrnici I2C

Výsledky těchto příkazů se vytisknou na konzolu sériového monitoru.

Krok 4: Programovací tipy a doporučené postupy

V průběhu podpory SLG46824/6 jsme zdokumentovali několik programovacích tipů, které vám pomohou vyhnout se běžným nástrahám spojeným s mazáním a zápisem do adresního prostoru NVM. Následující podsekce nastíní toto téma podrobněji.

1. Provádění přesných 16bajtových zápisů stránky NVM:

Při zápisu dat do NVM SLG46824/6 existují tři techniky, kterým je třeba se vyhnout:

● Stránka zapisuje méně než 16 bajtů

● Stránka zapisuje více než 16 bajtů

● Stránka zapisuje, že nezačíná prvním registrem na stránce (IE: 0x10, 0x20 atd.)

Pokud je použita některá z výše uvedených technik, rozhraní MTP bude ignorovat zápis I2C, aby se zabránilo načítání NVM nesprávnými informacemi. Po zápisu doporučujeme provést čtení I2C adresního prostoru NVM, abyste ověřili správný přenos dat.

2. Přenos dat NVM do konfiguračních registrů Matrix

Při zápisu NVM se konfigurační registry matice automaticky znovu nenačtou s nově zapsanými daty NVM. Přenos musí být zahájen ručně cyklováním PAK VDD nebo vygenerováním měkkého resetu pomocí I2C. Nastavením registru na adrese 0xC8 zařízení znovu povolí sekvenci Power-On Reset (POR) a znovu načte data registru z NVM do registrů.

3. Resetování adresy I2C po vymazání NVM:

Když je NVM vymazán, adresa NVM obsahující adresu I2C slave bude nastavena na 0000. Po vymazání si čip zachová aktuální adresu slave v konfiguračních registrech, dokud nebude zařízení resetováno, jak je popsáno výše. Jakmile je čip resetován, musí být adresa I2C slave nastavena na adresu 0xCA v konfiguračních registrech pokaždé, když je GreenPAK napájen nebo resetován. To je třeba provést, dokud nebude do NVM zapsána nová stránka adresy I2C slave.

Krok 5: Diskuse Errata

Diskuse Errata
Diskuse Errata

Při zápisu do „Bytu pro vymazání stránky“(adresa: 0xE3) produkuje SLG46824/6 ACK, který nevyhovuje I2C, za část „Data“příkazu I2C. Toto chování může být interpretováno jako NACK v závislosti na implementaci masteru I2C.

Abychom se tomuto chování přizpůsobili, upravili jsme programátor Arduino komentováním kódu zobrazeného na obrázku 11. Tato část kódu kontroluje I2C ACK na konci každého příkazu I2C ve funkci eraseChip (). Tato funkce slouží k vymazání stránek NVM a EEPROM. Protože je tato část kódu umístěna ve smyčce For, „return -1;“řádek způsobí, že MCU předčasně ukončí funkci.

Navzdory přítomnosti NACK budou funkce mazání NVM a EEPROM fungovat správně. Podrobné vysvětlení tohoto chování naleznete v části „Problém 2: Chování ACK nevyhovující standardu I2C pro bajt vymazání stránky NVM a EEPROM“v dokumentu errata SLG46824/6 (Revize XC) na webových stránkách Dialog.

Závěr

V tomto Instructable popisujeme proces použití dodaného programátoru Arduino k nahrání vlastních řetězců NVM a EEPROM do IC GreenPAK. Kód v náčrtu Arduino je důkladně okomentován, ale pokud máte nějaké dotazy týkající se náčrtu, obraťte se na některého z našich polních aplikačních techniků nebo svůj dotaz zveřejněte na našem fóru. Podrobnější informace o registrech a postupech programování MTP naleznete v příručce Dialog In-System Programming Guide.

Doporučuje: