ІМ’Я
hm2_rpspi – цей драйвер було замінено драйвером hm2_spix. Драйвер LinuxCNC HAL для плат вводу-виводу Mesa Electronics SPI Anything з прошивкою HostMot2.
СИНТАКСИС
loadrt hm2_rpspi
- config [за замовчуванням: ""]
-
Рядки конфігурації HostMot2, описані на сторінці довідки hostmot2(9).
- spiclk_rate [за замовчуванням: 31250]
-
Вкажіть тактову частоту SPI в кГц. Див. ЧАСТОТИ SPI нижче.
- spiclk_rate_rd [за замовчуванням: -1 (те саме, що й spiclk_rate)]
-
Вкажіть частоту зчитування SPI в кГц. Зазвичай зчитування та запис виконуються з однаковою швидкістю. Однак, можливо, вам доведеться зменшити швидкість зчитування, якщо час обміну даними занадто довгий (див. ЧАСТОТИ SPI нижче).
- spiclk_base [за замовчуванням: 400000000]
-
Це резервне значення для розрахунку дільника тактової частоти SPI. Зазвичай базова частота зчитується з /sys/kernel/debug/clk/vpu/clk_rate і використовується в розрахунку дільника (для Rpi3 вона повинна становити 250 МГц). spiclk_base використовується тільки як резервне значення, якщо система не може бути прочитана. Зазвичай безпечно (і рекомендується) залишити цей параметр без змін.
Ви повинні встановити його вручну на 250000000, якщо ваша система не надає доступ до налаштувань тактової частоти ядра. В іншому випадку частота тактового генератора SPI буде становити лише 62,5% від запитуваного значення. - spi_pull_miso [за замовчуванням: 1 (pull-down)]
- spi_pull_mosi [за замовчуванням: 1 (pull-down)]
- spi_pull_sclk [за замовчуванням: 1 (pull-down)]
-
Увімкнення або вимкнення підтягування/опускання на лініях SPI. Значення 0 вимикає будь-яке підтягування/опускання на виводі. Значення 1 означає опускання, а 2 — підтягування. Лінії увімкнення мікросхеми завжди мають увімкнене підтягування.
- spi_probe [за замовчуванням: 1]
-
Перевірити порт SPI та лінії CE для карти. Це бітове поле, що вказує, які комбінації SPI та CE слід перевірити:
-
1 = SPI0/CE0,
-
2 = SPI0/CE1,
-
4 = SPI1/CE0,
-
8 = SPI1/CE1,
-
16 = SPI1/CE2.
-
Зондування виконується точно у вищезазначеному порядку. Будь-які знайдені плати будуть пронумеровані від 0 до 4 у порядку знаходження. Див. також КОНФІГУРАЦІЯ ІНТЕРФЕЙСУ нижче.
Якщо зонд виходить з ладу, це вважається помилкою, і драйвер перериває роботу. Периферійні пристрої SPI0/SPI1 розташовані на контактах GPIO (номери контактів 40-контактного роз’єму вводу/виводу вказані в дужках): - SPI0: MOSI=10(19), MISO=9(21), SCLK=11(23), CE0=8(24), CE1=7(26) - SPI1: MOSI=20(38), MISO=19(35), SCLK=21(40), CE0=18(12), CE1=17(11), CE2=16(36)
- spi_debug [за замовчуванням: -1]
-
Встановити рівень повідомлень для запущеного процесу. Рівень повідомлень встановлюється, якщо spi_debug має позитивне значення від 0 до 5, де 0 означає відсутність повідомлень, а 5 — всі повідомлення. Значення -1 не впливає на поточний рівень повідомлень.
Застереження Емптора: Зміна рівня повідомлень стосується всього процесу, і всі модулі всередині процесу видаватимуть повідомлення на запитуваному рівні. Це може призвести до певного безладу у вашому терміналі.
ОПИС
hm2_rpspi — це драйвер пристрою для Raspberry Pi 2/3, який з’єднує плати Anything I/O на базі SPI від Mesa (з прошивкою HostMot2) з LinuxCNC HAL. Цей драйвер базується не на драйвері linux spidev, а на спеціальному драйвері BCM2835-SPI.
The kernel’s spi_bcm2835 driver conflicts with this user-space driver and must be disabled before hm2_rpspi will load. Use raspi-config (Interface Options → SPI → Disable) and reboot. If the kernel module is still present at load time the driver will refuse to start with "Kernel SPI driver spi_bcm2835 is loaded and conflicts" rather than fight the kernel for the bus. Having both kernel and user-space SPI drivers installed otherwise leads to unexpected interactions and system instabilities.
Підтримувані плати: 7I90HD.
На плату має бути завантажено сумісну прошивку (наприклад, 7i90_spi_svst4_8.bit) програмою mesaflash(1).
hm2_rpspi доступний лише тоді, коли LinuxCNC налаштовано з режимом реального часу "uspace". Він працює з Raspian та ядром PREEMPT_RT.
КОНФІГУРАЦІЯ ІНТЕРФЕЙСУ
Підтримується до п’яти пристроїв (плат 7i90). Два на SPI0 і три на SPI1. Рекомендується використовувати не більше двох пристроїв, кожен з яких підключається до окремого порту SPI. Ви можете вибрати лінії CE, які вам більше подобаються або підходять для вашої конструкції, і налаштувати параметр spi_probe, щоб вказати драйверу, де шукати плати.
ПРОДУКТИВНІСТЬ ДРАЙВЕРА BCM2835-SPI В РЕАЛЬНОМУ ЧАСІ
TBD.
Тактові частоти SPI
Максимальна тактова частота SPI драйвера BCM2835-SPI і 7i90 задокументована на рівні понад 32 МГц. Драйвер SPI може забезпечувати частоти, що значно перевищують допустимі для 7i90. Безпечним значенням для початку буде 12,5 МГц (spiclk_rate=12500), а потім можна поступово збільшувати частоту.
Драйвер SPI генерує (дуже) дискретні значення тактової частоти, особливо в діапазоні МГц, завдяки простій структурі дільника тактової частоти. Базова частота становить 250 МГц, а дільник для SPI0/SPI1 масштабується за допомогою дискретних коефіцієнтів. У наступному списку вказано налаштування spiclk_rate та дискретну тактову частоту SPI (250 МГц / (2n) для n > 1):
Дільник |
spiclk_rate (kHz) |
фактична частота |
2 |
62500 |
62.500 MHz |
3 |
41667 |
41.667 MHz |
4 |
31250 |
31.250 MHz |
5 |
25000 |
25.000 MHz |
6 |
20834 |
20.833 MHz |
7 |
17858 |
17.857 MHz |
8 |
15625 |
15.625 MHz |
9 |
13889 |
13.889 MHz |
10 |
12500 |
12.500 MHz |
11 |
11364 |
11.364 MHz |
12 |
10417 |
10.417 MHz |
13 |
9616 |
9.615 MHz |
14+ |
…. |
…. |
Найнижча частота тактового сигналу SPI, яку можна вибрати, становить 30 кГц (spiclk_rate=30) для SPI0 і SPI1. Теоретично порт SPI0 може працювати повільніше, але в цьому немає сенсу. Не варто очікувати реальної продуктивності при таких повільних налаштуваннях, якщо тільки ваша машина не розташована поруч із чорною дірою.
Найвища частота тактового генератора SPI теоретично становить 125 МГц. Однак на такій частоті неможливо створити надійний апаратний інтерфейс. Драйвер обмежує тактову частоту до 62,5 МГц (cpiclk_rate=62500). Шанси на те, що інтерфейс буде надійно працювати на цій частоті, досить малі. Інтерфейс 7i90 підтримує частоти лише до 50 МГц, і то за умови ідеального кабельного з’єднання та імпедансного узгодження (лише в напрямку запису).
Запис на 7i90 може виконуватися швидше, ніж читання. Це особливо важливо, якщо у вас є «довгі» дроти або будь-які буфери на шляху SPI-шини. Ви можете встановити частоту тактового генератора читання на нижче значення (за допомогою spiclk_rate_rd) для компенсації ефектів двостороннього обміну даними по SPI-шині, необхідного для операцій читання. Наприклад, ви можете записувати з частотою 41,67 МГц і читати з частотою 25,00 МГц.
Слід зазначити, що RPi3 повинен мати відповідне джерело живлення 5 В, а живлення повинно бути належним чином роз’єднане безпосередньо на 40-контактному роз’ємі вводу-виводу. При високих швидкостях і шумі на джерелі живлення існує ймовірність, що шум виведе з ладу PLL SoC, що призведе до несподіваної поведінки.
Для оптимальної продуктивності на RPi3 необхідно вимкнути регулятор частоти процесора "ondemand". Ви можете додати наступний код до файлу /etc/rc.local:
Переконайтеся, що на SoC встановлено належний радіатор, інакше він перегріється та вийде з ладу.
== ПРИМІТКА
Цей драйвер для більшості потреб був замінений драйвером hm2_spix.
== ДИВІТЬСЯ ТАКОЖ
hostmot2(9) hm2_spix(9)
== ЛІЦЕНЗІЯ
GPL