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.

TMS320F28335 XINTF back to back reads

Other Parts Discussed in Thread: TMS320F28335, SN74V245

I am designing an embedded system using the TMS320F28335 DSC. There is a synchronous FIFO SN74V245 in it to help pace the image capture. I plan to repeatedly read the FIFO via XINTF mapped to Zone 0 and store the data in the internal RAM until there is enough to process. The results of processing will be stored in the external RAM via XINTF mapped to Zone 6.
My question is, I cannot find any explanation on back-to-back read or write operations on the TMS320F28335 XINTF. Can I be sure that all read accesses terminate with the XRD signal going high (inactive), even during back-to-back read operations?

 

  • Max,

    XRD is low during the active cycles and high during lead and trail cycles even for back-to-back accesses. At least 1 lead cycle is

    required so XRD will be high during this time. You can add more lead and trail time as well if you need XRD to be high longer.

    Regards,

    Nicholas Smith

  • Hello,

    Is the same true for the Chip Select? Will the Chip Select always be enabled at the beginning of Lead and disabled at th end of Trial even though I am reading continuously form the same chip?

  • Hi Rubaiat Ali,

    In my design that is now working properly, the XZCS0 signal also goes inactive after the XRD signal goes inactive. I cannot verify, however, if this is due to the assembly language code that's running at the time of this operation. The following is called from the C language, presumably with the AL register loaded with the number of pixels to acquire, the AR4 register with the memory location where to start putting the pixels:

    _acq_one_line:
            push    XAR5
            push    XAR6
            push    XAR3
            movz    AR6,AL
            movl    XAR5,#0x004000
    _acq_one_line_loop_up:
            movz    AR3,*+XAR5[0]
            mov        *XAR4++,AR3
            banz    _acq_one_line_loop_up,AR6--    ; loop if AR6!=0, decrease AR6

            pop        XAR3
            pop        XAR6
            pop        XAR5
            lretr

    Hope this helps,

    Max Burkhart

    _acq_one_line:
     .if 1    ; this works
            push    XAR5
            push    XAR6
            push    XAR3
            movz    AR6,AL
            movl    XAR5,#0x004000
    _acq_one_line_loop_up:
            movz    AR3,*+XAR5[0]
            mov        *XAR4++,AR3
            banz    _acq_one_line_loop_up,AR6--    ; loop if AR6!=0, decrease AR6

            pop        XAR3
            pop        XAR6
            pop        XAR5
            lretr
     .endif