hm2_rpspi - Controlador HAL LinuxCNC para las tarjetas Mesa Electronics SPI Anything IO, con firmware HostMot2.
loadrt hm2_rpspi |
config [predeterminado: ""]
Cadenas de configuración de HostMot2, descritas en el hostmot2(9) página de manual.
spiclk_rate [predeterminado: 31250]
Especifique la frecuencia de reloj SPI en kHz. Ver SPI RELOJ TARIFAS abajo.
spiclk_rate_rd [predeterminado: -1 (igual que spiclk_rate)]
Especifique la velocidad del reloj de lectura SPI en kHz. Usualmente lees y escribes al mismo velocidad. Sin embargo, es posible que desee reducir la velocidad de lectura si el viaje de ida y vuelta es demasiado largo (ver SPI RELOJ TARIFAS abajo).
spiclk_base [predeterminado: 400000000]
Este es el valor de reserva del
cálculo del divisor de reloj SPI. Por lo
general, la base la tasa se lee de / sys / kernel / debug
/ clk / vpu / clk_rate y usado en el
cálculo del divisor (para el Rpi3
deberÃa ser 250 MHz). los spiclk_base se
usa only como reserva si el sistema no puede ser
leer. Normalmente es seguro (y recomendado) que deje este
parámetro como es.
Debe configurarlo manualmente en 250000000 si su sistema no
proporciona acceso a la configuración del reloj
del núcleo. De lo contrario, su frecuencia de
reloj SPI sea ââsolo el 62.5% del valor
solicitado.
spi_pull_miso
[predeterminado: 1 (pull-down)]
spi_pull_mosi [predeterminado: 1 (pull-down)]
spi_pull_sclk [predeterminado: 1 (pull-down)]
Active o desactive pull-up / pull-down en las lÃneas SPI. Un valor de 0 deshabilita cualquier pull-up / down en el pin. Un valor de 1 significa pull-down y 2 significa levantar. Las lÃneas de habilitación de chip siempre están habilitadas para pull-up.
spi_probe [predeterminado: 1]
Puerto SPI de sonda y lÃneas CE para una tarjeta. Este es un bit-field que indica qué Se deben probar combinaciones de SPI y CE:  - 1 = SPI0 / CE0,  - 2 = SPI0 / CE1,  - 4 = SPI1 / CE0,  - 8 = SPI1 / CE1,  - 16 = SPI1 / CE2.
La sonda se realiza exactamente en el orden anterior. Cualquier tarjeta encontrada será numerados 0 ... 4 en el orden encontrado. Ver también INTERFAZ CONFIGURACIÃN abajo.
Es un error si falla una sonda y el controlador abortará. El SPI0 / SPI1 los periféricos se encuentran en los pines gpio (con un pin de encabezado de E / S de 40 pines-number en paréntesis):  - 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 [predeterminado:-1]
Establecer el nivel de mensaje del proceso en ejecución. El nivel de mensaje se establece si spi_debug se establece en un valor positivo entre 0 y 5, donde 0 significa que no mensajes en absoluto y 5 significa todo. Un valor de-1 no toca el nivel de mensaje actual
Advertencia de Emptor: cambiar el nivel del mensaje es un proceso completo y todos los módulos dentro del proceso escupirá mensajes en el nivel solicitado. Esto puede causar bastante desorden en su terminal.
hm2_rpspi es un controlador de dispositivo para Raspberry Pi 2/3 que interactúa con Mesa tarjetas de E / S Anything basadas en SPI (con el firmware HostMot2) al HAL LinuxCNC. Este controlador no se basa en el controlador Linux spidev, sino en un controlador dedicado BCM2835-SPI controlador.
Es strongly recomienda que descargue / deshabilite el spidev del kernel conductor deshabilitándolo usando raspi-config. Tenga en cuenta que tener instalados los controladores SPI kernel y user-space puede resultar en interacciones inesperadas e inestabilidades del sistema.
Las tarjetas compatibles son: 7I90HD.
La tarjeta debe tener un firmware compatible (es decir: 7i90_spi_svst4_8.bit) cargado en el tablero por el mesaflash(1) programa.
hm2_rpspi solo está disponible cuando linuxcnc está configurado con "uspace" en tiempo real. Funciona con el núcleo Raspian y PREEMPT_RT.
Se admiten hasta cinco dispositivos (tarjetas 7i90). Dos en SPI0 y tres en SPI1. Se recomienda que, como máximo, use dos dispositivos y cada dispositivo conectado a un puerto SPI separado. Puede elegir qué lÃ- neas CE prefiere o se ajustan al diseñe y configure el parámetro spi_probe para indicar al controlador dónde busque el (los) tablero (s).
TBD.
El reloj SPI máximo del controlador BCM2835-SPI y el 7i90 se documenta durante 32MHz El controlador SPI puede proporcionar frecuencias mucho más allá de lo aceptable para el 7i90. Un valor seguro para comenzar serÃa 12.5 MHz (spiclk_rate = 12500) y luego avanza desde allÃ.
El controlador SPI genera valores de frecuencia de reloj (muy) discretos, especialmente en el rango de MHz debido a una estructura divisoria de reloj simple. La frecuencia base es de 250 MHz y el divisor para las escalas SPI0 / SPI1 usando factores discretos. los La siguiente lista especifica la configuración de spiclk_rate y el SPI discreto frecuencia de reloj (250 MHz / (2n) para n > 1):  - 62500- 62.500 MHz,  - 41667- 41.667 MHz,  - 31250- 31.250 MHz,  - 25000- 25.000 MHz,  - 20834- 20.833 MHz,  - 17858- 17.857 MHz,  - 15625- 15.625 MHz,  - 13889- 13.889 MHz,  - 12500- 12.500 MHz,  - 11364- 11.364 MHz,  - 10417- 10.417 MHz,  - 9616- 9.615 MHz,  - ....
La frecuencia de reloj SPI seleccionable más baja es 30 kHz (spiclk_rate = 30) para SPI0 y SPI1. Teóricamente, el puerto SPI0 podrÃa ir más lento, pero no tiene sentido al hacerlo. No debe esperar ningún rendimiento real en tiempo real con una velocidad tan lenta configuración, a menos que su máquina esté ubicada al lado de un agujero negro.
La frecuencia de reloj SPI más alta es, teóricamente, 125 MHz. Sin embargo, lo harás no podrá construir ninguna interfaz de hardware confiable a esa frecuencia. los El controlador limita el reloj a 62.5 MHz (cpiclk_rate = 62500). Las probabilidades son es bastante delgado que consigas que la interfaz funcione de manera confiable a esta frecuencia. los La interfaz 7i90 solo admite frecuencias de hasta 50 MHz y es perfecta cableado y adaptación de impedancia (solo en dirección de escritura).
Escribir en el 7i90 puede hacerse más rápido que leer. Esto es especialmente importante si tiene cables "largos" o cualquier buffer en la ruta SPI-bus. Usted puede establezca la frecuencia del reloj de lectura en un valor inferior (usando spiclk_rate_rd) en contrarrestar los efectos del viaje de ida y vuelta SPI-bus necesarios para las acciones de lectura. por ejemplo, puede escribir a 41.67 MHz y leer a 25.00 MHz.
Cabe señalar que los Rpi3 must tienen una fuente de alimentación adecuada de 5V y la alimentación debe estar correctamente desacoplada en el encabezado de 40-pin I/O. A Altas velocidades y ruido en el suministro, existe la posibilidad de lanzar ruido fuera de los PLL del SoC, lo que resulta en un comportamiento extraño.
Para un rendimiento óptimo en el Rpi3, debe deshabilitar la CPU "ondemand" regulador de frecuencia Puede agregar lo siguiente a su archivo /etc/rc.local:  echo -n 1200000> / sys / devices / system / cpu / cpufreq / policy0 / scaling_min_freq  echo -n performance> / sys / devices / system / cpu / cpufreq / policy0 / scaling_governor
Asegúrese de tener un disipador térmico adecuado montado en el SoC o se calentará demasiado y chocar.
hostmot2(9)
GPL