Съдържание:

Пример за програмиране на MTP Arduino: 5 стъпки
Пример за програмиране на MTP Arduino: 5 стъпки

Видео: Пример за програмиране на MTP Arduino: 5 стъпки

Видео: Пример за програмиране на MTP Arduino: 5 стъпки
Видео: Купюрприёмник CashCode, протокол CCNET, Arduino 2024, Ноември
Anonim
Пример за програмиране на MTP Arduino
Пример за програмиране на MTP Arduino

В тази инструкция ние показваме как да използвате скицата за програмиране на SLG46824/6 Arduino за програмиране на Dialog SLG46824/6 GreenPAK ™ многократно програмируемо (MTP) устройство.

Повечето устройства GreenPAK са еднократно програмируеми (OTP), което означава, че след като тяхната банка от енергонезависима памет (NVM) бъде записана, тя не може да бъде презаписана. GreenPAK с функцията MTP, като SLG46824 и SLG46826, имат различен тип банка памет с NVM, която може да бъде програмирана повече от веднъж.

Написахме скица на Arduino, която позволява на потребителя да програмира MTP GreenPAK с няколко прости команди за сериен монитор. В тази инструкция използваме SLG46826 като нашия GreenPAK с MTP.

Ние предоставяме примерен код за Arduino Uno, използвайки платформа с отворен код, базирана на C/C ++. Дизайнерите трябва да екстраполират техниките, използвани в кода на Arduino, за тяхната специфична платформа.

За конкретна информация относно спецификациите на I2C сигнала, I2C адресирането и пространствата в паметта, моля, направете справка с Ръководството за програмиране на системата GreenPAK, предоставено на страницата на продукта SLG46826. Тази инструкция предоставя проста реализация на това ръководство за програмиране.

По -долу описахме необходимите стъпки, за да разберете как е програмиран чипът GreenPAK. Ако обаче просто искате да получите резултат от програмирането, изтеглете софтуера GreenPAK, за да видите вече завършения файл за проектиране GreenPAK. Включете комплекта за разработка на GreenPAK към вашия компютър и натиснете програма, за да създадете персонализирана интегрална схема.

Стъпка 1: Връзки Arduino-GreenPAK

Връзки Arduino-GreenPAK
Връзки Arduino-GreenPAK
Връзки Arduino-GreenPAK
Връзки Arduino-GreenPAK

За да програмираме NVM на нашия SLG46826 GreenPAK с нашата скица на Arduino, първо трябва да свържем четири пина Arduino Uno към нашия GreenPAK. Можете да свържете тези щифтове директно към гнездовия адаптер GreenPAK или към пробивна платка със запоеното надолу GreenPAK.

Моля, обърнете внимание, че външните I2C издърпващи резистори не са показани на Фигура 1. Моля, свържете резистор за издърпване 4,7 kΩ както от SCL, така и от SDA към 3,3 V изхода на Arduino.

Стъпка 2: Експортиране на данни на GreenPAK NVM от файл за проектиране на GreenPAK

Експортиране на данни на GreenPAK NVM от файл за проектиране на GreenPAK
Експортиране на данни на GreenPAK NVM от файл за проектиране на GreenPAK
Експортиране на данни на GreenPAK NVM от файл за проектиране на GreenPAK
Експортиране на данни на GreenPAK NVM от файл за проектиране на GreenPAK
Експортиране на данни на GreenPAK NVM от файл за проектиране на GreenPAK
Експортиране на данни на GreenPAK NVM от файл за проектиране на GreenPAK

Ще съберем много прост дизайн GreenPAK, за да илюстрираме как да експортираме NVM данните. Дизайнът по -долу е прост превключвател на нивата, при който сините щифтове отляво са свързани с VDD (3.3v), докато жълтите щифтове отдясно са свързани с VDD2 (1.8v).

За да експортирате информацията от този дизайн, трябва да изберете File → Export → Export NVM, както е показано на Фигура 3.

След това ще трябва да изберете Intel HEX Files (*.hex) като тип на файла и да запишете файла.

Сега ще трябва да отворите.hex файла с текстов редактор (като Notepad ++). За да научите повече за HEX файловия формат и синтаксиса на Intel, разгледайте страницата му в Уикипедия. За това приложение се интересуваме само от частта с данни от файла, както е показано на фигура 5.

Маркирайте и копирайте 256 байта конфигурационни данни на NVM, намиращи се в HEX файла. Всеки ред, който копираме, е с дължина 32 знака, което съответства на 16 байта.

Поставете информацията в маркираната секция nvmString на скицата на Arduino, както е показано на Фигура 6. Ако използвате микроконтролер, различен от Arduino, можете да напишете функция за анализиране на nvmData, записани във файла GreenPAK. GP6. (Ако отворите GreenPAK файл с текстов редактор, ще видите, че съхраняваме информацията за проекта в лесно достъпен XML формат.)

За да зададете данните за EEPROM за вашия проект GreenPAK, изберете блока EEPROM от панела с компоненти, отворете панела със свойства и щракнете върху „Задаване на данни“.

Сега можете да редактирате всеки байт в EEPROM поотделно с нашия GUI интерфейс.

