Raspberry Pi hangi SPI frekanslarını destekliyor?


22

Raspberry Pi hangi SPI frekanslarını destekliyor?

Bunlara ek olarak:

  • Hepsi bootc.net SPI sürücüsü tarafından destekleniyor mu?
  • SPI üzerinden başka bir çip ile iletişim kurmaya çalışırken dikkat etmem gereken herhangi bir ek şey var mı?

Yanıtlar:


21

Raspberry Pi SPI, 250 MHz çekirdek saat hızına eşdeğer olan APB saat hızında çalışıyor. Bu , istenen hız için 2 ila 65536 arasında herhangi bir çift sayıya bölünebilir . Veri sayfası bölenin iki gücünün olması gerektiğini belirtir, ancak bu yanlış . Tek sayılar yuvarlanır ve 0 (veya 1) 65536'ya eşittir. Bu nedenle 2'den küçük bir bölen imkansızdır.

Bu, frekans aralığını 32768 adımda olacak şekilde, 3.814 kHz - 125 MHz arasında yapar.

(Bu konuda çok fazla yanlış bilgi var, ancak bu sonuçlar deneyle doğrulandı. Lütfen sözcüğü yayınlayın.)


1
Bence bu cevap en tepede olmalı.
Jon Watte

Bundan emin misin? Gordon, herhangi bir sayıyı besleyebilmenize rağmen, yalnızca ikisinin güçlerinin gerçekten bir fark yaratacağını iddia ediyor: Ahududu Pi | Gordons Projeleri
scruss

3
Bunu bir osiloskopla test ettim. Gordon ile ilgili sorun, çekirdeği kullanmadan işlemciye doğrudan komut vermek yerine, saat hızını ayarlayan çekirdek sürücüsünü kullanmasıdır.
Nakedible

2
Bu Forum Başlığı Nakedible'ın cevabını kanıtlamak için daha fazla bilgi sağlar: raspberrypi.org/phpBB3/…
Nippey

5

SPI çekirdek saat hızında çalıştırılabilir veya daha yavaş çevre birimleri için ayrılabilir. Çekirdek saat 250 MHz. Bölücü, 2 ^ 0 ile 2 ^ 16 arasındaki tüm güçlere ayarlanabilir. Bu, 3,8 kHz - 250 MHz arasındaki SPI frekanslarının desteklendiği anlamına gelir.

Kaynaklar:


1
Belki - Farhad, RPI için gerçek SoC olan BCM2835 için veri sayfalarından kaynaklanırken, referansım SoC'nin sadece bir parçası olan BCM2708 için. Kaynaklar birleşebilir ... ama sonra yine olmayabilir. Bu yüzden şimdilik alternatif kaynakları korumanın daha iyi olacağını düşünüyorum.
Maria Zverina

1
Oh ve alan51 bizi soru başına 1.7 cevap olarak listeliyor ve “soru başına 2.5 cevap iyi, soru başına sadece 1 cevap biraz çalışma gerektiriyor. :-)
Maria Zverina

1
Yanlış cevap: 2 ^ 0 desteklenmiyor ve bölücünün iki güç olması gerekmez.
Nakedible

1
@Nakedible ifadeleriniz için kaynak sağlayabilir misiniz?
Maria Zverina

1
Bcm2835 veri sayfası 2 ^ 0 noktasını onaylar. raspberrypi.org/wp-content/uploads/2012/02/… Bu, bcm2835 kütüphanesindeki tanımlarla da doğrulanır. open.com.au/mikem/bcm2835 İki bölenin gücüne gelmediğinde , veri sayfası yanlış yazılmış , muhtemelen 2 taneden fazlasının demek olduğunu belirtiyor. elinux.org/BCM2835_datasheet_errata Bu, aynı zamanda forumda, 2’nin birden çoğunun çalıştığı gibi görünüyordu. Tüm bunlar, SPI çıkışını gerçek donanım üzerinde test ederek de doğrulanmıştır . Bunu tam olarak belirten cevabımı aşağıya bakın.
Nakedible

4

BCM2835 ait veri sayfası sayfa 120 şöyle diyor: SPI bloğunun saat kaydının değeri içerir.

BC Saat Bölücü SCLK = Çekirdek Saat / CDIV CDIV 0 olarak ayarlanmışsa, bölen 65536'dır. Bölenin gücü 2 olmalıdır. Tek sayıların yuvarlanması gerekir. Maksimum SPI saat hızı APB saatindir.

APB veriyolunun maksimum frekansının ne olduğuna dair hiçbir referans bulamıyorum, bunun ARM11 belgelerinin bir parçası olduğunu düşünüyorum, bu SoC değil.


1
Referans için teşekkürler; Sayfanın 156 olduğuna inanıyorum? CDIV 16b genişliğinde gözüküyor, yani 1'den 65536'ya gidiyor. "Çekirdek saat" muhtemelen 700MHz mi? Öyleyse ~ 10.7kHz'den gizemli APB sınırına kadar çeşitlilik kazanabilir miyiz?
akavel

1
Çok rica ederim, ama korkarım bu saat çekirdek saat değil. Bu APB veri yolu: "APB, düşük bant genişliği kontrolü erişimi, örneğin sistem çevre birimlerindeki kayıt arabirimleri için tasarlanmıştır. 32bit ve 66MHz sinyalleri desteklemesi gerekiyor. "
FarhadA

4

Http://www.brianhensley.net/2012/07/getting-spi-working-on-raspberry-pi.html adresinde görüldüğü gibi test ettim ve hızı değiştirdim.

Test geçtiğinde maksimum hız 15MHz = 15000KHz'dir: Sonuca bakın:

spi mode: 0
bits per word: 8
max speed: 15000000 Hz (15000 KHz)

FF FF FF FF FF FF
40 00 00 00 00 95
FF FF FF FF FF FF
FF FF FF FF FF FF
FF FF FF FF FF FF
DE AD BE EF BA AD
F0 0D

16MHz'de test başarısız oldu. André


1
Maden 32MHz = 32,000KHz'de tamam. Ben söz gördüğüm burada bu pratik limiti de olduğunu. Bu fark yaratırsa, en son RPI sabit yazılımını Raspbian sabit diskinde çalıştırıyorum.
dodgy_coder

Bu testi 60 MHz'de başarıyla çalıştıran RPi 3'e sahip olmak.
Vlad,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.