Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

133
Visualizações
Controlador Linux para quad spi en Zedboard

Soy un SoC bastante nuevo y actualmente estoy trabajando con la plataforma de evaluación Zedboard. Incluí un SPI cuádruple en mi diseño de bloque y quiero comunicarme con él a través de Linux que se ejecuta en uno de los procesadores ARM. Necesito el SPI para transmitir/recibir 32 bits en una ráfaga y manejar la comunicación desde C++. Sin embargo, no puedo hacerlo funcionar.

El SPI cuádruple está configurado como estándar, sin FIFO y ancho de transacción = 32 bits. He actualizado el árbol de dispositivos de Linux de la siguiente manera:

 axi_quad_spi_0@41E00000 { compatible = "xlnx,xps-spi-2.00.b", "xlnx,xps-spi-2.00.a"; #address-cells = <0x1>; #size-cells = <0x0>; interrupt-parent = <0x2>; interrupts = <0x0 0x39 0x1>; reg = <0x41e00000 0xffff>; xlnx,fifo-exist = <0x0>; xlnx,num-ss-bits = <0x2>; xlnx,num-transfer-bits = <0x20>; xlnx,sck-ratio = <0x10>; device@0 { compatible = "spidev"; reg = <0x0>; spi-max-frequency = <0x5f5e10>; }; device@1 { compatible = "spidev"; reg = <0x1>; spi-max-frequency = <0x5f5e10>; };

Después de esto, puedo ver spidev0.0 y spidev.0.1 en /dev como se esperaba. Además, cuando escribo en los archivos del dispositivo con bits_per_word = 8, obtengo una ráfaga de 8 bits del SPI cuádruple pero con 32 períodos de reloj, es decir, obtengo el primer byte correspondiente a 1/4 de la ráfaga de 32 bits (visto con sondas de depuración). en Vivo). Supongo que veo esto porque el ancho de la transacción está configurado en 32 bits.

Sin embargo, cuando quiero cambiar la ráfaga a 32 bits (bits_per_word = 32) no funciona. Recibo el mensaje "xilinx_spi_setup_transfer, bits_per_word=32 no admitidos" en mi terminal Linux.

Yo uso el siguiente código en C++:

 uint8_t tx[] = { 0xAD, 0xEF, 0x01, 0x23 }; uint8_t rx[4] = { 0 }; struct spi_ioc_transfer tr[2]; tr[0].tx_buf = (unsigned long)tx; tr[0].rx_buf = (unsigned long)rx; tr[0].len = 4; tr[0].delay_usecs = delay; tr[0].speed_hz = speed; tr[0].bits_per_word = 32; tr[0].cs_change = 0; ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr);

He intentado compilar el controlador xilinx xilinx-spi.c pero cuando trato de instalarlo (con "modprobe xilinx_spi" en Linux) dice que "Dispositivo o recurso ocupado".

¿Cómo consigo que esto admita 32 bits para poder transmitir/recibir 32 bits en una ráfaga? ¿Alguien puede ayudarme aquí? ¡Gracias!

Hermano jacob

over 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda