Mündəricat:

MTP Arduino Proqramlaşdırma nümunəsi: 5 addım
MTP Arduino Proqramlaşdırma nümunəsi: 5 addım

Video: MTP Arduino Proqramlaşdırma nümunəsi: 5 addım

Video: MTP Arduino Proqramlaşdırma nümunəsi: 5 addım
Video: MTP 12103 COMPUTER PROGRAMMING 2024, Noyabr
Anonim
MTP Arduino Proqramlaşdırma nümunəsi
MTP Arduino Proqramlaşdırma nümunəsi

Bu Təlimat kitabında SLG46824/6 GreenPAK ™ Multiple-Time Programmable (MTP) cihazını Dialog SLG46824/6 proqramlaşdırmaq üçün SLG46824/6 Arduino proqramlaşdırma eskizini necə istifadə edəcəyimizi göstəririk.

GreenPAK cihazlarının çoxu Birdəfəlik Proqramlaşdırıla biləndir (OTP), yəni Qeyri-Uçucu Yaddaş bankı (NVM) yazıldıqdan sonra onun üzərinə yazıla bilməz. SLG46824 və SLG46826 kimi MTP xüsusiyyətli GreenPAK -lər, bir dəfədən çox proqramlaşdırıla bilən fərqli bir NVM yaddaş bankına malikdir.

İstifadəçiyə bir neçə sadə serial monitor əmri ilə MTP GreenPAK proqramlaşdırmağa imkan verən bir Arduino eskizi yazdıq. Bu Təlimat kitabında MTP ilə GreenPAK olaraq SLG46826 istifadə edirik.

C/C ++ əsaslı açıq mənbə platformasından istifadə edərək Arduino Uno üçün nümunə kodu təqdim edirik. Dizaynerlər, xüsusi platformaları üçün Arduino kodunda istifadə olunan texnikaları ekstrapolyasiya etməlidirlər.

I2C siqnal xüsusiyyətləri, I2C ünvanlama və yaddaş boşluqları ilə bağlı xüsusi məlumat üçün SLG46826 məhsul səhifəsində təqdim olunan GreenPAK Sistem İçi Proqramlaşdırma Bələdçisinə müraciət edin. Bu Təlimat, bu proqramlaşdırma təlimatının sadə bir tətbiqini təmin edir.

Aşağıda GreenPAK çipinin necə proqramlaşdırıldığını anlamaq üçün lazım olan addımları təsvir etdik. Ancaq proqramlaşdırmanın nəticəsini əldə etmək istəyirsinizsə, artıq tamamlanmış GreenPAK Dizayn Faylına baxmaq üçün GreenPAK proqramını yükləyin. GreenPAK İnkişaf Kitini kompüterinizə qoşun və xüsusi IC yaratmaq üçün proqramı vurun.

Addım 1: Arduino-GreenPAK Əlaqələri

Arduino-GreenPAK Əlaqələri
Arduino-GreenPAK Əlaqələri
Arduino-GreenPAK Əlaqələri
Arduino-GreenPAK Əlaqələri

SLG46826 GreenPAK -ın NVM -ni Arduino eskizimizlə proqramlaşdırmaq üçün əvvəlcə GreenPAK -a dörd Arduino Uno pinini bağlamalıyıq. Bu pinləri birbaşa GreenPAK Soket Adaptörünə və ya aşağıya lehimlənmiş GreenPAK olan bir qırılma taxtasına bağlaya bilərsiniz.

Nəzərə alın ki, xarici I2C çəkmə rezistorları Şəkil 1 -də göstərilməyib. Zəhmət olmasa, həm SCL, həm də SDA -dan Arduino -nun 3.3 V çıxışına 4.7 kO -lik bir çəkmə müqaviməti bağlayın.

Addım 2: GreenPAK NVM məlumatlarını GreenPAK Dizayn Faylından ixrac etmək

GreenPAK NVM məlumatlarını GreenPAK Dizayn Faylından ixrac etmək
GreenPAK NVM məlumatlarını GreenPAK Dizayn Faylından ixrac etmək
GreenPAK NVM məlumatlarını GreenPAK Dizayn Faylından ixrac etmək
GreenPAK NVM məlumatlarını GreenPAK Dizayn Faylından ixrac etmək
GreenPAK NVM məlumatlarını GreenPAK Dizayn Faylından ixrac etmək
GreenPAK NVM məlumatlarını GreenPAK Dizayn Faylından ixrac etmək

