Re: no activity on MCF5275 QSPI bus

"Marc Vincent" <[email protected]> Thu, 13 Mar 2008 15:21:43 -0400
Newsgroups gmane.comp.hardware.motorola.microcontrollers.coldfire
Message-ID <[email protected]>
Have you setup the QSPI PAR register properly? Default function is
GPIO (ie. pulled-up input) for all pins. Hope this helps.
Marc

On Thu, Mar 13, 2008 at 3:05 PM, David van Geest
<[email protected]> wrote:
> Hi all,
>
> I'm having trouble with the QSPI on my M5275EVB.  I've written a test
> app that should give me some activity on the bus, according to the
> Programming Example in the manual (pg. 24-16).  With an oscope probe
> on pin 3 or 5 of J9 (SCK and QSDO, respectively), I don't see ANY
> activity - both pins stay at 3.3 V.
>
> The oscope works fine - I've run a whole lot of self-tests, and it
> shows similar signals just fine (e.g. the I2C on the same board).
>
> Some more background:  I'm running uClinux on the board.  I was trying
> to port the mcf_qspi driver, and when using my ported driver, was
> again not seeing any activity on the bus.  I decided to eliminate the
> driver as the source of the problem, and instead gave user apps R/W/E
> access to the QSPI registers using the PACR registers.
>
> When running the test app, all the QSPI registers seem to be written
> correctly.  I've included the test app source and sample program
> output below.  Note that I don't have a SPI device attached, which is
> why the received data is all 1s.
>
> At this point I'm thinking that either:
> a) I've missed something incredibly obvious and am going to look
> stupid by sending this email... :-)
> b) There's a hardware problem
>
> Can someone take a look at my test app code and help me eliminate that
> as a cause?
>
> Thanks!
> -David
>
> Test app code (reg definitions provided in a separate file):
> int main () {
>        // I didn't want to do 12 bit transfers.... 16 bit instead
>        // Also, set the baud rate to slowest setting with FF instead of 08
>        QMR = 0x83FF;
>        if (QMR == 0x83FF)
>                printf("Step 1: QMR Write\n");
>
>        QDLYR = 0x0404;
>        if (QDLYR == 0x0404)
>                printf("Step 2: QDLYR Write\n");
>
>        QIR = 0xD00F;
>        if (QDLYR == 0x0404)
>                printf("Step 3: QIR Write\n");
>
>        QAR = 0x0020;
>        if (QDLYR == 0x0404)
>                printf("Step 4: QAR Write\n");
>
>        //while (1) {
>                int i = 0;
>                for (i = 0; i < 4; i++) {
>                        QDR = 0x7E00;
>                }
>                for (i = 0; i < 4; i++) {
>                        QDR = 0x7D00;
>                }
>                for (i = 0; i < 4; i++) {
>                        QDR = 0x7B00;
>                }
>                for (i = 0; i < 4; i++) {
>                        QDR = 0x7700;
>                }
>                printf("Step 5: QDR Command Write\n");
>
>                QAR = 0x0000;
>                printf("Step 6: QAR Write\n");
>
>                u16 temp = 0x0000;
>                for (i = 0; i < 16; i++) {
>                        temp = i;
>                        QDR = temp;
>                }
>                printf("Step 7: QDR Data Write\n");
>
>                QWR = 0x0F00;
>                printf("Step 8: QWR Write\n");
>
>                QDLYR |= QDLYR_SPE;
>                printf("Info: QDLYR is: %x\n", QDLYR);
>                printf("Step 9: SPE Set\n");
>
>
>                //wait until transfer is complete
>                while (1) {
>                        printf("Step 10: Waiting...\n");
>                        temp = QIR & 0x0001;
>                        if (temp == 0x0001)
>                                break;
>                }
>
>                QAR = 0x0010;
>                printf("Step 11: Write QAR\n");
>                u16 receiveBuff[16];
>                for (i = 0; i < 16; i++) {
>                        receiveBuff[i] = QDR;
>                        printf("Step 12: Received Data at %d is %x:\n",i,receiveBuff[i]);
>                }
>        //}
>
>        printf("Done!\n");
>
>        return(0);
>
> }
>
>
> Test app output:
> Step 1: QMR Write
> Step 2: QDLYR Write
> Step 3: QIR Write
> Step 4: QAR Write
> Step 5: QDR Command Write
> Step 6: QAR Write
> Step 7: QDR Data Write
> Step 8: QWR Write
> Info: QDLYR is: 8404
> Step 9: SPE Set
> Step 10: Waiting...
> Step 11: Write QAR
> Step 12: Received Data at 0 is ffff:
> Step 12: Received Data at 1 is ffff:
> Step 12: Received Data at 2 is ffff:
> Step 12: Received Data at 3 is ffff:
> Step 12: Received Data at 4 is ffff:
> Step 12: Received Data at 5 is ffff:
> Step 12: Received Data at 6 is ffff:
> Step 12: Received Data at 7 is ffff:
> Step 12: Received Data at 8 is ffff:
> Step 12: Received Data at 9 is ffff:
> Step 12: Received Data at 10 is ffff:
> Step 12: Received Data at 11 is ffff:
> Step 12: Received Data at 12 is ffff:
> Step 12: Received Data at 13 is ffff:
> Step 12: Received Data at 14 is ffff:
> Step 12: Received Data at 15 is ffff:
> Done!
> ---
> [email protected]              Send a post to the list.
> [email protected]        Join the list.
> [email protected]    Join the list in digest mode.
> [email protected]     Leave the list.
>
>
---
[email protected]              Send a post to the list.
[email protected]        Join the list.
[email protected]    Join the list in digest mode.
[email protected]     Leave the list.