Isi kandungan:

Pengaturcaraan MTP Arduino Contoh: 5 Langkah
Pengaturcaraan MTP Arduino Contoh: 5 Langkah

Video: Pengaturcaraan MTP Arduino Contoh: 5 Langkah

Video: Pengaturcaraan MTP Arduino Contoh: 5 Langkah
Video: JAGO ARDUINO !!! Buzzer Aktif dan Pasif - Tone() - pengulangan FOR || Lesson 5 2024, November
Anonim
Contoh Pengaturcaraan MTP Arduino
Contoh Pengaturcaraan MTP Arduino

Dalam Instructable ini, kami menunjukkan cara menggunakan sketsa pengaturcaraan SLG46824 / 6 Arduino untuk memprogramkan peranti Dialog SLG46824 / 6 GreenPAK ™ Multiple-Time Programmable (MTP).

Sebilangan besar peranti GreenPAK adalah One-Time Programmable (OTP), yang bermaksud bahawa apabila bank Memori Tidak Volatil (NVM) ditulis, ia tidak dapat ditimpa. GreenPAK dengan ciri MTP, seperti SLG46824 dan SLG46826, mempunyai jenis bank memori NVM yang berbeza yang dapat diprogram lebih dari sekali.

Kami telah menulis lakaran Arduino yang membolehkan pengguna memprogram MTP GreenPAK dengan beberapa perintah monitor bersiri yang mudah. Dalam Instructable ini kami menggunakan SLG46826 sebagai GreenPAK kami dengan MTP.

Kami menyediakan contoh kod untuk Arduino Uno menggunakan platform sumber terbuka berdasarkan C / C ++. Pereka harus memperkirakan teknik yang digunakan dalam kod Arduino untuk platform khusus mereka.

Untuk maklumat khusus mengenai spesifikasi isyarat I2C, alamat I2C, dan ruang memori, sila rujuk Panduan Pengaturcaraan Dalam Sistem GreenPAK yang disediakan di halaman produk SLG46826. Instructable ini menyediakan pelaksanaan ringkas panduan pengaturcaraan ini.

Di bawah ini kami menerangkan langkah-langkah yang diperlukan untuk memahami bagaimana cip GreenPAK telah diprogramkan. Namun, jika anda hanya ingin mendapatkan hasil pengaturcaraan, muat turun perisian GreenPAK untuk melihat Fail Reka Bentuk GreenPAK yang sudah siap. Pasang GreenPAK Development Kit ke komputer anda dan tekan program untuk membuat IC tersuai.

Langkah 1: Sambungan Arduino-GreenPAK

Sambungan Arduino-GreenPAK
Sambungan Arduino-GreenPAK
Sambungan Arduino-GreenPAK
Sambungan Arduino-GreenPAK

Untuk memprogram NVM GreenPAK SLG46826 kami dengan lakaran Arduino kami, pertama-tama kami perlu menyambungkan empat pin Arduino Uno ke GreenPAK kami. Anda boleh menyambungkan pin ini terus ke Adaptor Soket GreenPAK atau ke papan pelarian dengan pematerian GreenPAK ke bawah.

Perhatikan bahawa perintang tarik I2C luaran tidak ditunjukkan dalam Rajah 1. Sila sambungkan perintang tarik 4.7 kΩ dari kedua SCL dan SDA ke output 3.3 V Arduino.

Langkah 2: Mengeksport Data GreenPAK NVM Dari Fail Reka Bentuk GreenPAK

Mengeksport Data GreenPAK NVM Dari Fail Reka Bentuk GreenPAK
Mengeksport Data GreenPAK NVM Dari Fail Reka Bentuk GreenPAK
Mengeksport Data GreenPAK NVM Dari Fail Reka Bentuk GreenPAK
Mengeksport Data GreenPAK NVM Dari Fail Reka Bentuk GreenPAK
Mengeksport Data GreenPAK NVM Dari Fail Reka Bentuk GreenPAK
Mengeksport Data GreenPAK NVM Dari Fail Reka Bentuk GreenPAK

