Due Extended SPI usage



kullanım

SPI aygıtları için CS olarak kullanmak istediğiniz her iğneyi belirtmelisiniz.

Nedeniyle SPI veriyolunu paylaşan birden fazla cihaz arasındaki yonga seçimini otomatik olarak işlemek mümkündür. Her cihazın hız ve veri modu gibi farklı özellikleri de olabilir.

Farklı CS pinlerine sahip birden fazla cihaz kullanıyorsanız, bu pinleri kurulumda () belirtmeniz gerekir. Aşağıdaki örnekte, SPI MISO, MOSI ve SCK pinlerini paylaşan iki cihaz vardır. Bir cihaz CS pim 4'e, diğeri pim 10'a eklenir.

void setup ( ) {
// pim 4'teki bir cihaz için veri yolunu başlatma
SPI. başlar ( 4 ) ;
// pin 10'daki bir cihaz için veri yolunu başlatma
SPI. başlar ( 10 ) ;
}

Bir PIN CS raptiyesi olarak bildirildikten sonra, varsayılan davranışlarını da değiştirmek mümkündür. Örneğin, cihazlar farklı saat hızlarında çalışıyorsa, setup () şu şekilde görünebilir:

void setup ( ) {
// pim 4'teki cihaz için veri yolunu başlat
SPI. başlar ( 4 ) ;
// Pim 4 ila 21'de saat ayırıcıyı ayarlayın
SPI. setClockDivider ( 4 , 21 ) ;
// pin 10'daki cihaz için veri yolunu başlat
SPI. başlar ( 10 ) ;
// Pim 10'dan 84'e saat ayırıcıyı ayarla
SPI. setClockDivider ( 10 , 84 ) ;
}

Pin 4'teki bir cihaza tek bir bayt transferi şu şekilde görünebilir:

void loop ( ) {
bayt yanıtı = SPI. transfer ( 4 , 0xFF ) ;
}
Yukarıda, pin 4'teki SPI aygıtına “0xFF” gönderilir ve MISO'dan gelen veriler değişken yanıtın içine kaydedilir. Yonga seçimi SPI denetleyicisi tarafından otomatik olarak gerçekleştirilir, transfer komutu aşağıdakileri ima eder:

  • 4. pimi DÜŞÜK olarak ayarlayarak cihazı seçin
  • SPI veri yolu üzerinden 0xFF gönderin ve alınan baytı döndürün
  • 4. pimi YÜKSEK değerine ayarlayarak cihazın seçimini kaldırın

Aktarma komutuna aktarımdan sonra SPI cihazının seçimini kaldırmamasını söyleyerek bir işlemde birden fazla bayt göndermek mümkündür:

void loop ( ) {
// pin 10'daki cihaza 0x0F aktarın, çipi seçili tutun
SPI. transfer ( 10 , 0xF0 , SPI_CONTINUE ) ;
// pin 10'daki cihaza 0x00 aktarın, çipi seçili tutun
SPI. transfer ( 10 , 0 × 00 , SPI_CONTINUE ) ;
// 0x00'ü pim 10'daki cihaza aktarın, yanıt1'de alınan bayt saklayın, çipi seçili tutun
bayt yanıtı1 = SPI. transfer ( 10 , 0 × 00 , SPI_CONTINUE ) ;
// pin 10'daki cihaza 0x00 aktarın, yanıt2'de alınan bayt saklayın, çipin seçimini kaldırın
bayt yanıtı2 = SPI. transfer ( 10 , 0 × 00 ) ;
}
SPI_CONTINUE parametresi, yonga seçiminin aktarımlar arasında etkin kalmasını sağlar. Son aktarımda SPI_CONTINUE aktarılan son bayt olduğu için belirtilmedi.

Genişletilmiş yöntemleri kullanırken doğru sözdizimi için setClockDivider (), setDataMode (), transfer (), setBitOrder () için ayrı referans sayfalarına bakın.

Not: SPI.begin () çağrıldığında, bildirilen pim genel amaçlı bir G / Ç pini olarak kullanılamaz