element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      • Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Avnet Boards Forums
  • Products
  • Dev Tools
  • Avnet & Tria Boards Community
  • Avnet Boards Forums
  • More
  • Cancel
Avnet Boards Forums
MicroZed Hardware Design SPI Self Test Fails
  • Forum
  • Documents
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Avnet Boards Forums to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Not Answered
  • Replies 11 replies
  • Subscribers 341 subscribers
  • Views 2043 views
  • Users 0 members are here
Related

SPI Self Test Fails

Former Member
Former Member over 10 years ago

I'm having trouble getting the SPI Self Test example to pass. I'm using Vivado 2014.4.


I checked both SPI peripherals in the "MIO Configuration" in Vivado. "ps7_spi_0" and "ps7_spi_1" both show up in system.mss in my BSP in the SDK. The base address for both peripherals is correct in "xparameters.h".


I imported the Xilinx example project "xspips_selftest_example" and ran it both for device ID 0 and 1 (SPI 0 and SPI 1) and both failed. The part it fails at is in the "int XSpiPs_SelfTest(XSpiPs *InstancePtr)" function it calls the "XSpiPs_Reset" function and then checks that the SPI registers are in their default state, which they are not which causes the test to fail.


Does anyone know where I can dig to find out why this test might be failing? Or maybe the test is out of date and shouldn't actually work in the first place? Thanks!


edit: To get into more detail of why the test is failing: The driver performs a reset on the SPI peripheral and then reads back the register value to see if it gets an expected value in the "Config_reg" register. The expected value is 0x00020000, but it actually reads back 0x00000000 which causes it to fail this test. I looked at the register value in Eclipse and it is indeed 0x00000000. I tried manually changing the register value and it has no effect, even though many of the bits are read/write according to the Technincal Reference Manual.

  • Sign in to reply
  • Cancel
Parents
  • Former Member
    0 Former Member over 10 years ago

    You might want to look at which MIO signals you assigned to your PS SPI ports. While the MIO assignments for SPI 1 include the MIO pin that go to the MicroZed PS PMOD port the only MIO assignments that work for SPI 0 are also used by the default Ethernet or USB ports which are already connected to those peripherals on the MicroZed.

     

    I built a quick Vivado 2014.4 project for the MicroZed and assigned SPI 1 to MIO connected to the PMOD port and assigned SPI 0 to EMIO. I then exported the design to SDK. There I used the 'New Application' > 'Peripheral Test' template to generate a test program. The C code supplied here also uses the XSpiPS_SelfTest function and passed with no issues when I ran the test application. You might what to use this approach and look at how this example code calls the self test functions.

     

    -Gary

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Reply
  • Former Member
    0 Former Member over 10 years ago

    You might want to look at which MIO signals you assigned to your PS SPI ports. While the MIO assignments for SPI 1 include the MIO pin that go to the MicroZed PS PMOD port the only MIO assignments that work for SPI 0 are also used by the default Ethernet or USB ports which are already connected to those peripherals on the MicroZed.

     

    I built a quick Vivado 2014.4 project for the MicroZed and assigned SPI 1 to MIO connected to the PMOD port and assigned SPI 0 to EMIO. I then exported the design to SDK. There I used the 'New Application' > 'Peripheral Test' template to generate a test program. The C code supplied here also uses the XSpiPS_SelfTest function and passed with no issues when I ran the test application. You might what to use this approach and look at how this example code calls the self test functions.

     

    -Gary

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Children
  • Former Member
    0 Former Member over 10 years ago in reply to Former Member

    Hi Gary,

    I tried starting a new project with no other components on the board except the ZYNQ7 Processing System. I ran design automation which connected the fixed IO and the DDR. Then I started a C project and used the "Peripheral Test" template as you suggested.

    All of the tests passed except for the SPI test. I'll post the results below:

    ---Entering main---

    Running ScuGicSelfTestExample() for ps7_scugic_0...
    ScuGicSelfTestExample PASSED
    ScuGic Interrupt Setup PASSED

    Running XDmaPs_Example_W_Intr() for ps7_dma_s...
    Test round 0
    XDmaPs_Example_W_Intr PASSED

    Running QspiSelfTestExample() for ps7_qspi_0...
    QspiPsSelfTestExample PASSED

    Running DcfgSelfTestExample() for ps7_dev_cfg_0...
    DcfgSelfTestExample PASSED

    Running ScuTimerPolledExample() for ps7_scutimer_0...
    ScuTimerPolledExample PASSED

    Running Interrupt Test  for ps7_scutimer_0...
    ScuTimerIntrExample PASSED

    Running Interrupt Test  for ps7_scuwdt_0...
    ScuWdtIntrExample PASSED

    Running SpiPsSelfTestExample() for ps7_spi_1...
    SpiPsSelfTestExample FAILED
    ---Exiting main---

    I'm using SPI1 on MIO pins 10, 11 and 12 with ss[0] set to MIO13. I'm not sure how to post images on this forum or I could add a screenshot.

    Thanks for the suggestion, I'm just not sure why it isn't working for me. Is there any way you could post your project so that I could open it and try running it?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 10 years ago in reply to Former Member

    In my project I selected the MicroZed 7020 board and used the MicroZed Board Definition Files available here:

    http://zedboard.org/support/documentation/1519

     

    When I added the Zynq PS System and ran the 'Automation' I did leave the 'use board presets' checked. I left all of the peripherals selected by the preset enabled (including Ethernet) and added PS SPI 0 and PS SPI 1. I selected MIO 10...15 for SPI 1 as you did. Then I generated a bitstream and exported the design to SDK.

     

    Given that I do not see the Interrupt Test for ps7_ethernet in your test results I suspect that you did not use the same board definition files. I would install the Avnet MicroZed board definition files and select the MicroZed board (7010 or 7020) and then generate your design. I would use the board presets and then just delete any peripherals you do not want.

     

    -Gary

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube