• 0
amurices

How to use multiple PL SPI interfaces with Linux on Zynq?

Question

I'm trying to set up two AXI Quad SPI IPCores as Masters to use with Linux on my MicroZed. I've been using a single interface, which works fine, by taking the M_AXI_GP0 interface, connecting it to an AXI Interconnect, and using that to connect to the IPCore. However, with two or more IPCores, I don't know how to get this to work. The block design of my attempt is below.

But it just doesn't work. The device tree nodes for both devices look identical (apart from their addresses and the fact that the second one has a disconnected interrupt pin (which doesn't do anything in my case)), but when I try to open the second device in Linux, it gives me the error spidev: Connection timed out.

How should I do this?

This question was also asked here: https://forums.xilinx.com/t5/Embedded-Linux/How-to-use-multiple-PL-SPI-interfaces-with-Linux-on-Zynq/td-p/870991

 

block_design_2_spis.png

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

I found the issue! It was that the interrupt port from the second device wasn't connected. I had to add a Concat IPCore to enable interrupts from both devices, and now everything is dandy. Seems like the spi-xilinx.c driver counts on that pin to probe the device correctly.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now