Daftar Isi:

Contoh Pemrograman MTP Arduino: 5 Langkah
Contoh Pemrograman MTP Arduino: 5 Langkah

Video: Contoh Pemrograman MTP Arduino: 5 Langkah

Video: Contoh Pemrograman MTP Arduino: 5 Langkah
Video: Belajar Arduino Dasar - 5. Input dan Output 2024, November
Anonim
Contoh Pemrograman MTP Arduino
Contoh Pemrograman MTP Arduino

Dalam Instruksi ini, kami menunjukkan cara menggunakan sketsa pemrograman Arduino SLG46824/6 untuk memprogram perangkat Dialog SLG46824/6 GreenPAK™ Multiple-Time Programmable (MTP).

Sebagian besar perangkat GreenPAK adalah One-Time Programmable (OTP), artinya setelah bank Memori Non-Volatile (NVM) mereka ditulis, itu tidak dapat ditimpa. GreenPAK dengan fitur MTP, seperti SLG46824 dan SLG46826, memiliki jenis bank memori NVM berbeda yang dapat diprogram lebih dari satu kali.

Kami telah menulis sketsa Arduino yang memungkinkan pengguna untuk memprogram MTP GreenPAK dengan beberapa perintah monitor serial sederhana. Dalam Instruksi ini kami menggunakan SLG46826 sebagai GreenPAK kami dengan MTP.

Kami menyediakan contoh kode untuk Arduino Uno menggunakan platform open-source berbasis C/C++. Desainer harus memperkirakan teknik yang digunakan dalam kode Arduino untuk platform spesifik mereka.

Untuk informasi spesifik mengenai spesifikasi sinyal I2C, pengalamatan I2C, dan ruang memori, silakan merujuk ke Panduan Pemrograman Dalam Sistem GreenPAK yang tersedia di halaman produk SLG46826. Instruksi ini menyediakan implementasi sederhana dari panduan pemrograman ini.

Di bawah ini kami menjelaskan langkah-langkah yang diperlukan untuk memahami bagaimana chip GreenPAK telah diprogram. Namun, jika Anda hanya ingin mendapatkan hasil pemrograman, unduh perangkat lunak GreenPAK untuk melihat File Desain GreenPAK yang sudah selesai. Colokkan GreenPAK Development Kit ke komputer Anda dan tekan program untuk membuat IC khusus.

Langkah 1: Koneksi Arduino-GreenPAK

Koneksi Arduino-GreenPAK
Koneksi Arduino-GreenPAK
Koneksi Arduino-GreenPAK
Koneksi Arduino-GreenPAK

Untuk memprogram NVM GreenPAK SLG46826 kami dengan sketsa Arduino kami, pertama-tama kami harus menghubungkan empat pin Arduino Uno ke GreenPAK kami. Anda dapat menghubungkan pin ini langsung ke Adaptor Soket GreenPAK atau ke papan breakout dengan GreenPAK disolder.

Harap dicatat bahwa resistor pull up I2C eksternal tidak ditunjukkan pada Gambar 1. Harap sambungkan resistor pull up 4,7 kΩ dari SCL dan SDA ke output 3,3 V Arduino.

Langkah 2: Mengekspor Data NVM GreenPAK Dari File Desain GreenPAK

Mengekspor Data NVM GreenPAK Dari File Desain GreenPAK
Mengekspor Data NVM GreenPAK Dari File Desain GreenPAK
Mengekspor Data NVM GreenPAK Dari File Desain GreenPAK
Mengekspor Data NVM GreenPAK Dari File Desain GreenPAK
Mengekspor Data NVM GreenPAK Dari File Desain GreenPAK
Mengekspor Data NVM GreenPAK Dari File Desain GreenPAK

Kami akan menyusun desain GreenPAK yang sangat sederhana untuk mengilustrasikan cara mengekspor data NVM. Desain di bawah ini adalah shifter level sederhana di mana pin biru di sebelah kiri diikat ke VDD (3.3v), sedangkan pin kuning di sebelah kanan diikat ke VDD2 (1.8v).

Untuk mengekspor informasi dari desain ini, Anda perlu memilih File → Export → Export NVM, seperti yang ditunjukkan pada Gambar 3.

Anda kemudian harus memilih Intel HEX Files (*.hex) sebagai jenis file dan menyimpan file tersebut.

Sekarang, Anda harus membuka file.hex dengan editor teks (seperti Notepad++). Untuk mempelajari lebih lanjut tentang format dan sintaks file HEX Intel, lihat halaman Wikipedia-nya. Untuk aplikasi ini kami hanya tertarik pada bagian data dari file seperti yang ditunjukkan pada Gambar 5.

Sorot dan salin 256 byte data konfigurasi NVM yang terletak di dalam file HEX. Setiap baris yang kami salin memiliki panjang 32 karakter, yang setara dengan 16 byte.

Tempelkan informasi ke bagian nvmString yang disorot pada sketsa Arduino seperti yang ditunjukkan pada Gambar 6. Jika Anda menggunakan Mikrokontroler non-Arduino, Anda dapat menulis fungsi untuk mengurai nvmData yang disimpan dalam file GreenPAK. GP6. (Jika Anda membuka file GreenPAK dengan editor teks, Anda akan melihat bahwa kami menyimpan informasi proyek dalam format XML yang mudah diakses.)

Untuk mengatur data EEPROM untuk desain GreenPAK Anda, pilih blok EEPROM dari panel komponen, buka panel propertinya, dan klik "Set Data."

Sekarang Anda dapat mengedit setiap byte di EEPROM satu per satu dengan antarmuka GUI kami.

Setelah data EEPROM Anda disetel, Anda dapat mengekspornya ke file HEX menggunakan metode yang sama yang dijelaskan sebelumnya untuk mengekspor data NVM. Masukkan 256 byte data EEPROM ini ke bagian eepromString dari sketsa Arduino.

Untuk setiap desain khusus, penting untuk memeriksa pengaturan perlindungan di dalam tab "Keamanan" pada pengaturan proyek. Tab ini mengonfigurasi bit perlindungan untuk register konfigurasi matriks, NVM, dan EEPROM. Di bawah konfigurasi tertentu, mengunggah urutan NVM dapat mengunci SLG46824/6 ke konfigurasi saat ini dan menghapus fungsionalitas MTP chip.

Langkah 3: Gunakan Sketsa Arduino

Gunakan Sketsa Arduino
Gunakan Sketsa Arduino

Unggah sketsa ke Arduino Anda dan buka monitor serial dengan baud rate 115200. Sekarang Anda dapat menggunakan perintah MENU sketsa untuk melakukan beberapa perintah:

● Baca - membaca data NVM perangkat atau data EEPROM menggunakan alamat slave yang ditentukan

● Hapus - menghapus data NVM perangkat atau data EEPROM menggunakan alamat slave yang ditentukan

● Tulis - Menghapus lalu menulis data NVM perangkat atau data EEPROM menggunakan alamat slave yang ditentukan. Perintah ini menulis data yang disimpan dalam array nvmString atau eepromString.

● Ping - mengembalikan daftar alamat slave perangkat yang terhubung ke bus I2C

Hasil dari perintah ini akan dicetak ke konsol monitor serial.

Langkah 4: Kiat Pemrograman dan Praktik Terbaik

Selama mendukung SLG46824/6, kami telah mendokumentasikan beberapa kiat pemrograman untuk membantu menghindari kesalahan umum yang terkait dengan penghapusan dan penulisan ke ruang alamat NVM. Subbagian berikut menguraikan topik ini secara lebih rinci.

1. Menjalankan Halaman NVM 16-Byte yang Tepat Menulis:

Saat menulis data ke NVM SLG46824/6, ada tiga teknik yang harus dihindari:

● Halaman menulis dengan kurang dari 16 byte

● Halaman menulis dengan lebih dari 16 byte

● Penulisan halaman yang tidak dimulai pada register pertama dalam sebuah halaman (IE: 0x10, 0x20, dll.)

Jika salah satu teknik di atas digunakan, antarmuka MTP akan mengabaikan penulisan I2C untuk menghindari memuat NVM dengan informasi yang salah. Kami merekomendasikan melakukan pembacaan I2C dari ruang alamat NVM setelah menulis untuk memverifikasi transfer data yang benar.

2. Mentransfer Data NVM ke Register Konfigurasi Matriks

Ketika NVM ditulis, register konfigurasi matriks tidak secara otomatis dimuat ulang dengan data NVM yang baru ditulis. Transfer harus dimulai secara manual dengan memutar PAK VDD atau dengan membuat soft reset menggunakan I2C. Dengan mengatur register di alamat 0xC8, perangkat mengaktifkan kembali urutan Power-On Reset (POR) dan memuat ulang data register dari NVM ke register.

3. Menyetel Ulang Alamat I2C setelah Penghapusan NVM:

Ketika NVM dihapus, alamat NVM yang berisi alamat slave I2C akan diatur ke 0000. Setelah penghapusan, chip akan mempertahankan alamat slave saat ini dalam register konfigurasi hingga perangkat direset seperti dijelaskan di atas. Setelah chip direset, alamat slave I2C harus diatur di alamat 0xCA dalam register konfigurasi setiap kali GreenPAK didaur ulang atau disetel ulang. Ini harus dilakukan sampai halaman alamat budak I2C baru telah ditulis di NVM.

Langkah 5: Diskusi Errata

Diskusi Errata
Diskusi Errata

Saat menulis ke "Page Erase Byte" (Alamat: 0xE3), SLG46824/6 menghasilkan ACK yang tidak sesuai dengan I2C setelah bagian "Data" dari perintah I2C. Perilaku ini dapat ditafsirkan sebagai NACK tergantung pada implementasi master I2C.

Untuk mengakomodasi perilaku ini, kami memodifikasi programmer Arduino dengan mengomentari kode yang ditunjukkan pada Gambar 11. Bagian kode ini memeriksa I2C ACK di akhir setiap perintah I2C dalam fungsi eraseChip(). Fungsi ini digunakan untuk menghapus halaman NVM dan EEPROM. Karena bagian kode ini terletak di loop For, "return -1;" menyebabkan MCU keluar dari fungsi sebelum waktunya.

Meskipun ada NACK, fungsi penghapusan NVM dan EEPROM akan dijalankan dengan benar. Untuk penjelasan terperinci tentang perilaku ini, silakan merujuk ke “Masalah 2: Perilaku ACK yang Tidak Sesuai dengan I2C untuk Byte Penghapusan Halaman NVM dan EEPROM” dalam dokumen errata SLG46824/6 (Revisi XC) di situs web Dialog.

Kesimpulan

Dalam Instruksi ini kami menjelaskan proses penggunaan programmer Arduino yang disediakan untuk mengunggah string NVM dan EEPROM kustom ke IC GreenPAK. Kode dalam Sketsa Arduino benar-benar dikomentari, tetapi jika Anda memiliki pertanyaan tentang sketsa tersebut, silakan hubungi salah satu Teknisi Aplikasi Lapangan kami atau kirimkan pertanyaan Anda di forum kami. Untuk informasi lebih mendalam tentang register dan prosedur pemrograman MTP, silakan merujuk ke Panduan Pemrograman Dalam Sistem Dialog.

Direkomendasikan: