LinuxCNC Documentation

ІМ’Я

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):

Table 1. Тактова частота SPI та відповідна тактова частота SPI

Дільник

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