• 0

Multi-Touch Display Shield to Zynq won't initialize


Go to solution Solved by jpeyron,

Question

Hi,

I've been trying to get the example code running on the MTDS with an Arty Z7. I've been using the basic zynq setup from the PMOD guide. The only thing that wasn't clear was how to hook up the multiple interrupts. I put them through a concat block into IRQ_F2P with the SPI interrupt as in0 and the GPIO as in1. I then setup the SDK project according to the readme in the examples folder.

When I power the board the backlight on the display turns on. When I run the code I get "mtds.begin() failed" on the serial console about once per second.

I checked out the pins on an oscilloscope. I'm seeing a 6.25Mhz clock on sclk and 0x03 bytes on miso. The CS pin on IO10 is going low on each byte. I've tried the jumper on the MTDS in both positions. 

I didn't compile the vivado project with a constraints file, would that make any difference? Does the SD card need to be present for a successful begin?

Any help is appreciated

Edited by twomix
Link to post
Share on other sites

7 answers to this question

Recommended Posts

  • 1
  • Solution

Hi @twomix,

I have not been able to get the MTDS to work on the ARTY-Z7-20 using the PmodMTDS IP core using both Vivado 2015.4 and Vivado 2016.4. The add the PmodMTDS IP core in the board section of Vivado in the block design section you right click on the J6 SPI and choose the MTDS out. I attached screen shots of this below as well as both of my projects using Vivado 2016.4(one for the Arty and one for the Arty-Z7-20). We typically make the IP cores to work with both ZYNQ and Microblaze architectures the same so the IP core should be set up the same for ZYNQ. I am able to get the MTDS to work on the Arty in Microblaze so I believe the set up is correct. Unfortunately I believe the Arty_Z7-20 was not released yet so the Pmod MTDS IP core might not have been tested using it in this way.  I have reached out to the IP's creator to look into this issue. 

thank you,

Jon

PmodMTDS_arty-Z7-20_pict_1.jpg

PmodMTDS_arty-Z7-20_pict_2.jpg

PmodMTDS_arty-Z7-20_pict_3.jpg

PmodMTDS_arty-Z7-20_pict_4.jpg

MTDS_ARTY_Z7_(3).zip

MTDS_arty.zip

Link to post
Share on other sites
  • 1

Hi @twomix,

I have been looking into this issue this afternoon and will need some more time tomorrow to get to the root of the issue for the ZYNQ. I am able to get the MTDS to work on the Arty in Microblaze as described here. The sd card should be in the MTDS for it to work with the demos made. 

cheers,

Jon

Edited by jpeyron
Link to post
Share on other sites
  • 0

Hi @twomix,

I'm currently working on a project that include the Multi-Touch Display Shield and the Vivado Board Definition files for xc7z010clg400-1 version of Arty z7. If you want to make the MTDS to work properly you need to do a couple of things:

1. Insert the micro-SD card into the MTDS display platform (the micro-SD card need to have two folders titled "BmpLib" and "Images" in its base directory). 

2. A little issue comes from the fact that the chip-select is linked separately (Shield Pin 10), compared to the rest of the pins from the MTDS SPI interface. So it is necessary to add a  constraints file, and make all the connections manually.

##ChipKit Digital I/O Low

set_property -dict { PACKAGE_PIN T16   IOSTANDARD LVCMOS33 } [get_ports { spi_ss_io }]; #IO_L9P_T1_DQS_34 Sch=CK_IO10

## ChipKit SPI

set_property -dict { PACKAGE_PIN W15   IOSTANDARD LVCMOS33 } [get_ports {  spi_io1_io }]; #IO_L10N_T1_34 Sch=CK_MISO
set_property -dict { PACKAGE_PIN T12   IOSTANDARD LVCMOS33 } [get_ports { spi_io0_io }]; #IO_L2P_T0_34 Sch=CK_MISO
set_property -dict { PACKAGE_PIN H15   IOSTANDARD LVCMOS33 } [get_ports { spi_sck_io }];  #IO_L19P_T3_35 Sch=CK_SCK
 
 
You can use the Zinq block design provided by @jpeyron, and add the constraints file. After that, your project should work. If you encounter any other problem, please feel free to ask. 

 

 

Edited by BogdanVanca
Link to post
Share on other sites
  • 0

hi,

I am using arty z7-10 board to implement MTDS design. I get the following error in console and display is blank.

mydisp.begin() failed
mydisp.begin() failed

mydisp.begin() failed

I used the following constraints. Please advise.

##ChipKit Digital I/O Low

set_property -dict { PACKAGE_PIN T16   IOSTANDARD LVCMOS33 } [get_ports { spi_ss_io }]; #IO_L9P_T1_DQS_34 Sch=CK_IO10

## ChipKit SPI

set_property -dict { PACKAGE_PIN W15   IOSTANDARD LVCMOS33 } [get_ports {  spi_io0_io }]; #IO_L10N_T1_34 Sch=CK_MISO

set_property -dict { PACKAGE_PIN T12   IOSTANDARD LVCMOS33 } [get_ports { spi_io1_io }]; #IO_L2P_T0_34 Sch=CK_MISO

Thanks,

magi

set_property -dict { PACKAGE_PIN H15   IOSTANDARD LVCMOS33 } [get_ports { spi_sck_io }];  #IO_L19P_T3_35 Sch=CK_SCK

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