Kami akan mengumpulkan reka bentuk GreenPAK yang sangat sederhana untuk menggambarkan cara mengeksport data NVM. Reka bentuk di bawah adalah pergeseran tahap sederhana di mana pin biru di sebelah kiri diikat pada VDD (3.3v), sementara pin kuning di sebelah kanan diikat pada VDD2 (1.8v).

Untuk mengeksport maklumat dari reka bentuk ini, anda perlu memilih Fail → Eksport → Eksport NVM, seperti yang ditunjukkan pada Gambar 3.

Anda kemudian perlu memilih Intel HEX Files (*.hex) sebagai jenis fail dan menyimpan failnya.

Sekarang, anda perlu membuka fail.hex dengan penyunting teks (seperti Notepad ++). Untuk mengetahui lebih lanjut mengenai format dan sintaks fail HEX Intel, lihat halaman Wikipedia-nya. Untuk aplikasi ini, kami hanya tertarik pada bahagian data file seperti yang ditunjukkan pada Gambar 5.

Sorot dan salin 256 bait data konfigurasi NVM yang terletak di dalam fail HEX. Setiap baris yang kami salin panjangnya 32 aksara, yang sepadan dengan 16 bait.

Tempelkan maklumat ke bahagian nvmString yang disorot pada lakaran Arduino seperti yang ditunjukkan pada Gambar 6. Jika anda menggunakan Mikrokontroler bukan Arduino, anda dapat menulis fungsi untuk menguraikan nvmData yang disimpan dalam fail GreenPAK. GP6. (Sekiranya anda membuka fail GreenPAK dengan editor teks, anda akan melihat bahawa kami menyimpan maklumat projek dalam format XML yang mudah diakses.)

Untuk menetapkan data EEPROM untuk reka bentuk GreenPAK anda, pilih blok EEPROM dari panel komponen, buka panel sifatnya, dan klik "Tetapkan Data."

Kini anda boleh mengedit setiap bait di EEPROM secara berasingan dengan antara muka GUI kami.

Setelah data EEPROM anda ditetapkan, anda boleh mengeksportnya ke fail HEX menggunakan kaedah yang sama seperti yang dijelaskan sebelumnya untuk mengeksport data NVM. Masukkan 256 bait data EEPROM ini ke bahagian eepromString pada lakaran Arduino.

Untuk setiap reka bentuk khusus, penting untuk memeriksa tetapan perlindungan dalam tab "Keamanan" tetapan projek. Tab ini mengkonfigurasi bit perlindungan untuk daftar konfigurasi matriks, NVM, dan EEPROM. Di bawah konfigurasi tertentu, memuat naik urutan NVM dapat mengunci SLG46824 / 6 ke konfigurasi semasa dan menghapus fungsi MTP cip.

Langkah 3: Gunakan Sketsa Arduino

Gunakan Lakaran Arduino
Gunakan Lakaran Arduino

Muat naik lakaran ke Arduino anda dan buka monitor bersiri dengan kadar baud 115200. Sekarang anda boleh menggunakan arahan MENU lakaran untuk melakukan beberapa arahan:

● Baca - membaca data NVM peranti atau data EEPROM menggunakan alamat hamba yang ditentukan

● Padam - menghapus data NVM peranti atau data EEPROM menggunakan alamat hamba yang ditentukan

● Tulis - Padam dan kemudian tulis sama ada data NVM peranti atau data EEPROM menggunakan alamat hamba yang ditentukan. Perintah ini menulis data yang disimpan dalam array nvmString atau eepromString.

● Ping - mengembalikan senarai alamat hamba peranti yang disambungkan ke bas I2C

Hasil arahan ini akan dicetak ke konsol monitor bersiri.

Langkah 4: Petua dan Amalan Terbaik Pengaturcaraan

Selama mendukung SLG46824 / 6, kami telah mendokumentasikan beberapa petua pengaturcaraan untuk membantu mengelakkan perangkap umum yang berkaitan dengan penghapusan dan penulisan ke ruang alamat NVM. Bahagian-bahagian berikut menggariskan topik ini dengan lebih terperinci.

