Tambahkan lebih dari 2 budak SPI

12

Seperti yang saya lihat pada skema, ada 2 saluran untuk budak - CS0 dan CS1. Apakah itu berarti saya hanya dapat menghubungkan 2 chip, seperti MCP3008 atau sesuatu? Atau bisakah saya melampirkan lebih banyak budak ke 2 budak yang terlampir ini.

Apakah skema Raspberry memiliki dukungan atau kesamaan dengan skema koneksi budak SPI ini yang diambil dari Wikipedia? Mungkinkah membuatnya seperti ini?

Budak SPI

Sergei Basharov
sumber
"Apakah mungkin membuatnya seperti ini?" -> Menurut saya persis seperti itu, kecuali Pi memiliki CE0 dan CE1 bukan SS1, SS2, SS3. Jalur bus SCLK, MOSI, dan MISO dibagi di antara semua perangkat dalam kedua kasus.
goldilocks

Jawaban:

12

Banyak jalan.

Anda dapat mengurutkan bit slave yang dipilih, yaitu menghubungkan semua perangkat dengan MISO / MOSI / SCLK yang dibagikan dan melakukan ground tetapi CS terpisah. Cukup setel CS rendah untuk perangkat yang Anda inginkan sebelum memanggil driver SPI. Pengandar SPI akan mencoba untuk mengatur CS tetapi tidak akan tahu itu tidak terhubung.

Pis dengan header ekspansi 40 pin memiliki perangkat SPI lain dengan 3 chip yang dipilih. Perpustakaan pigpio saya mendukung perangkat itu.

Anda dapat menggigit seluruh protokol.

Anda dapat menambahkan perangkat keras tambahan untuk mengalihkan jalur CS ke perangkat apa pun yang Anda inginkan.

Dll, dll.

DIedit UNTUK MENAMBAH

Driver SPI Raspberry Pi Linux yang "tepat" saat ini sedang melalui peninjauan untuk memungkinkan gpios sewenang-wenang untuk digunakan sebagai CS.

Diedit untuk menambah 2

Driver SPI Linux saat ini (spi_bcm2853) dikatakan mendukung GPIO sewenang-wenang sebagai pilihan chip. Lihat / boot / overlay / README.

joan
sumber
1
"memungkinkan gpios sewenang-wenang" ide yang baik dalam dirinya sendiri dan apa yang mungkin diharapkan dari sistem tertanam. Terima kasih atas masukannya.
Ghanima
Joan, tolong jelaskan cara menggunakan "perangkat SPI lain dengan 3 pilihan chip" dengan pustaka "pigpio", atau tautan ke contoh kode. Ini akan membantu menjawab pertanyaan itu. Terima kasih
Alex
Lihat abyz.co.uk/rpi/pigpio/cif.html#spiOpen . GPIO 16-21 terhubung ke SPI tambahan. Lihat abyz.co.uk/rpi/pigpio/index.html#Type_3 . Sebagai alternatif, driver SPI Linux yang sekarang aktif (spi_bcm2853) dikatakan mendukung GPIO sewenang-wenang sebagai pilihan chip. Lihat / boot / overlay / README.
joan
"Pis dengan header ekspansi 40 pin memiliki perangkat SPI lain dengan 3 chip pilihan" hanya ada 2 cs pada header 40 pin
1
@ ah Ada 5 pilihan chip pada header ekspansi 40 pin. Dua untuk SPI utama dan 3 untuk SPI tambahan. Sinyal SPI tambahan ditampilkan dalam huruf kecil di abyz.co.uk/rpi/pigpio/index.html#Type_3
joan
3

Anda benar bahwa RaspberryPi hanya menyediakan dua pilihan chip di bus SPI-nya (lihat di sini ). Dan saya berasumsi bahwa driver SPI dan solusi perangkat lunak bergantung pada fakta itu (walaupun jawaban @ joan menunjukkan bahwa pustaka yang berbeda menanganinya secara berbeda dan driver resmi akan memungkinkan pin GPIO sewenang-wenang untuk digunakan sebagai chip yang dipilih di masa depan).

Namun Anda harus ingat bahwa pemilihan chip tidak lebih dari output digital khusus dari Pi. Oleh karena itu Anda selalu dapat memiliki jumlah chip yang lebih besar jika Anda menggunakan pin GPIO. Namun dalam hal ini perangkat lunak Anda akan bertanggung jawab untuk mengatur pin yang sesuai untuk mengatasi budak SPI yang tepat.

Karena seluruh gagasan pemilihan chip adalah untuk secara eksklusif memilih satu budak saja, Anda selanjutnya dapat menggunakan beberapa sirkuit digital sederhana untuk mengurangi jumlah pin GPIO "terbuang" (jika Anda memerlukannya untuk keperluan lain juga). Sesuatu seperti 74HC / HCT138, decoder / demultiplexer 3-ke-8 baris dapat digunakan untuk mengatasi 8 budak melalui 8 pilihan chip hanya dengan 3 pin GPIO.

Penting untuk diingat bahwa jalur bus SCLK dan MOSI dibagi di antara semua budak. Jadi ketika menghubungkan banyak budak ke Pi pastikan kipas keluar dari Pi tidak terlampaui oleh beban (resistansi dan kapasitansi pin input budak) - meskipun ini kurang menjadi masalah saat ini dengan kapasitansi rendah dan resistensi input digital yang tinggi.

Ghanima
sumber
1

Sebenarnya ada jawaban yang sangat bagus untuk ini oleh seorang insinyur RPi, PhilE, di forum raspberry, lihat 28 Sep 2015 . Pada dasarnya, ia memberikan contoh overlay Device Tree yang menggunakan kemungkinan dengan spi-bcm2835 untuk memiliki GPIO gratis sebagai chip pilih.

Alexander
sumber