NVM məlumatlarının necə ixrac olunacağını göstərmək üçün çox sadə bir GreenPAK dizaynını bir araya gətirəcəyik. Aşağıdakı dizayn, soldakı mavi pinlərin VDD (3.3v), sağdakı sarı pinlərin VDD2 (1.8v) ilə bağlandığı sadə bir səviyyə dəyişdiricisidir.

Bu dizayndan məlumatları ixrac etmək üçün Şəkil 3 -də göstərildiyi kimi Fayl → İxrac → NVM -i İxrac etməyi seçməlisiniz.

Daha sonra fayl növü olaraq Intel HEX Files (*.hex) seçin və faylı saxlamalısınız.

İndi.hex faylını mətn redaktoru ilə (Notepad ++ kimi) açmalısınız. Intel -in HEX fayl formatı və sintaksisi haqqında daha çox məlumat əldə etmək üçün Wikipedia səhifəsinə baxın. Bu tətbiq üçün yalnız Şəkil 5 -də göstərildiyi kimi faylın məlumat hissəsi ilə maraqlanırıq.

HEX faylının içərisində olan 256 bayt NVM konfiqurasiya məlumatını vurğulayın və kopyalayın. Kopyaladığımız hər sətir 32 bayt uzunluğundadır ki, bu da 16 bayta uyğundur.

Məlumatı Şəkil 6-da göstərildiyi kimi Arduino eskizinin vurgulanmış nvmString hissəsinə yapışdırın. Arduino olmayan bir mikro nəzarətçi istifadə edirsinizsə, GreenPAK. GP6 faylında saxlanan nvmDatanı təhlil etmək üçün bir funksiya yaza bilərsiniz. (GreenPAK faylını mətn redaktoru ilə açsanız, layihə məlumatlarını asanlıqla əldə edilə bilən bir XML formatında saxladığımızı görərsiniz.)

GreenPAK dizaynınız üçün EEPROM məlumatlarını təyin etmək üçün komponentlər panelindən EEPROM blokunu seçin, xüsusiyyətlər panelini açın və "Məlumatları Ayarla" düyməsini basın.

İndi GUI interfeysi ilə EEPROM -da hər baytı fərdi olaraq düzəldə bilərsiniz.

EEPROM məlumatlarınız təyin edildikdən sonra, NVM məlumatlarını ixrac etmək üçün əvvəllər təsvir edilən eyni metoddan istifadə edərək bir HEX faylına ixrac edə bilərsiniz. Bu 256 bayt EEPROM məlumatlarını Arduino eskizinin eepromString hissəsinə daxil edin.

Hər bir xüsusi dizayn üçün, layihə parametrlərinin "Təhlükəsizlik" sekmesinde qorunma parametrlərini yoxlamaq vacibdir. Bu sekme matris konfiqurasiya qeydləri, NVM və EEPROM üçün müdafiə bitlərini konfiqurasiya edir. Müəyyən konfiqurasiyalar altında NVM ardıcıllığının yüklənməsi SLG46824/6 -nı indiki konfiqurasiyasına kilidləyə və çipin MTP funksionallığını silə bilər.

Addım 3: Arduino Sketch istifadə edin

Arduino eskizindən istifadə edin
Arduino eskizindən istifadə edin

Eskizi Arduino -ya yükləyin və 115200 baud dərəcəsi ilə serial monitoru açın. İndi bir neçə əmri yerinə yetirmək üçün eskizin MENU əmrlərindən istifadə edə bilərsiniz:

● Oxu - göstərilən qulluq ünvanını istifadə edərək cihazın NVM məlumatlarını və ya EEPROM məlumatlarını oxuyur

● Silmək - cihazın NVM məlumatlarını və ya EEPROM məlumatlarını göstərilən slave ünvanından istifadə edərək silir

● Yazın - Cihazın NVM məlumatlarını və ya EEPROM məlumatlarını göstərilən slave ünvanını istifadə edərək silir və sonra yazır. Bu əmr nvmString və ya eepromString massivlərində saxlanılan məlumatları yazır.

● Ping - I2C avtobusuna qoşulmuş cihaz qulluq ünvanlarının siyahısını qaytarır

Bu əmrlərin nəticələri serial monitor konsolunda çap olunacaq.

Addım 4: Proqramlaşdırma Məsləhətləri və Ən Yaxşı Təcrübələr

SLG46824/6 -nı dəstəkləyərkən, NVM ünvan sahəsini silmək və yazmaqla əlaqəli ümumi problemlərdən qaçınmaq üçün bir neçə proqramlaşdırma məsləhətini sənədləşdirdik. Aşağıdakı bölmələr bu mövzunu daha ətraflı təsvir edir.

1. Dəqiq 16 Baytlıq NVM Səhifəsinin Yazılması:

SLG46824/6 NVM -ə məlumat yazarkən, qarşısını almaq üçün üç üsul var:

● Səhifə 16 baytdan az yazır

● Səhifə 16 baytdan çox yazır

● Səhifə, bir səhifədəki ilk qeyddən başlamaz (IE: 0x10, 0x20 və s.)

Yuxarıda göstərilən üsullardan hər hansı biri istifadə olunarsa, MTP interfeysi, NVM -in yanlış məlumatlarla yüklənməməsi üçün I2C yazısını nəzərə almayacaq. Doğru məlumat ötürülməsini yoxlamaq üçün yazdıqdan sonra NVM ünvan boşluğunun I2C oxumasını tövsiyə edirik.

2. NVM Məlumatlarının Matrix Konfiqurasiya Reyestrinə köçürülməsi

NVM yazılarkən, matris konfiqurasiya qeydləri yeni yazılmış NVM məlumatları ilə avtomatik olaraq yenidən yüklənmir. Transfer PAK VDD velosiped sürməklə və ya I2C istifadə edərək yumşaq bir sıfırlama yaratmaqla əl ilə başlamalıdır. 0xC8 ünvanında reyestr quraraq, cihaz Power-On Reset (POR) ardıcıllığını yenidən aktivləşdirir və NVM-dən qeyd məlumatlarını registrlərə yenidən yükləyir.

3. NVM sildikdən sonra I2C ünvanını sıfırlamaq:

NVM silindikdə, I2C slave ünvanını ehtiva edən NVM ünvanı 0000 olaraq təyin ediləcək. Silmədən sonra çip, cihaz yuxarıda göstərildiyi kimi sıfırlanana qədər konfiqurasiya qeydlərində mövcud qul ünvanını saxlayacaq. Çip sıfırlandıqdan sonra, GreenPAK hər dəfə elektrik dövrəsinə girəndə və ya sıfırlandıqda, I2C kölə ünvanı konfiqurasiya qeydlərində 0xCA ünvanına təyin olunmalıdır. Bu, yeni I2C kölə ünvan səhifəsi NVM -də yazılana qədər edilməlidir.

Addım 5: Səhv Söhbət

Səhv Söhbət
Səhv Söhbət

"Səhifə Silmə Baytına" (Ünvan: 0xE3) yazarkən SLG46824/6, I2C əmrinin "Məlumat" hissəsindən sonra I2C uyğun olmayan bir ACK istehsal edir. Bu davranış, I2C ustasının tətbiqindən asılı olaraq NACK olaraq şərh edilə bilər.

Bu davranışa uyğunlaşmaq üçün Şəkil 11 -də göstərilən kodu şərh edərək Arduino proqramçısını dəyişdirdik, kodun bu bölməsi eraseChip () funksiyasındakı hər I2C əmrinin sonunda I2C ACK yoxlayır. Bu funksiya NVM və EEPROM səhifələrini silmək üçün istifadə olunur. Kodun bu bölməsi For döngəsində yerləşdiyindən "return -1;" xətt MCU -nun funksiyadan vaxtından əvvəl çıxmasına səbəb olur.

Bir NACK olmasına baxmayaraq, NVM və EEPROM silmə funksiyaları düzgün yerinə yetiriləcəkdir. Bu davranışın ətraflı izahı üçün, Dialoqun veb saytındakı SLG46824/6 səhv sənədində (Revision XC) "Məsələ 2: NVM və EEPROM Səhifə Silmə Baytı üçün I2C Uyğun olmayan ACK Davranışı" na müraciət edin.

Nəticə

Bu Təlimat kitabında, xüsusi NVM və EEPROM sətirlərini GreenPAK IC -ə yükləmək üçün təqdim olunan Arduino proqramçısından istifadə prosesini təsvir edirik. Arduino Sketchdəki kod hərtərəfli şərh olunur, ancaq eskizlə bağlı hər hansı bir sualınız olarsa, Sahə Tətbiqi Mühəndislərimizdən biri ilə əlaqə saxlayın və ya sualınızı forumumuza göndərin. MTP proqramlaşdırma qeydləri və prosedurları haqqında daha ətraflı məlumat üçün Dialoqun Sistem İçi Proqramlaşdırma Bələdçisinə müraciət edin.

Tövsiyə: