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.

DM642 PDT外设传输能否从外设到内部SRAM?

Other Parts Discussed in Thread: TMS320DM642

试过传输到SDRAM中正常,但是地址定义到内部空间就不能正确传输,请问能做到传输到内部么?

  • 请问PDT外设是什么外设?PDT是什么的缩写?

  • 不好意思,没有描述清楚,


    PDT 外设为从FIFO到SDRAM的写传输

    PDT 是外围设备数据传输接口的缩写。

  • DM642上没这个PDT接口吧?

  • 您好,有的   0180 0040 PDTCTL Peripheral device transfer (PDT) control  在tms320dm642.pdf 芯片手册中有大致描述 可以实现一个EMIF周期完成从FIFO读出来,写入到SDRAM中。

    在EDMA配置中,

    cfgEdma[EDMA_INTER].opt = EDMA_OPT_RMK
                    (           
                        EDMA_OPT_PRI_URGENT,
                        EDMA_OPT_ESIZE_32BIT,
                        EDMA_OPT_2DS_NO,
                        EDMA_OPT_SUM_NONE,
                        EDMA_OPT_2DD_NO,
                        EDMA_OPT_DUM_INC,   //升序号 变化
                        EDMA_OPT_TCINT_YES,
                        EDMA_OPT_TCC_OF(TCC_EXTINTNUM),
                        EDMA_OPT_TCCM_OF(TCC_EXTINTNUM >> 4),
                        EDMA_OPT_ATCINT_NO,
                        EDMA_OPT_ATCC_OF(0),
                        EDMA_OPT_PDTS_DISABLE,
                        EDMA_OPT_PDTD_ENABLE,
                        EDMA_OPT_LINK_NO,    //链接
                        EDMA_OPT_FS_YES
                    );
            cfgEdma[EDMA_INTER].src = 0x90300000;  //0x90300000;   //变幻成外部FIFO;PDT
            cfgEdma[EDMA_INTER].cnt = sCis_para.total_words+4;
            cfgEdma[EDMA_INTER].dst = (u32)pucInter_buf;
            cfgEdma[EDMA_INTER].idx = 4;
            cfgEdma[EDMA_INTER].rld = EDMA_RLD_RMK(0,hEdma[EDMA_CIS1]);

    EDMA_OPT_PDTD_ENABLE: 可以实现从外部FIFO到SDRAM传输,已经在使用。

    但是现在想先传到内部SRAM里面,发现不能正确传输。

  • 您好,有的   0180 0040 PDTCTL Peripheral device transfer (PDT) control  在tms320dm642.pdf 芯片手册中有大致描述 可以实现一个EMIF周期完成从FIFO读出来,写入到SDRAM中。

    在EDMA配置中,

    cfgEdma[EDMA_INTER].opt = EDMA_OPT_RMK
                    (           
                        EDMA_OPT_PRI_URGENT,
                        EDMA_OPT_ESIZE_32BIT,
                        EDMA_OPT_2DS_NO,
                        EDMA_OPT_SUM_NONE,
                        EDMA_OPT_2DD_NO,
                        EDMA_OPT_DUM_INC,   //升序号 变化
                        EDMA_OPT_TCINT_YES,
                        EDMA_OPT_TCC_OF(TCC_EXTINTNUM),
                        EDMA_OPT_TCCM_OF(TCC_EXTINTNUM >> 4),
                        EDMA_OPT_ATCINT_NO,
                        EDMA_OPT_ATCC_OF(0),
                        EDMA_OPT_PDTS_DISABLE,
                        EDMA_OPT_PDTD_ENABLE,
                        EDMA_OPT_LINK_NO,    //链接
                        EDMA_OPT_FS_YES
                    );
            cfgEdma[EDMA_INTER].src = 0x90300000;  //0x90300000;   //变幻成外部FIFO;PDT
            cfgEdma[EDMA_INTER].cnt = sCis_para.total_words+4;
            cfgEdma[EDMA_INTER].dst = (u32)pucInter_buf;
            cfgEdma[EDMA_INTER].idx = 4;
            cfgEdma[EDMA_INTER].rld = EDMA_RLD_RMK(0,hEdma[EDMA_CIS1]);

    EDMA_OPT_PDTD_ENABLE: 可以实现从外部FIFO到SDRAM传输,已经在使用。

    但是现在想先传到内部SRAM里面,发现不能正确传输。

  • 您好,有的   0180 0040 PDTCTL Peripheral device transfer (PDT) control  在tms320dm642.pdf 芯片手册中有大致描述 可以实现一个EMIF周期完成从FIFO读出来,写入到SDRAM中。

    在EDMA配置中,

    cfgEdma[EDMA_INTER].opt = EDMA_OPT_RMK
                    (           
                        EDMA_OPT_PRI_URGENT,
                        EDMA_OPT_ESIZE_32BIT,
                        EDMA_OPT_2DS_NO,
                        EDMA_OPT_SUM_NONE,
                        EDMA_OPT_2DD_NO,
                        EDMA_OPT_DUM_INC,   //升序号 变化
                        EDMA_OPT_TCINT_YES,
                        EDMA_OPT_TCC_OF(TCC_EXTINTNUM),
                        EDMA_OPT_TCCM_OF(TCC_EXTINTNUM >> 4),
                        EDMA_OPT_ATCINT_NO,
                        EDMA_OPT_ATCC_OF(0),
                        EDMA_OPT_PDTS_DISABLE,
                        EDMA_OPT_PDTD_ENABLE,
                        EDMA_OPT_LINK_NO,    //链接
                        EDMA_OPT_FS_YES
                    );
            cfgEdma[EDMA_INTER].src = 0x90300000;  //0x90300000;   //变幻成外部FIFO;PDT
            cfgEdma[EDMA_INTER].cnt = sCis_para.total_words+4;
            cfgEdma[EDMA_INTER].dst = (u32)pucInter_buf;
            cfgEdma[EDMA_INTER].idx = 4;
            cfgEdma[EDMA_INTER].rld = EDMA_RLD_RMK(0,hEdma[EDMA_CIS1]);

    EDMA_OPT_PDTD_ENABLE: 可以实现从外部FIFO到SDRAM传输,已经在使用。

    但是现在想先传到内部SRAM里面,发现不能正确传输。

  • 看了一下EMIF手册,这个PDT功能只能是外部memory之间的数据传输。

    A PDT allows you to directly transfer data from an external peripheral (such as a FIFO) to another external memory (such as SDRAM), and conversely.
    http://www.ti.com/lit/ug/spru266e/spru266e.pdf

  • 谢谢。还有另外一个问题

    你好: 平台为DM642,使用外部SDRAM 作为程序和数据空间,128K CACHE ,外部中断启用EDMA传输(从外部读到SDRAM中),发现本来正常的情况下,EDMA传输时间为4US,但在程序应用引用SDRAM的时候,EDMA传输时间最大为18US。已经设置为EDMA为EDMA_OPT_PRI_URGENT 优先级。

    想请问下,怎么才能做到让EDMA优先大于程序的引用优先级?即保证EDMA传输时间在4US左右。