Saran memori untuk MSP430

9

Saya sedang mengembangkan aplikasi pengukuran dengan TI MSP430 dan saya ingin mendengar beberapa saran tentang jenis memori apa yang dapat saya gunakan.

Idenya adalah menggunakannya untuk mencatat selama waktu tertentu dan kemudian mengunduh data ke PC ketika perangkat terhubung melalui USB. Perkiraannya adalah untuk menyimpan hingga 5MB data, setiap sampel sekitar 25 byte data.

Akankah chip EEPROM sederhana dilakukan atau ada sesuatu yang lebih baik di luar sana?

Padu Merloti
sumber
1
Sepertinya Anda akan memiliki daya perangkat sebagian besar waktu Anda memiliki data yang valid. Bukankah SRAM cadangan baterai lebih tepat daripada EEPROM (atau lebih baik, Flash)?
Federico Russo

Jawaban:

7

Saya telah menggunakan seri AT45D chip flash serial. Mereka memiliki buffer SRAM internal untuk mengatur halaman untuk dihapus / pemrograman. Antarmuka SPI untuk membaca data masuk dan keluar.

Robert
sumber
5

5MByte adalah banyak data untuk disimpan. Membacanya melalui USB menyiratkan bahwa Anda menggunakan salah satu bagian baru dengan antarmuka perangkat USB bawaan. Jika tidak, Anda akan menggunakan konverter USB ke serial (FTDI atau serupa) dan akan terbatas pada serial async. kecepatan data untuk membaca data.

Sudahkah Anda mempertimbangkan untuk menghubungkan kartu memori SD ke MSP, menyimpan data di dalamnya dan kemudian memindahkan kartu ke pc untuk membaca data yang disimpan. Saya belum menulis antarmuka ke perangkat ini tetapi ada banyak yang punya.

kamu
sumber
Ya, saya akan menggunakan salah satu bagian dengan USB tertanam. Idealnya adalah menggunakan protokol MSC, tetapi itu menambah banyak kerumitan pada proyek saya. Saya mungkin akan puas dengan kecepatan transfer data HID. Saya berpikir tentang kartu SD tetapi itu menambahkan kompleksitas ekstra pada penutup karena harus tahan percikan air.
Padu Merloti
2
Saya menyarankan rute ini, karena kartu SD akan memberi Anda ruang penyimpanan paling banyak. Anda mengatakan 5MB sekarang, tetapi jika Anda menginginkannya nanti, Anda mendorong batas flash serial (Dan Anda jauh di atas batas EEPROM). Jika waterproofing adalah masalah (dan Anda memiliki opsi USB yang sesuai, yang tampaknya merupakan kasus) Anda dapat membaca kartu SD Anda melalui USB, dan memasukkannya ke dalam selungkup secara permanen. Saya telah melihat beberapa desain yang menyolder kartu SD ke papan (Catatan: Ini berhasil, tapi saya tidak merekomendasikannya).
Kevin Vermeer
Mengerti, masuk akal. Saya akan mempertimbangkan opsi itu. Terima kasih
Padu Merloti
Apakah ada chip khusus yang menangani antarmuka SD dan mengimplementasikan sistem file atau apakah saya masih harus mengimplementasikan sistem file dan kelas MSC menggunakan MSP430?
Padu Merloti
@Padu - Saya merasa ini membutuhkan lebih banyak ruang dan pemformatan daripada komentar, jadi saya menambahkan jawaban saya sebagai jawaban.
Kevin Vermeer
3

Serial flash lebih unggul daripada EEPROM dalam aplikasi ini. Atmel membuat barisan yang bagus . Pilihan Anda akan sangat tergantung pada dua hal: (1) Kebutuhan Anda untuk mengedit / sektor log Anda pada mikro dan (2) Ketersediaan RAM Anda pada MSP430.

Flash, tidak seperti EEPROM, hanya dapat ditulis dari 1 ke 0. 0. Mengubah data dari 0 ke 1 mengharuskan menghapus bagian dari bagian tersebut, yang biasanya hanya tersedia untuk halaman atau blok data. Anda harus menyangga halaman ini ke dalam RAM, menghapus halaman, mengedit di RAM, dan kemudian menulisnya kembali jika Anda ingin mengubah sesuatu.

Seri AT45D, seperti yang telah ditunjukkan, menawarkan sejumlah bagian yang memiliki buffer RAM pada chip untuk memfasilitasi proses ini tanpa menggunakan RAM pada mikrokontroler.

Pada akhirnya, seluruh seri ini kompatibel dengan pin, jadi cukup letakkan footprint 8-SOIC (150mil), dan kemudian Anda dapat menukar bagian-bagiannya jika Anda membutuhkan opsi yang berbeda nanti.

Kevin Vermeer
sumber
Saya setuju dengan apa yang Anda katakan, tetapi Anda bisa menyalin data dari halaman flash sumber ke halaman flash tujuan sambil memodifikasi byte yang ingin Anda ubah sebelum menghapus sumber.
mjh2007
@ mjh - Bagaimana jika sumber dan tujuan Anda sama, dan / atau Anda tidak memiliki halaman gratis? Ini juga lambat: kirim perintah baca, kirim alamat, baca byte, ubah jika perlu, hapus, kirim perintah tulis, kirim alamat, tulis byte, ulangi x256, x512, atau x4k. Pilihan Anda yang lain adalah mengirim perintah baca, mengirim alamat baca, jam untuk siklus N, memodifikasi byte yang ingin Anda ubah, menghapus, mengirim perintah tulis, mengirim alamat tulis, jam untuk siklus N. Ini membutuhkan sekitar 1/3 waktu yang dibutuhkan oleh buffer RAM.
Kevin Vermeer
Mengapa data logger perlu mengedit log pada mikro?
davidcary
@davidcary - Jika data logger Anda hanya merekam satu aliran panjang byte, Anda benar - Anda tidak perlu melakukan perubahan. Jika memiliki beberapa konfigurasi atau file log yang mungkin menembus batas halaman / blok, atau jika Anda ingin membuat perubahan pada header pada file di akhir, Anda harus mengedit memori tanpa menghapus data yang ada.
Kevin Vermeer
Pada titik ini, saya hanya perlu membuat beberapa file log, tidak perlu memodifikasinya, kecuali ketika pengguna menghubungkan perangkat ke USB dan mengunduhnya, maka saya perlu menghapus (atau membuat ruang itu tersedia lagi) log lama.
Padu Merloti
2

Saya akan menyarankan seri AT25D karena tampaknya sedikit lebih mudah digunakan daripada AT45D. Meskipun sedikit lebih lambat dan tidak menawarkan banyak opsi transfer data atau buffer SRAM. Memang memiliki keuntungan karena lebih murah dan masih cukup cepat untuk sebagian besar aplikasi seperti pencatatan data.

Jika Anda membutuhkan data 5MB, kecil kemungkinan EEPROM akan berfungsi karena mereka datang dalam paket <1Mbit. Chip flash dari Atmel mendukung hingga 64-mbit atau 8MB.

mjh2007
sumber
1
Saya tidak setuju. Bagian terkecil yang dapat dihapus pada AT25D adalah halaman 4kB, dan beberapa mikron memiliki banyak RAM cadangan yang tersedia. Saya telah menggunakan seri chip AT25FS, yang memiliki halaman kecil (256 byte) hapus, tetapi mereka kurang dari 5MB. Pergi dengan sistem buffered berarti Anda tidak perlu terlalu khawatir tentang manajemen RAM. Tentu saja, jika Anda tidak perlu mengedit log, maka seri AT25 akan berfungsi dengan baik.
Kevin Vermeer
Ya, halaman hapus yang besar mengganggu ketika aplikasi perlu menulis beberapa byte, dan kemudian mengubah byte itu. Tapi mengapa data logger perlu melakukan itu? Menurut saya, untuk aplikasi aplikasi pencatatan data, tidak ada bedanya jika bagian terkecil yang dapat dihapus adalah 256 byte atau 1 Megabyte.
davidcary
1

[Ini sebagai tanggapan terhadap komentar setelah jawaban Ian].
Kartu SD hanyalah perangkat SPI, jadi tidak ada chip / antarmuka yang diperlukan. Protokol lain termasuk antarmuka 2-kawat (seperti I2C) dan antarmuka 4-kawat (dengan CRC kompleks), tetapi SPI adalah yang paling umum digunakan.

Ada catatan aplikasi kartu SD yang tersedia untuk MSP430 dari TI di sini . Ini singkat, tetapi termasuk kode sampel. Ini menangani membaca dan menulis ke berbagai sektor pada kartu SD, yang mungkin semua yang Anda inginkan jika Anda tidak akan menancapkannya ke PC. Lihat juga implementasi ini oleh Foust (disarankan) atau Evans dari MSU.

Setelah Anda memiliki fungsi dasar untuk membaca dan menulis suatu sektor, Anda dapat abstrak sistem file yang sederhana dan tersuai melalui USB, atau menggunakan pustaka sistem file yang ada. FatFS , EFSL , atau DOSFs semua opsi untuk yang terakhir. Jika menerapkan semua fungsi yang diperlukan tampaknya terlalu sulit, ingat bahwa semua kecuali beberapa dapat / akan bertopik.

Namun, sistem file akan diabstraksi melalui antarmuka USB Anda ke tingkat tertentu. Ini akan lebih mudah jika Anda memiliki pustaka sistem file yang nyata dan kartu Anda berada dalam sistem file yang dapat dibaca, tetapi itu tetap bekerja. Jika Anda ingin menulis "Filesystem" Anda sendiri dan menghemat kerja / waktu / memori untuk implementasi USB, Anda dapat membuat definisinya sesederhana dan tidak fleksibel seperti log 1 mulai dari 0x0, log 2 mulai dari 0x10 0000, log 3 di 0x20 0000 , dan log 4 pada 0x30 0000. Kemudian, Anda dapat mengirim data ini melalui USB.

Antarmuka USB bisa serumit yang Anda inginkan - dari antarmuka serial ke perangkat penyimpanan massal.

Kevin Vermeer
sumber