Мазмұны:

MTP Arduino бағдарламалау мысалы: 5 қадам
MTP Arduino бағдарламалау мысалы: 5 қадам

Бейне: MTP Arduino бағдарламалау мысалы: 5 қадам

Бейне: MTP Arduino бағдарламалау мысалы: 5 қадам
Бейне: MTP 12103 COMPUTER PROGRAMMING 2024, Шілде
Anonim
MTP Arduino бағдарламалау мысалы
MTP Arduino бағдарламалау мысалы

Бұл нұсқаулықта SLG46824/6 GreenPAK ™ Multiple-Time Programmable (MTP) Dialog құрылғысын бағдарламалау үшін SLG46824/6 Arduino бағдарламалау нобайын қалай қолдану керектігін көрсетеміз.

GreenPAK құрылғыларының көпшілігі бір реттік бағдарламаланатын (OTP) болып табылады, яғни олардың тұрақты емес жады банкі (NVM) жазылғаннан кейін оны қайта жазуға болмайды. MTP мүмкіндігі бар GreenPAK -те SLG46824 және SLG46826 сияқты, NVM жадының басқа түрі бар, оны бірнеше рет бағдарламалауға болады.

Біз Arduino эскизін жаздық, ол пайдаланушыға MTP GreenPAK бағдарламасын бірнеше сериялық мониторлық командалармен бағдарламалауға мүмкіндік береді. Бұл нұсқаулықта біз SLG46826 MTP бар GreenPAK ретінде қолданамыз.

Біз Arduino Uno үшін үлгі кодын C/C ++ негізінде ашық бастапқы платформаны қолдана отырып ұсынамыз. Дизайнерлер арнайы платформа үшін Arduino кодында қолданылатын әдістерді экстраполяциялауы керек.

I2C сигнал сипаттамаларына, I2C адрестеуге және жад кеңістіктеріне қатысты нақты ақпарат алу үшін SLG46826 өнім бетінде берілген GreenPAK жүйелік бағдарламалау нұсқаулығына сілтеме жасаңыз. Бұл нұсқаулық осы бағдарламалау нұсқаулығының қарапайым орындалуын қамтамасыз етеді.

Төменде GreenPAK чипінің қалай бағдарламаланғанын түсіну үшін қажет қадамдарды сипаттадық. Алайда, егер сіз бағдарламалаудың нәтижесін алғыңыз келсе, GreenPAK бағдарламалық жасақтамасын жүктеп алып, аяқталған GreenPAK дизайн файлын қараңыз. GreenPAK әзірлеу жинағын компьютерге қосыңыз және арнайы IC құру үшін бағдарламаны басыңыз.

1-қадам: Arduino-GreenPAK қосылымдары

Arduino-GreenPAK қосылымдары
Arduino-GreenPAK қосылымдары
Arduino-GreenPAK қосылымдары
Arduino-GreenPAK қосылымдары

SLG46826 GreenPAK NVM -ді Arduino эскизімен бағдарламалау үшін алдымен біздің GreenPAK -ке төрт Arduino Uno түйреуішін қосу керек. Сіз бұл түйреуіштерді тікелей GreenPAK розеткалық адаптеріне немесе төмен қарай дәнекерленген GreenPAK бар ажырату тақтасына қосуға болады.

Сыртқы I2C тартқыш резисторлары 1 -суретте көрсетілмегеніне назар аударыңыз, SCL мен SDA -дан Arduino 3,3 В шығысына 4,7 кОм тартылатын резисторды қосыңыз.

2 -қадам: GreenPAK NVM деректерін GreenPAK дизайн файлынан экспорттау

GreenPAK NVM деректерін GreenPAK дизайн файлынан экспорттау
GreenPAK NVM деректерін GreenPAK дизайн файлынан экспорттау
GreenPAK NVM деректерін GreenPAK дизайн файлынан экспорттау
GreenPAK NVM деректерін GreenPAK дизайн файлынан экспорттау
GreenPAK NVM деректерін GreenPAK дизайн файлынан экспорттау
GreenPAK NVM деректерін GreenPAK дизайн файлынан экспорттау

