2 Replies Latest reply on Apr 19, 2018 7:08 AM by inanity407_2949331

    FX3 select PIB interrupt for external AP


      Hi everyone!


      I have FPGA connected to FX3 over GPIF (using starndard admux protocol). I successfully can read/write over admux. I need INT# signal to detect events from FX3.

      But I have a strange problem with enabling PIB interrupts using CyU3PPibSelectIntSources(...) function, PP_INTR_MASK register does NOT change.

      By default register 's value is 0x2000 (RD_MB_FULL bit is high) and MailBox works perfect in both directions! But I need interrupt to detect other events, especially socket state and I have no idea why I can't enable them all.


      I looked though all SDK examples, none of them use CyU3PPibSelectIntSources(...).


      Thanks much!!

        • 1. Re: FX3 select PIB interrupt for external AP

          Some more information...


          Again, I want to work with FX3 in PP_MODE = 1. I use ADMus GPIF II protocol (in 32 bit mode). I can read/write PP-registers.

          I tried to use Mailbox read and write, it works perfect, I got interrupt over pin INT# and read mailbox registers.

          The problem is that I want to enable other interrupts in PP_INTR_MASK register, but register state doesn't change.


          Here is CyU3PPibSelectIntSources() function source, it looks very simple and obvious:

          CyU3PPibSelectIntSources (
            CyBool_t pibSockEn,
            CyBool_t gpifIntEn,
            CyBool_t pibErrEn,
            CyBool_t mboxIntEn,
            CyBool_t wakeupEn)
             uint32_t mask = 0;
             if (pibSockEn)
             if (gpifIntEn)
            mask |= CY_U3P_PIB_GPIF_INT;
             if (pibErrEn)
            mask |= CY_U3P_PIB_PIB_ERR | CY_U3P_PIB_GPIF_ERR;
             if (mboxIntEn)
            mask |= CY_U3P_PIB_RD_MB_FULL;
             if (wakeupEn)
            mask |= CY_U3P_PIB_WAKEUP;
            PIB->pp_intr_mask = mask;


          Following FX3 Technical Reference manual, PIB->pp_intr_mask register has address 0xE0017E1C. I checked memory at this address, It doesn't change even I try to change it manually.


          P.S. I'd not say I'm new with FX3, but this problem looks really weird. Any thoughts?


          Best regards

          • 2. Re: FX3 select PIB interrupt for external AP

            Answering my own question.


            I tried to write PP_INTR_MASK from hardware and could change it!


            The main problem was in mistake in documentation.

            Some screens from EZ-USB® FX3™ Technical Reference Manual:


            PP_INTR_MASK is accessible for write from hardware, not software!

            Therefore CyU3PPibSelectIntSources(...) function is wrong and absolutely useless.