Які частоти SPI підтримує Raspberry Pi?


22

Які частоти SPI підтримує Raspberry Pi?

Додатково:

  • Чи всі вони підтримуються драйвером SPI bootc.net ?
  • Чи є якісь додаткові речі, про які я повинен бути обережними, намагаючись спілкуватися з іншим чіпом через SPI?

Відповіді:


21

Raspberry Pi SPI працює з тактовою частотою APB, що еквівалентно тактовій тактовій частоті 250 МГц. Це можна розділити на будь-яке парне число від 2 до 65536 для бажаної швидкості. Лист даних вказує, що дільник повинен бути силою двох, але це неправильно . Непарні числа округляються вниз, і 0 (або 1) еквівалентно 65536. Отже, дільник менший за 2 неможливий.

Це робить діапазон частот від 3,814 кГц до 125 МГц, з 32768 кроками між ними.

(У цьому питанні було багато дезінформації, але ці результати були перевірені експериментальним шляхом. Будь ласка, поширюйте слово.)


1
Я думаю, що ця відповідь повинна бути вгорі.
Джон Ватт

Ви впевнені в цьому? Гордон стверджує, що, хоча ви можете годувати його будь-яким парним числом, лише сили двох дійсно мають значення: Розуміння SPI на Raspberry Pi | Gordons Projects
scruss

3
Я тестував це за допомогою осцилографа. Я думаю, що проблема Гордона полягає в тому, що він використовує драйвер ядра, який керує тактовою частотою, замість того, щоб безпосередньо командувати процесором, не використовуючи драйвер ядра.
Голий

2
Цей форум-Thread надає додаткову інформацію , щоб довести відповідь Nakedible в: raspberrypi.org/phpBB3 / ...
Nippey

5

SPI можна запустити з базовою тактовою частотою або розділити на більш повільну периферію. Основна тактова частота - 250 МГц. Дільник можна встановити на будь-яку потужність двох - від 2 ^ 0 аж до 2 ^ 16. Це означає, що підтримуються частоти SPI від 3,8 кГц до 250 МГц.

Джерела:


1
Можливо - Farhad отримує з таблиць даних для BCM2835, що є фактичним SoC для RPi, а моє посилання на BCM2708, який є лише частиною SoC. Джерела можуть сходитися ... але потім вони знову не можуть. Тому я думаю, що краще зберегти альтернативні джерела на даний момент.
Марія Зверина

1
О, і область51 описує нас як 1,7 відповіді на запитання, і йдеться про "2,5 відповіді на запитання добре, лише 1 відповідь на питання потребує певної роботи. На здоровому веб-сайті запитання отримують кілька відповідей, а найкраща відповідь проголосується вгорі". :-)
Марія Зверина

1
Неправильна відповідь: 2 ^ 0 не підтримується, і дільник не повинен бути потужністю два.
Голий

1
@Nakedible чи можете ви надати джерело своїх заяв?
Марія Зверина

1
Таблиця bcm2835 підтверджує 2 ^ 0 бала. raspberrypi.org/wp-content/uploads/2012/02 / ... Це підтверджується також визначає в бібліотеці bcm2835. open.com.au/mikem/bcm2835 Що стосується потужності двох дільників, то в ерраті аркуша згадано, що, можливо, кратне 2. elinux.org/BCM2835_datasheet_errata Це також було розміщено на якомусь форумі, що будь-який кратний з 2, здається, працює. Все це також було підтверджено тестуванням виходу SPI на реальне обладнання. Дивіться мою відповідь нижче, яка конкретизує саме це.
Голий

4

На аркуші BCM2835 на сторінці 120 зазначено наступне: Значення регістра тактових частот блоку SPI містить.

BC Clock Divider SCLK = Core Clock / CDIV Якщо для CDIV встановлено значення 0, дільник 65536. Дільник повинен бути потужністю 2. Непарні числа округлені вниз. Максимальна тактова частота SPI - це тактова частота APB.

Я не можу знайти жодної посилання на максимальну частоту шини APB, я думаю, що це частина документації ARM11, а не цей SoC.


1
Дякую за довідку; Я вважаю, що сторінка 156? CDIV, здається, шириною 16b, тому переходить від 1 до 65536. "Основний тактовий годинник", ймовірно, 700 МГц? Тож ми отримаємо діапазон від ~ 10,7 кГц до загадкової межі APB?
akavel

1
Ви дуже раді, але я боюся, що цей годинник не є основним. Це шина APB: "APB призначений для доступу з низькою частотою пропускної здатності, наприклад, інтерфейси реєстрації на системній периферії. Ця шина має адресу та фазу даних, аналогічну AHB, але значно зменшений список сигналів низької складності (наприклад, відсутність всплеску ). Він повинен підтримувати 32-бітові та 66 МГц сигнали. "
FarhadA

4

Я пройшов тестування, як це було показано на http://www.brianhensley.net/2012/07/getting-spi-working-on-raspberry-pi.html і змінив швидкість.

Максимальна швидкість при проходженні тесту - 15 МГц = 15000 кГц: Див. Результат:

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

Тест на 16 МГц не вдався. Андре


1
Шахта працювала нормально при 32 МГц = 32 000 КГц. Я бачив, як тут говорилося, що це і практична межа. Я використовую останню прошивку RPi на жорсткому плаву Raspbian, якщо це має значення.
dodgy_coder

Успішно працює тест RPi 3 на 60 МГц.
Влад
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.