След като вашите EEPROM данни са настроени, можете да ги експортирате в HEX файл, като използвате същия метод, описан по -горе за експортиране на NVM данни. Вмъкнете тези 256 байта данни от EEPROM в секцията eepromString на скицата на Arduino.

За всеки персонализиран дизайн е важно да проверите настройките за защита в раздела „Защита“на настройките на проекта. Този раздел конфигурира защитните битове за регистрите за конфигурация на матрицата, NVM и EEPROM. При определени конфигурации качването на NVM последователност може да заключи SLG46824/6 към текущата му конфигурация и да премахне MTP функционалността на чипа.

Стъпка 3: Използвайте Arduino Sketch

Използвайте Arduino Sketch
Използвайте Arduino Sketch

Качете скицата на вашия Arduino и отворете серийния монитор със скорост 115200 бода. Сега можете да използвате подканите в менюто на скицата, за да изпълните няколко команди:

● Четене - чете или NVM данните на устройството, или EEPROM данните, използвайки посочения подчинен адрес

● Изтриване - изтрива или NVM данните на устройството, или EEPROM данните, използвайки посочения подчинен адрес

● Запис - Изтрива и след това записва или NVM данните на устройството, или EEPROM данните, като използва посочения подчинен адрес. Тази команда записва данните, записани в масивите nvmString или eepromString.

● Ping - връща списък с подчинени адреси на устройства, които са свързани към I2C шината

Резултатите от тези команди ще бъдат отпечатани на конзолата за сериен монитор.

Стъпка 4: Съвети за програмиране и най -добри практики

В хода на поддръжката на SLG46824/6 сме документирали няколко съвета за програмиране, за да избегнем често срещаните клопки, свързани с изтриването и записването в адресното пространство на NVM. Следващите подраздели очертават тази тема по -подробно.

1. Изпълнение на прецизна 16-байтова NVM страница Записва:

Когато записвате данни в NVM на SLG46824/6, има три техники, които трябва да избягвате:

● Страница пише с по -малко от 16 байта

● Страница пише с повече от 16 байта

● Страници пише, които не започват от първия регистър в една страница (IE: 0x10, 0x20 и т.н.)

Ако се използва някоя от горните техники, MTP интерфейсът ще пренебрегне записа на I2C, за да избегне зареждането на NVM с неправилна информация. Препоръчваме да извършите I2C четене на адресното пространство на NVM след писане, за да проверите правилния трансфер на данни.

2. Прехвърляне на NVM данни в регистрите за конфигурация на матрицата

Когато NVM се записва, регистрите на конфигурацията на матрицата не се зареждат автоматично с ново записаните данни на NVM. Прехвърлянето трябва да бъде инициирано ръчно чрез циклиране на PAK VDD или чрез генериране на меко нулиране с помощта на I2C. Чрез задаване на регистър в адрес 0xC8, устройството отново разрешава последователността на нулиране при включване (POR) и презарежда регистърните данни от NVM в регистрите.

3. Нулиране на I2C адреса след изтриване на NVM:

Когато NVM се изтрие, NVM адресът, съдържащ I2C подчинен адрес, ще бъде зададен на 0000. След изтриването чипът ще поддържа текущия си подчинен адрес в регистрите за конфигуриране, докато устройството се нулира, както е описано по -горе. След като чипът бъде нулиран, I2C подчиненият адрес трябва да бъде зададен в адрес 0xCA в регистрите за конфигурация всеки път, когато GreenPAK се циклира или нулира. Това трябва да стане, докато новата адресна страница на I2C slave не бъде записана в NVM.

Стъпка 5: Обсъждане на грешки

Дискусия за грешки
Дискусия за грешки

Когато пише в „Байт за изтриване на страница“(Адрес: 0xE3), SLG46824/6 произвежда несъвместим с I2C ACK след частта „Данни“на командата I2C. Това поведение може да се интерпретира като NACK в зависимост от изпълнението на I2C master.

За да се приспособим към това поведение, ние променихме Arduino програмиста, като коментирахме кода, показан на Фигура 11. Този раздел от код проверява за I2C ACK в края на всяка I2C команда във функцията eraseChip (). Тази функция се използва за изтриване на страниците с NVM и EEPROM. Тъй като този раздел от код се намира във цикъл For, „return -1;“ред кара MCU да излезе преждевременно от функцията.

Въпреки наличието на NACK, функциите за изтриване на NVM и EEPROM ще се изпълняват правилно. За подробно обяснение на това поведение, моля, направете справка „Въпрос 2: ACK поведение, несъвместимо с I2C за NVM и EEPROM байт за изтриване на страница“в документа за грешки SLG46824/6 (Ревизия XC) на уебсайта на Dialog.

Заключение

В тази инструкция ние описваме процеса на използване на предоставения Arduino програмист за качване на персонализирани низове NVM и EEPROM в IC на GreenPAK. Кодът в Arduino Sketch е подробно коментиран, но ако имате въпроси относно скицата, моля, свържете се с един от нашите инженери по полеви приложения или публикувайте въпроса си във форума ни. За по-задълбочена информация относно регистрите и процедурите за програмиране на MTP, моля, направете справка с Ръководството за системно програмиране на Dialog.

Препоръчано: