Saya sedang mencari perangkat SRAM kecil, 32KB atau lebih yang dapat dibaca atau ditulis oleh dua MCU (pada dua waktu yang berbeda; saya tidak perlu membaca / menulis secara bersamaan.) Akan lebih baik jika menggunakan antarmuka serial juga.
Masalah yang saya coba selesaikan adalah mengirim data antara dua perangkat tanpa perangkat lain harus berhenti untuk menerima ini. Saya akan mentransfer sampel audio ke buffer, kemudian chip lain, seperti yang diperlukan, akan membaca audio keluar, dan melakukan sesuatu dengannya.
Saya telah menemukan SRAM serial seperti Microchip 23A256 / 23K256, namun, mereka tampaknya memiliki antarmuka serial tunggal. Apakah ada cara untuk memiliki dua chip mengakses ini?
Selain itu, perangkat penerima hanya memiliki memori data 2KB gratis (maksimum) sehingga sepertinya menggunakan DMA atau mekanisme transfer serupa melalui I2C atau antarmuka lainnya tidak akan berfungsi.
Cara termudah adalah dengan mengimplementasikan bus multi-master SPI. Anda bisa menggunakan dua jalur I / O tambahan antara master untuk arbitrasi menggunakan mekanisme jabat tangan.
sumber
Saya melihat dua solusi yang mungkin untuk masalah Anda:
1) Temukan chip FIFO yang sesuai dengan kebutuhan Anda (satu contoh ). Mungkin tidak sederhana / mungkin digunakan karena saya tidak tahu apakah chip FIFO dengan antarmuka sederhana (seperti SPI) ada. FIFO yang saya tahu memiliki antarmuka paralel.
2) Bagikan SRAM yang disebutkan dari Microchip dengan dua master SPI (dalam dua uControllers). Ketika pertama kali digunakan, port SPI di uController lain harus dalam impedansi tinggi dan berlawanan ketika uController kedua akan menggunakan SRAM. Anda akan memerlukan beberapa antarmuka jabat tangan sederhana antara uControllers (seperti membaca permintaan / membaca dilakukan / baris sibuk). Ini dapat diimplementasikan menggunakan 2 atau 3 koneksi searah antara uControllers. Imajinasi Anda adalah batasnya.
sumber
Secara kebetulan, satu pendekatan yang belum disebutkan untuk digunakan dengan memori paralel adalah memiliki dua perangkat atau lebih yang diberi slot waktu tetap untuk mengakses data. Pendekatan ini digunakan di banyak komputer berbasis 6502 yang dibuat oleh Apple, Commodore, dan beberapa vendor lainnya (tidak, menariknya, Atari). Mikroprosesor 6502 yang populer menggunakan clock dua fase, dan selalu melakukan akses memorinya pada paruh kedua setiap siklus (alamat itu tersedia selama paruh pertama, tetapi data akan ditulis pada paruh kedua atau terkunci pada akhir babak kedua). Mesin Apple dan Commodore dengan demikian akan selama paruh pertama dari setiap siklus memori menggunakan alamat yang dihasilkan oleh sirkuit video, mengunci data di akhir setengah; selama paruh kedua setiap siklus mereka akan menggunakan alamat yang dihasilkan oleh CPU,
Pendekatan ini membutuhkan memori yang dua kali lebih cepat daripada yang diperlukan tanpa interleaving memori, dan membutuhkan penambahan driver 3-negara pada output alamat prosesor (output alamat 6502 selalu didorong tinggi atau rendah) tetapi sebaliknya bekerja sangat lancar untuk membuat memori yang sama tersedia untuk prosesor dan ke sirkuit eksternal.
sumber
Ada beberapa cara untuk melakukan apa yang Anda inginkan.
sumber