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 .
8
Jawaban:
[@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.
sumber
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 ...;)
sumber
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.
sumber