This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DRA821U: DRA821U MCSPI Transactions

Part Number: DRA821U
Other Parts Discussed in Thread: SYSCONFIG

We are using the DRA821U MCSPI interface to communicate with FPGAs on our board.  Each SPI transaction is a 64-cycle frame where chip select is continuously active.
Each transaction is always either a Read or a Write operation.
 
In the first 32 cycles, we always send the target Address.  In the second 32 cycles we either send the data to for Write, or we receive the Read data back.
 
We are seeing behavior we are not expecting in the transactions:
 
  1) The Chip Select signal is active (low) for roughly 5 times longer than the transaction itself (when the SPI clock is running)

spi_chip_select.png

    a. Can the inactive period be shortened?
    b. What is causing the extended cycle time relative to the actual active bus time?


  2) The SPI clock stalls in the middle of the transaction

spi_clock.png


    a. Can the SPI clock be configured to run continuously. If no, is it possible to configure the clock to run continuously while the chip select is active?
 
Please see the attached images showing both concerns.  Both of these issues impact our overall performance on long data transfers.


Please advise if there are controls that can be set to address these concerns.

  • Hi Craig,

    I apologize for the delayed response. Can you please provide a register dump for the SPI module used?

    Regards,
    Mark

  • Hi Mark,

    Is there a specific subset of SPI registers to dump? Or would you like all the registers specified in the "MCSPI Registers" table in the TRM starting with MCSPI_HL_REV register though the MCSPI_DAFRX register?

    When would you like the registers dumped? After a SPI transaction?

  • Hi Craig,

    Yes, please dump all the registers so we can fully understand the module configuration. I don't anticipate the module to reconfigure itself after a transaction so anytime after module initialization is fine.

  • Hi Mark,

    Here are the register values after initialization:

    Register MCSPI_HL_REV = 0x40301a0b
    Register MCSPI_HL_HWINFO = 0x9
    Register MCSPI_HL_SYSCONFIG = 0x8
    Register MCSPI_REVISION = 0x2b
    Register MCSPI_SYSCONFIG = 0x15
    Register MCSPI_SYSSTATUS = 0x1
    Register MCSPI_IRQSTATUS = 0x0
    Register MCSPI_IRQENABLE = 0x0
    Register MCSPI_WAKEUPENABLE = 0x0
    Register MCSPI_SYST = 0x0
    Register MCSPI_MODULCTRL = 0x1
    Register MCSPI_CHCONF_0 = 0x60000
    Register MCSPI_CHSTAT_0 = 0x0
    Register MCSPI_CHCTRL_0 = 0x0
    Register MCSPI_TX_0 = 0x0
    Register MCSPI_RX_0 = 0x0
    Register MCSPI_CHCONF_1 = 0x60000
    Register MCSPI_CHSTAT_1 = 0x0
    Register MCSPI_CHCTRL_1 = 0x0
    Register MCSPI_TX_1 = 0x0
    Register MCSPI_RX_1 = 0x0
    Register MCSPI_CHCONF_2 = 0x60000
    Register MCSPI_CHSTAT_2 = 0x0
    Register MCSPI_CHCTRL_2 = 0x0
    Register MCSPI_TX_2 = 0x0
    Register MCSPI_RX_2 = 0x0
    Register MCSPI_CHCONF_3 = 0x60000
    Register MCSPI_CHSTAT_3 = 0x0
    Register MCSPI_CHCTRL_3 = 0x0
    Register MCSPI_TX_3 = 0x0
    Register MCSPI_RX_3 = 0x0
    Register MCSPI_XFERLEVEL = 0x0
    Register MCSPI_DAFTX = 0x0
    Register MCSPI_DAFRX = 0x0

  • Hi Craig,

    Register MCSPI_MODULCTRL = 0x1

    Since this register is configured as such, SPIEN or CS is controlled in software and not by the hardware module.

    Please see this section and the following sections in the device TRM to control the SPIEN/CS signal.

    Can the SPI clock be configured to run continuously. If no, is it possible to configure the clock to run continuously while the chip select is active?

    While there are no register configurations which control this, maybe turbo mode mentioned in this thread may be of use to you:  RE: DRA821U-Q1: DRA821 MCSPI1 transaction to transaction delay issue 

    Regards,
    Mark