Біз NVM деректерін экспорттауды көрсету үшін GreenPAK -тың өте қарапайым дизайнын жинаймыз. Төмендегі дизайн - сол жақтағы көк түйреуіштер VDD (3.3в), ал оң жақтағы сары түйреуіштер VDD2 (1.8v) -ға байланған қарапайым деңгейлік ауыстырғыш.

Бұл дизайндағы ақпаратты экспорттау үшін 3 суретте көрсетілгендей Файл → Экспорттау → NVM экспорттауды таңдау керек.

Содан кейін сізге файл түрі ретінде Intel HEX Files (*.hex) таңдап, файлды сақтау қажет болады.

Енді сізге.hex файлын мәтіндік редактормен ашу қажет (мысалы, Блокнот ++). Intel -дің HEX файл пішімі мен синтаксисі туралы көбірек білу үшін оның Уикипедия бетіне өтіңіз. Бұл қосымша үшін біз 5 -суретте көрсетілгендей файлдың деректер бөлігіне ғана қызығамыз.

HEX файлында орналасқан NVM конфигурациясының 256 байт деректерін бөлектеңіз және көшіріңіз. Біз көшіретін әрбір жолдың ұзындығы 32 таңбадан тұрады, бұл 16 байтқа сәйкес келеді.

Ақпаратты 6-суретте көрсетілгендей Arduino нобайының nvmString бөлектелген бөліміне қойыңыз. Егер сіз Arduino емес микроконтроллерді қолдансаңыз, GreenPAK. GP6 файлында сақталған nvmData-ды талдау функциясын жаза аласыз. (Егер сіз GreenPAK файлын мәтіндік редактормен ашсаңыз, біз жоба ақпаратын оңай қол жетімді XML форматында сақтайтынымызды көресіз.)

GreenPAK дизайнына EEPROM деректерін орнату үшін компоненттер тақтасынан EEPROM блогын таңдап, оның қасиеттер тақтасын ашып, «Деректерді орнату» түймесін басыңыз.

Енді сіз EEPROM -дегі әрбір байтты GUI интерфейсімен жеке өңдей аласыз.

EEPROM деректері орнатылғаннан кейін, сіз NVM деректерін экспорттау үшін бұрын сипатталған әдісті қолдана отырып, оны HEX файлына экспорттауға болады. Осы 256 байт EEPROM деректерін Arduino эскизінің eepromString бөліміне енгізіңіз.

Әрбір реттелетін дизайн үшін жоба параметрлерінің «Қауіпсіздік» қойындысындағы қорғау параметрлерін тексеру маңызды. Бұл қойынды матрицалық конфигурация регистрлері, NVM және EEPROM үшін қорғау биттерін конфигурациялайды. Кейбір конфигурацияларда NVM реттілігін жүктеу SLG46824/6 -ны ағымдағы конфигурациясына бекітіп, чиптің MTP функциясын жоя алады.

3 -қадам: Arduino эскизін қолданыңыз

Arduino эскизін қолданыңыз
Arduino эскизін қолданыңыз

Эскизді Arduino -ға жүктеп, сериялық мониторды 115200 бауд жылдамдығымен ашыңыз. Енді сіз MENU эскизін бірнеше командаларды орындау үшін пайдалана аласыз:

● Оқу - көрсетілген қосалқы адрес арқылы құрылғының NVM деректерін немесе EEPROM деректерін оқиды

● Өшіру - көрсетілген қосалқы мекенжайды қолдана отырып, құрылғының NVM деректерін немесе EEPROM деректерін өшіреді

● Жазу - көрсетілген қосалқы мекенжайды қолданып құрылғының NVM деректерін немесе EEPROM деректерін өшіреді, содан кейін жазады. Бұл команда nvmString немесе eepromString массивтерінде сақталатын деректерді жазады.

● Ping - I2C шинасына қосылған құрылғының қосалқы мекенжайларының тізімін қайтарады

Бұл пәрмендердің нәтижелері сериялық монитор консолінде басып шығарылады.

4 -қадам: бағдарламалау бойынша кеңестер мен үздік тәжірибелер

SLG46824/6 қолдау барысында біз NVM мекенжай кеңістігін жоюға және жазуға байланысты жиі кездесетін қателіктерді болдырмауға көмектесетін бірнеше бағдарламалау кеңестерін құжаттадық. Келесі бөлімдерде бұл тақырып толығырақ сипатталған.