1. Melaksanakan Penulisan Halaman NVM 16-Byte Tepat:

Semasa menulis data ke NVM SLG46824 / 6, ada tiga teknik untuk mengelakkan:

● Halaman menulis dengan kurang daripada 16 bait

● Halaman menulis dengan lebih daripada 16 bait

● Halaman menulis bahawa jangan bermula pada daftar pertama dalam halaman (IE: 0x10, 0x20, dll.)

Sekiranya ada teknik di atas digunakan, antara muka MTP akan mengabaikan penulisan I2C untuk mengelakkan memuat NVM dengan maklumat yang salah. Kami mengesyorkan melakukan pembacaan I2C ruang alamat NVM setelah menulis untuk mengesahkan pemindahan data yang betul.

2. Memindahkan Data NVM ke dalam Matrix Configuration Register

Semasa NVM ditulis, daftar konfigurasi matriks tidak dimuat semula secara automatik dengan data NVM yang baru ditulis. Pemindahan mesti dilakukan secara manual dengan mengitar PAK VDD atau dengan membuat soft reset menggunakan I2C. Dengan menetapkan daftar di alamat 0xC8, peranti mengaktifkan semula urutan Power-On Reset (POR) dan memuatkan semula data pendaftaran dari NVM ke dalam daftar.

3. Menetapkan semula Alamat I2C selepas NVM Erase:

Apabila NVM dihapus, alamat NVM yang mengandungi alamat hamba I2C akan ditetapkan ke 0000. Setelah penghapusan, cip akan mengekalkan alamat budaknya sekarang dalam daftar konfigurasi sehingga peranti diset semula seperti yang dijelaskan di atas. Setelah cip diset semula, alamat hamba I2C mesti ditetapkan dalam alamat 0xCA dalam daftar konfigurasi setiap kali GreenPAK dihidupkan atau diatur semula. Ini mesti dilakukan sehingga halaman alamat hamba I2C baru ditulis di NVM.

Langkah 5: Perbincangan Errata

Perbincangan Errata
Perbincangan Errata

Semasa menulis ke "Page Erase Byte" (Alamat: 0xE3), SLG46824 / 6 menghasilkan ACK yang tidak sesuai dengan I2C setelah bahagian "Data" dari perintah I2C. Tingkah laku ini mungkin ditafsirkan sebagai NACK bergantung pada pelaksanaan master I2C.

Untuk menampung tingkah laku ini, kami mengubah suai pengaturcara Arduino dengan memberi komen mengenai kod yang ditunjukkan dalam Rajah 11. Bahagian kod ini memeriksa untuk I2C ACK pada akhir setiap arahan I2C dalam fungsi eraseChip (). Fungsi ini digunakan untuk menghapus halaman NVM dan EEPROM. Oleh kerana bahagian kod ini terletak di gelung For, "return -1;" garis menyebabkan MCU keluar dari fungsi sebelum waktunya.

Walaupun terdapat NACK, fungsi penghapusan NVM dan EEPROM akan berjalan dengan baik. Untuk penjelasan terperinci mengenai tingkah laku ini, rujuk "Isu 2: Tingkah Laku ACK Tidak Patuh I2C untuk NVM dan EEPROM Page Erase Byte" dalam dokumen errata SLG46824 / 6 (Revisi XC) di laman web Dialog.

Kesimpulannya

Dalam Instructable ini kami menerangkan proses penggunaan pengaturcara Arduino yang disediakan untuk memuat naik rentetan NVM dan EEPROM tersuai ke IC GreenPAK. Kod dalam Sketsa Arduino dikomentari dengan teliti, tetapi jika anda mempunyai pertanyaan mengenai lakaran tersebut, sila hubungi salah satu Jurutera Aplikasi Lapangan kami atau hantar pertanyaan anda di forum kami. Untuk maklumat yang lebih mendalam mengenai daftar dan prosedur pengaturcaraan MTP, sila rujuk Panduan Pengaturcaraan Dalam Sistem Dialog.

Disyorkan: