Equipos y materiales > Openwrt & LEDE
Conectar nuevos dispositivos al bus SPI de la Flash.
(1/2) > >>
Tki2000:
¿Alguien sabe si se pueden incorporar nuevos dispositivos SPI al mismo bus de la Flash o al bus SPI que tenga el router, añadiendo la línea de chip select CS con algún gpio?
Es decir, quiero saber si puedo añadir un LCD SPI a las mismas líneas que utiliza el router para comunicarse con otros dispositivos SPI, diciéndole qué CS debe activar cuando se quiera comunicar con cada dispositivo.
He visto esto en concreto : ILI9225B LCD on HLK-RM04 WiFi module with OpenWRT pero sería necesario aplicar el parche sobre el driver específico SPI de cada plataforma. Si fuera un parche genérico estaría bien, pero no lo es.

¿Sería posible utilizar spi-gpio-custom definiendo los mismos pines CLK, MISO y MOSI que tuviera la memoria flash? ¿o se haría un lío? Mi intención es agregar nuevos dispositivos al mismo bus utilizando solamente una línea adicional.

He visto que se han conectado memorias externas SPI al mismo bus SPI de una Livebox para leerlas. Yo estoy buscando algo más genérico para poder incorporar LCDs y lectores de SD.

¿Alguna pista de si se puede hacer de forma "poco traumática" utilizando sólo esa línea de más?

danitool:
En mi opinión SÍ es posible. Habría que modificar el driver SPI para que usase un GPIO como chip select.

Esta misma cuestión la hablé en su momento con Noltari.

Supongo que estás pensando hacerlo en la plataforma bcm63xx. Hay que tener en cuenta que existen dos drivers el HSSPI y el SPI normal. Lo mejor sería probar en placas con HSSPI, ya que al menos el SPI normal es bastante pobre en funcionalidad y seguramente no funcionaría bien.

El HSSPI se encuentra en routers con BCM6328, los cuales usan una flash SPI. Los 6348/6358/6368 usan el SPI normal el cual en ocasiones se usa para conectar al switch, en el caso del 6368 hay alguna placa con flash SPI aunque yo no vi ninguna sé que existen.

Sobre el Livebox 1, decir que todos los pines SPI están expuestos, incluso el CS, pero solo sirve para conectar una flash SPI y haciendo algún apaño para poder leer/escribir correctamente, conectar una memoria SD/MMC para usar el driver MMC over SPI NO funciona, o al menos yo no fui capaz, como ya he dicho este driver es un poco cutre.

Intuyo que los SOCs bcm63xx tienen hasta 4 chip-selects según lo que hay en el código de Broadcom. Pero existir como tal solo existe 1. Pienso que los otros tres son GPIOs que se convierten en SPI chipselect mediante bootstraps. De cuales son estos GPIOs y cual es el bootstrap que los activa, ni idea, ya que no existe absolutamente ningún datasheet de broadcom, ni información relativa a ello.

Así que lo suyo sería usar un BCM6328 tal como el AR5387un, o similar. localizar un gpio sin usar y darle funcionalidad de SPI-CS en el código del kernel.

Ahora solo falta alguien que sepa como hacerlo  >:D
Tki2000:
En realidad lo que estoy intentando es buscar algo sencillo para tener esa funcionalidad, pero me parece que no va a ser tan fácil.

Si miras en el ejemplo que pongo en el post, el autor ha conseguido dos dispositivos SPI en el mismo bus definiendo los mismos en el archivo dts, utilizando un gpio de un led para el chip select y luego alterando el driver SPI de la plataforma en cuestión, en este caso spi-rt2880.c. Así, tan sólo alterando dos ficheros ha conseguido hablar con los dos dispositivos SPI, siendo uno de ellos la propia flash del router y el otro un LCD.

Por otro lado tenemos el módulo spi-gpio-custom que nos permite tener funcionalidad SPI definiendo los pines para hablar con los dispositivos. No sé todavía si este driver permite que se definan pines que ya están siendo usados por el driver SPI del soc. El caso es que según el código parece que los parámetros que le definamos los introduce en la estructura platform_device que luego va a ser utilizada por el driver SPI, y registra el nuevo dispositivo con el master del SPI. ¿Significa esto que al definir el dispositivo de esta forma el driver SPI del soc se va a hacer cargo de las transferencias de datos? Si esto fuera verdad ya tendríamos todo solucionado.

Una razón por la que pudiera no haberte funcionado la tarjeta SD puede ser por la velocidad del SPI. Si estabas intentando comunicarte a la misma velocidad que la memoria flash puede ser que la SD no te "siguiera". Prueba a ver si le puedes bajar la velocidad del SPI.

danitool:
Sobre el ejemplo que pones, yo la verdad solo veo un video en el que se ve la modificación, con un montón de cables conectados en la placa y poco más.

Si tienes algún código interesante que has visto por ahí, ponerlo aquí no haría daño  >:D.
Tki2000:
El código está en el "Show More" del video, sólo hay que darle a la pestaña: http://zdoom.ic.cz/download/ILI9225-HLK-RM04.tar.gz  ;D
Navegación
Índice de Mensajes
Página Siguiente

Ir a la versión completa