Dapatkah pin SS terikat rendah jika hanya satu perangkat SPI yang digunakan?

8

Saya membaca secara online bahwa untuk memulai transaksi SPI ke perangkat yang didukung SPI, garis SS (slave select, alias chip select) harus diset ke rendah untuk seluruh transaksi kemudian dibawa tinggi di ujung ke ujung transaksi. Jika saya membuat sirkuit yang hanya berisi satu perangkat SPI, apakah saya perlu menurunkan perintah kirim SS line lalu menaikkan ss line setiap kali atau bisakah saya mengikat ss line rendah dan mengirim perintah tanpa batas? Perangkat yang saya gunakan adalah chip suara ISD1700 .

Nick Alexeev
sumber
3
Secara umum ya, pin SS memungkinkan perangkat budak tahu kapan transaksi dimulai dan berakhir. Tanpanya tidak ada yang bisa memastikannya tetap sinkron. Mungkin berhasil, tetapi jika tidak sinkron, itu tidak akan mendapatkannya kembali.
Kevin White
4
@kevinWhite sebenarnya banyak perangkat SPI membutuhkan transisi SS untuk memulai mesin keadaan internal. Lembar data untuk perangkat khusus Anda seharusnya memberi Anda jawabannya, tetapi jika Anda sudah mendapatkannya, mengapa tidak mencobanya?
akohlsmith
1
@ Akohlsmith - Saya setuju, saya mengatakan bahwa Anda TIDAK perlu SS bukan bahwa Anda dapat pergi tanpa itu. Bahkan perangkat yang tidak memerlukannya untuk melakukan operasi internal dapat keluar dari sinkronisasi dengan master. Satu-satunya pabrikan yang telah melihat bahwa merekomendasikan untuk tidak menggunakan SS adalah Perangkat Analog untuk beberapa perangkat mereka di mana mereka memiliki beberapa fungsi yang ditetapkan untuk pin sehingga SS mungkin tidak tersedia. Saya tidak melihat bagaimana itu bisa diandalkan dan saya telah mendengar keluhan di mana perangkat memerlukan reset untuk membawa kembali ke sinkronisasi.
Kevin White
Saya setuju dengan @akohlsmith. Dan jika Anda ingin menjawab pertanyaan saya akan memilih. Inilah argumen saya: Saya berkomunikasi secara berkala dengan perangkat melalui SPI. Tapi, ada fitur interrupt driven yang juga membutuhkan SPI untuk perangkat yang sama. Menggunakan pin SS saya harus dapat mengganggu transaksi SPI saat ini tanpa menyelesaikannya. Memberi saya akses ke perangkat SPI lebih cepat saat melayani interupsi.
st2000

Jawaban:

14

[@Kevin dan @akohlsmith harus memposting komentar mereka sebagai jawaban.
Ini untuk memperluas komentar mereka. ]

SPI 1 tidak menentukan perilaku persis SS (slave select line 2 ). Perilaku ini tergantung pada implementasi setiap perangkat individu. Saya telah melihat perangkat yang dapat beroperasi dengan SS yang ditetapkan secara permanen. Saya juga melihat perangkat yang membutuhkan ujung jatuh dan naik pada SS.

Meskipun tidak mengatakan secara eksplisit bahwa SS harus diaktifkan,
panduan desain (hal.31) mengatakan bahwa SS memulai dan mengakhiri transaksi SPI. Akan lebih bijaksana untuk mengasumsikan bahwa SS harus diaktifkan untuk transaksi SPI.

1 SPI lebih merupakan kebiasaan, bukan standar.
2 CS (pilih chip) adalah nama lain untuk pilih budak.

Nick Alexeev
sumber
6
Ini jawaban yang sangat bagus. Banyak / Sebagian besar perangkat target SPI sepenuhnya tergantung pada baris SPI_CS untuk menginisialisasi mesin status pengambilan internal ke bagian untuk menyinkronkan antara perangkat inisiator dan perangkat target. Ada beberapa perangkat yang dapat melakukan sinkronisasi ulang hanya dengan mengenali patters sync atau opcode on-the-fly pada jalur sinyal MOSI. Tetapi ini adalah minoritas dan siapa pun yang merancang sistem menggunakan perangkat SPI disarankan untuk menyediakan SPI_CS untuk setiap perangkat target bahkan jika itu berarti menggunakan sirkuit ekstra dan / atau GPIO dengan perangkat inisiator untuk menyediakan kemampuan itu.
Michael Karas
Tidak perlu menambahkan jawaban lain, jawaban Anda menangkap apa yang saya dan @ kevinwhite katakan. :-)
akohlsmith
5

Itu sepenuhnya tergantung pada perangkat budak.

Jika protokol untuk perangkat slave mencakup beberapa jenis pembingkaian, apakah itu dengan paket-paket dengan panjang tetap, byte start / stop atau header yang menentukan panjang paket, maka perangkat slave mungkin dapat beroperasi tanpa pemilihan chip. Saya memiliki chip memori flash SPI di papan tulis yang saat ini saya kerjakan yang tampaknya sangat senang dengan atau tanpa chip yang dipilih. Ini dapat ditransfer secara permanen ke 0V (diaktifkan) tanpa masalah.

Ini sebenarnya menyebabkan kami mengalami beberapa masalah, karena kontraktor telah mengatur beberapa I / O tingkat rendah termasuk SPI, dan kami (dan mereka!) Tidak menyadari bahwa mereka tidak dapat memilih chip yang berfungsi. Tidak sampai saya harus memperpanjang kerja SPI mereka untuk menambahkan perangkat SPI lain di bus yang sama yang saya temukan kami tidak benar-benar memiliki pilihan chip!

Sebaliknya, banyak perangkat slave yang membutuhkan chip untuk membingkai data, dan mengirimkan lebih banyak bit / byte dari paket yang diharapkan tanpa melepaskan chip yang dipilih pada akhirnya akan dianggap sebagai transfer yang tidak valid dan ditolak. DAC akan sering memuat nilai baru ke output pada chip yang naik pilih. ADC serupa juga akan sering menggunakan transfer SPI untuk memulai (dan kadang-kadang waktu) konversi, sehingga mereka membutuhkan chip pilih jatuh-tepi sebagai pemicu mereka.

Lembar data Anda sebenarnya tidak mengatakan apa-apa tentang cara mengarahkan chip khusus Anda ke SPI, dan saya tidak cukup termotivasi untuk melakukannya. Latihan tersisa untuk pembaca ...;)

Graham
sumber
Saya hanya akan mengikat SS rendah dan berdoa itu bekerja karena datasheet untuk perangkat yang saya dapatkan dari internet hanya menyatakan bahwa (menurut tabel definisi pin dalam datasheet) SS digunakan untuk mengaktifkan perangkat. Ini juga menyatakan bahwa jika SS tinggi, maka garis SPI lainnya akan dalam keadaan impedansi tinggi. semoga saja.
@ Mike Saya menemukan beberapa motivasi pagi ini, jadi saya mencari di Google "ISD1700". Dua tautan pertama adalah dua file PDF. Yang pertama adalah lembar data yang Anda tautkan; dan yang kedua adalah panduan desain yang mengatakan persis bagaimana cara menggerakkan chip. Panduan desain mengatakan (bagian 10.2, halaman 31): "Transaksi SPI dimulai pada ujung jatuh dari SS ~ pin." Jadi tidak, datasheet mengatakan Anda tidak bisa lolos dengan apa yang Anda rencanakan. Dan saya tidak ingin terlalu sombong di sini, tetapi jika Anda memiliki JFGI dan membaca dua tautan teratas yang muncul, Anda bisa menjawab pertanyaan Anda sendiri.
Graham
3

Tanpa mengetahui sesuatu yang spesifik tentang perangkat slave SPI, tidak, Anda tidak bisa hanya mengikat SS rendah.

Banyak perangkat menggunakan tepi terdepan SS untuk mereset logika internal mereka ke awal transaksi baru. Sebagai contoh, memori mungkin menafsirkan dua byte pertama sebagai alamat, kemudian byte berikutnya sebagai data. Beberapa ingatan tidak melakukan penulisan fisik sampai SS dinyatakan kembali.

Untuk beberapa perangkat dengan protokol yang tepat, Anda mungkin bisa lolos begitu saja. Namun, itu tidak akan berfungsi dengan sebagian besar perangkat di luar sana.

Olin Lathrop
sumber
Beberapa tahun terlambat untuk yang satu ini. Dan saya di sini karena saya juga mencari jawaban. Informasi yang sangat bagus bahwa Anda menambahkan Olin, dan informasi yang baik dari orang lain juga. Saya pikir masalahnya terutama dengan interpretasi dari kata 'chip select' atau 'slave select' - yang jika seseorang dipaksa untuk mengasumsikan sesuatu, maka anggapannya hanya berarti mengaktifkan perangkat itu dan mematikan semua perangkat budak lain yang mungkin sebaliknya mengganggu komunikasi antara slave dan master. 'Asumsi' yang adil dan logis. Sangat menyenangkan bahwa topik ini dihapus di sini di utas ini.
Kenny
Pertanyaan berikut lain dari topik ini bisa ----- jika pin select / chip enable pin tidak boleh 'diaktifkan' secara permanen, lalu kapan tepatnya perangkat spi slave diaktifkan dan dinonaktifkan? Sebagai contoh - apakah kita menonaktifkan perangkat slave setelah penyelesaian setiap perintah yang dikirim ke slave?
Kenny