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?
Jawaban:
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.
sumber
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.
sumber
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.
sumber