1. Дәл 16 байтты NVM беті орындалады:

SLG46824/6 NVM -ге деректерді жазу кезінде болдырмаудың үш әдісі бар:

● Бет 16 байттан аз жазады

● Бет 16 байттан артық жазады

● Бет беттің бірінші регистрінде басталмайтын жазбаларды жазады (IE: 0x10, 0x20, т.б.)

Егер жоғарыда аталған әдістердің кез келгені қолданылса, MTP интерфейсі NVM -ге қате ақпарат жүктелмеу үшін I2C жазуын елемейді. Деректердің дұрыс тасымалдануын тексеру үшін жазбадан кейін NVM мекенжай кеңістігін I2C оқуды ұсынамыз.

2. NVM деректерін матрицалық конфигурация регистрлеріне тасымалдау

NVM жазылған кезде матрицалық конфигурация регистрлері жаңадан жазылған NVM деректерімен автоматты түрде қайта жүктелмейді. Тасымалдауды PAK VDD велосипедінің көмегімен немесе I2C көмегімен жұмсақ қалпына келтіру арқылы қолмен бастау керек. 0xC8 адресінде регистрді орната отырып, құрылғы Power-On Reset (POR) реттілігін қайта қосады және NVM-ден регистр деректерін регистрлерге қайта жүктейді.

3. NVM өшірілгеннен кейін I2C мекенжайын қалпына келтіру:

NVM өшірілгенде, I2C қосалқы мекенжайы бар NVM мекенжайы 0000 болып орнатылады. Өшіргеннен кейін, чип құрылғы жоғарыда сипатталғандай қалпына келтірілгенше конфигурация регистрлерінде өзінің ағымдағы қосалқы мекенжайын сақтайды. Чипті қалпына келтіргеннен кейін, I2C қосалқы мекенжайы GreenPAK қуаты ауысқан немесе қалпына келтірілген сайын конфигурация регистрлерінде 0xCA адресіне орнатылуы керек. Бұл жаңа I2C қосалқы мекенжай беті NVM -ге жазылғанша жасалуы керек.

5 -қадам: қате пікірталас

Қате пікірталас
Қате пікірталас

«Бетті өшіру байтына» (Мекенжай: 0xE3) жазу кезінде SLG46824/6 I2C пәрменінің «Деректер» бөлімінен кейін I2C-ке сәйкес келмейтін ACK шығарады. Бұл мінез -құлық I2C шеберінің енгізілуіне байланысты NACK ретінде түсіндірілуі мүмкін.

Бұл әрекетке бейімделу үшін біз Arduino бағдарламашысын 11 -суретте көрсетілген кодты түсіндіру арқылы өзгерттік, кодтың бұл бөлімі eraseChip () функциясындағы әрбір I2C пәрменінің соңында I2C ACK тексереді. Бұл функция NVM және EEPROM беттерін өшіру үшін қолданылады. Кодтың бұл бөлімі For циклінде орналасқандықтан, «return -1;» сызық MCU функциядан мерзімінен бұрын шығуына әкеледі.

NACK болуына қарамастан, NVM және EEPROM өшіру функциялары дұрыс орындалады. Бұл мінез-құлықтың егжей-тегжейлі түсіндірмесі үшін Dialog веб-сайтындағы SLG46824/6 қате құжатындағы (Revision XC) «2-шығарылым: NVM және EEPROM бетін өшіру байтына арналған I2C-ке сәйкес келмейтін ACK мінез-құлқы» сілтемесін қараңыз.

Қорытынды

Бұл нұсқаулықта біз GreenPAK IC -ге NVM және EEPROM реттелетін жолдарды жүктеу үшін Arduino бағдарламашысын қолдану процесін сипаттаймыз. Arduino Sketch -тегі код мұқият түсіндірілген, бірақ егер сізде эскизге қатысты сұрақтарыңыз болса, біздің далалық қосымшалар инженерлерінің біріне хабарласыңыз немесе сұрағыңызды біздің форумға жіберіңіз. MTP бағдарламалау регистрлері мен процедуралары туралы толығырақ ақпарат алу үшін Dialog жүйелік бағдарламалау нұсқаулығын қараңыз.

Ұсынылған: