Мазмуну:

MTP Arduino программалоо мисалы: 5 кадам
MTP Arduino программалоо мисалы: 5 кадам

Video: MTP Arduino программалоо мисалы: 5 кадам

Video: MTP Arduino программалоо мисалы: 5 кадам
Video: MTP 12103 COMPUTER PROGRAMMING 2024, Ноябрь
Anonim
MTP Arduino программалоо мисалы
MTP Arduino программалоо мисалы

Бул Нускамада SLG46824/6 Arduino программалоо эскизин SLG46824/6 GreenPAK ™ Multiple-Time Programmable (MTP) түзмөгүн программалоо үчүн кантип колдонууну көрсөтөбүз.

GreenPAK түзмөктөрүнүн көбү бир жолку программалануучу (OTP), башкача айтканда, алардын туруктуу эмес эс тутуму (NVM) жазылгандан кийин, аны кайра жазууга болбойт. MTP өзгөчөлүгү бар GreenPAKs, SLG46824 жана SLG46826 сыяктуу, бир нече жолу программалана турган NVM эс тутумунун башка түрүнө ээ.

Биз колдонуучуга MTP GreenPAKти бир нече жөнөкөй сериялык монитор буйруктары менен программалоого мүмкүндүк берген Arduino эскизин жаздык. Бул Нускамада биз SLG46826ны GreenPAK катары MTP менен колдонобуз.

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

I2C сигналынын мүнөздөмөлөрү, I2C даректери жана эс мейкиндиктери жөнүндө конкреттүү маалымат алуу үчүн SLG46826 продукт бетинде берилген GreenPAK системалык программалоо колдонмосуна кайрылыңыз. Бул Instructable бул программалоо көрсөтмөсүнүн жөнөкөй аткарылышын камсыз кылат.

Төмөндө GreenPAK чипи кантип программаланганын түшүнүү үчүн керектүү кадамдарды сүрөттөдүк. Бирок, эгер сиз программалоонун жыйынтыгын алууну кааласаңыз, GreenPAK программасын жүктөп алыңыз, буга чейин бүткөн GreenPAK Дизайн Файлын көрүңүз. GreenPAK Development Kitти компьютериңизге сайыңыз жана колдонуучу 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дан 4.7 кОмдук каршылыкты Arduino’дун 3.3 V чыгаруусуна туташтырыңыз.

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.3v), оң жагындагы сары казыктар VDD2ге (1.8v) байланган жөнөкөй деңгээлди алмаштыруучу.

Бул дизайндагы маалыматты экспорттоо үчүн 3 -сүрөттө көрсөтүлгөндөй Файл → Экспорт → Экспорт NVM тандоо керек.

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

Эми,.hex файлын текст редактору менен ачуу керек болот (Notepad ++ сыяктуу). Intelдин HEX файл форматы жана синтаксиси жөнүндө көбүрөөк билүү үчүн, анын Википедия баракчасын караңыз. Бул колдонмо үчүн биз 5 -сүрөттө көрсөтүлгөндөй файлдын маалымат бөлүгүнө гана кызыгабыз.

HEX файлынын ичинде жайгашкан 256 байт NVM конфигурация маалыматын бөлүп көрсөтүү жана көчүрүү. Биз көчүрүп жаткан ар бир сап 32 белгиден турат, бул 16 байтка туура келет.

Маалыматты 6-сүрөттө көрсөтүлгөндөй Arduino эскизинин nvmString бөлүгүнө чаптаңыз. Эгерде сиз Arduino эмес микроконтроллерди колдонуп жатсаңыз, GreenPAK. GP6 файлында сакталган nvmData талдоо функциясын жаза аласыз. (Эгерде сиз GreenPAK файлын текст редактору менен ачсаңыз, биз проект маалыматын оңой жеткиликтүү XML форматында сактайбыз.)

GreenPAK дизайныңыз үчүн EEPROM маалыматын коюу үчүн, компоненттер панелинен EEPROM блогун тандап, анын касиеттер панелин ачыңыз жана "Дайындарды коюу" баскычын басыңыз.

Эми сиз биздин GUI интерфейсиңиз менен EEPROMдагы ар бир байтты жекече түзөтө аласыз.

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 кулунун дареги 0xCA дарегине конфигурация регистрлеринин ичинде орнотулушу керек, GreenPAKтин кубаттуулугу же баштапкы абалга келтирилген сайын. Бул жаңы I2C кул дареги баракчасы NVMде жазылганга чейин жасалышы керек.

5 -кадам: каталарды талкуулоо

Errata Discussion
Errata Discussion

"Баракты тазалоо байтына" (Дарек: 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 программалоо реестрлери жана процедуралары жөнүндө кененирээк маалымат алуу үчүн, диалогдун системалык программалоо колдонмосуна кайрылыңыз.

Сунушталууда: