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的usb开发相关资料

Other Parts Discussed in Thread: TMS320F28335

大家好,我最近要做TMS320F28335的usb模块的开发,我是买的一个usb芯片,但是不知道怎么连接f283385,具体的软件开发流程也还不太懂,希望大神们有什么相关资料能跟我分享一下不,感激不尽啊!!!

  • F28335没有USB外设模块。

    请问你买的是哪家的USB芯片?这个使用应该和那个USB芯片相关?

    对于F28335来讲只要把它与USB芯片的接口配置好就可以了。

  • F28335没有USB外设模块。

    请问你买的是哪家的USB芯片?这个使用应该和那个USB芯片相关?

    对于F28335来讲只要把它与USB芯片的接口配置好就可以了。

  • 因为28335并没有usb模块,而你用的是usb芯片,这得要看你的usb芯片支持的是什么接口,那么就按照那个接口的标准来设计

  • 哦,我买的是CH375一个USB模块,它需要与f28335连接的引脚如图:

    就是这些引脚应该和dsp的那些引脚相连,另外,我还想问下它与dsp连接后,还需要自己开驱动程序么,还是直接就能用了?  谢谢您的回答了
  • 您好,我用的是CH375的一个usb模块,它与f28335连接的引脚如上图,我就是不知道改连接到28335的哪些引脚,不知道您知不知道,另外连接好引脚后是不是还要开发驱动程序啊,谢谢您了

  • 你可以使用XINTF功能,28335具有DMA功能,数据传输速度会比较快;当然用GPIO模拟总线接口也可以,28335速度150M已经很快了,操作这个芯片没有什么问题。

    至于驱动代码,这个肯定是必需要写的,其实就是对CH375的一个设置,完成设置后,在操作传输数据;

    建议使用XINTF加DMA功能,设置会麻烦些,设置好后,传输数据是非常简单的

    TMS320F28335_XINTF.pdf
  • 恩,感谢您的回复,昨天刚用XINTF的zone7完成了硬件的连接,现在在CCS上配置CH375,现在的想法是先用dsp控制CH375读取U盘,发现他们的代码都是基于51的,太庞杂,现在还无法入手写代码,很迷茫啊。 

  • 任何工作,都需要认真耐心,期望你做的更好!

  • 恩,谢谢您的鼓励,还有个小问题想问一下你,我选择的zone7是16位的数据总线,zone7映射的物理地址是0x0020 0000 ----0x0030 0000,那我现在的数据地址是多少啊?

  • 0x0020 0000 ----0x0030 0000

    因为只需A0连接地址线,有很多地址都可用

    建议使用0x0020 0000 +A0

    如果我的回复解答了您的疑问,请将该回复标绿,让更多人看到。谢谢!

  • onebyte,还有个问题您帮我看下,我是使用Zone7的一个A0,和D0到D7连接CH375芯片,那这个芯片需不需要还映射到zone7区域去(也就是需不需要写zone7相关的CMD文件),如果需要写,那这个关于zone7的cmd该怎么写呢。(我也查看了一些zone区域连接芯片的东西,他们说是把芯片的寄存器映射过去就可以了,具体到我这个也没什么寄存器啊)。

  • onebyte,还有个问题您帮我看下,我是使用Zone7的一个A0,和D0到D7连接CH375芯片,那这个芯片需不需要还映射到zone7区域去(也就是需不需要写zone7相关的CMD文件),如果需要写,那这个关于zone7的cmd该怎么写呢。(我也查看了一些zone区域连接芯片的东西,他们说是把芯片的寄存器映射过去就可以了,具体到我这个也没什么寄存器啊)。

  • 不用写zone7相关的CMD文件,直接对地址进行操作

  • onebyte大哥,又要麻烦一下您了,这是我设置的访问zone0的代码,您看一下是不是哪里有问题,我运行之后用万用表测了XZCS0的电压一直都是高电平。我的代码如下:

    #define CH375Cmd *(volatile UINT32*)(0x4001) /*总线方式*/  //命令端口
    #define CH375Dat *(volatile UINT32*)(0x4000)           //数据端口

    void init_zone0(void)
    {

    SysCtrlRegs.PCLKCR3.bit.XINTFENCLK = 1;

    // Configure the GPIO for XINTF with a 16-bit data bus
    // This function is in DSP2833x_Xintf.c
    InitXintf16Gpio();

    EALLOW;
    // All Zones---------------------------------
    // Timing for all zones based on XTIMCLK = SYSCLKOUT
    XintfRegs.XINTCNF2.bit.XTIMCLK = 0; //XTIMCLK = SYSCLKOUT/1
    // Buffer up to 3 writes
    XintfRegs.XINTCNF2.bit.WRBUFF = 0; //0 writing buffer
    // XCLKOUT is enabled
    XintfRegs.XINTCNF2.bit.CLKOFF = 0; //使能XCLKOUT
    // XCLKOUT = XTIMCLK
    XintfRegs.XINTCNF2.bit.CLKMODE = 0;//XCLKOUT is equal to XTIMCLK

    XintfRegs.XBANK.bit.BCYC = 0; // Add 7 cycles
    XintfRegs.XBANK.bit.BANK = 0; // select zone 0

    // Zone 0------------------------------------
    // When using ready, ACTIVE must be 1 or greater
    // Lead must always be 1 or greater
    // Zone write timing
    XintfRegs.XTIMING0.bit.XWRLEAD = 2;
    XintfRegs.XTIMING0.bit.XWRACTIVE = 4;
    XintfRegs.XTIMING0.bit.XWRTRAIL = 2;
    // Zone read timing
    XintfRegs.XTIMING0.bit.XRDLEAD = 2;
    XintfRegs.XTIMING0.bit.XRDACTIVE = 4;
    XintfRegs.XTIMING0.bit.XRDTRAIL =2;

    // don't double all Zone read/write lead/active/trail timing
    XintfRegs.XTIMING0.bit.X2TIMING = 0;

    // Zone will not sample XREADY signal
    XintfRegs.XTIMING0.bit.USEREADY = 0;
    XintfRegs.XTIMING0.bit.READYMODE = 0;

    // 1,1 = x16 data bus
    // 0,1 = x32 data bus
    // other values are reserved
    XintfRegs.XTIMING0.bit.XSIZE = 3;
    EDIS;

    //Force a pipeline flush to ensure that the write to
    //the last register configured occurs before returning.
    asm(" RPT #7 || NOP");
    }

    int main(void)
    {
    InitSysCtrl();
    DINT;
    InitPieCtrl();
    IER = 0x0000;
    IFR = 0x0000;
    InitPieVectTable();
    init_zone0();
    CH375Dat = 0x12;
    mDelaymS(100 ); /* 延时50ms */

    return 0;
    }

  • (volatile UINT32*) 你用的是x16 data bus,改为UINT16


    执行下面代码的意图是什么,因为CH375Dat = 0x12;执行很快,你用万用表是量不到低电平的,最好用示波器看一下

    int main(void)
    {
    InitSysCtrl();
    DINT;
    InitPieCtrl();
    IER = 0x0000;
    IFR = 0x0000;
    InitPieVectTable();
    init_zone0();
    CH375Dat = 0x12;
    mDelaymS(100 ); /* 延时50ms */

    return 0;
    }


  • 哦,好我等会在用示波器测一下!

    我执行CH375Dat = 0x12 就是想随便往数据总线上写数据(即写入10010)达到访问zone0区域的目的,然后我拿万用表测了D0-D7引脚和XCS0,全部都是高电平,这是不是就是说我连访问zone0区域的目的都没达到,还是它运行太快,我没看到。另外我那些设置访问zone0的代码没有问题吧。  谢谢您了!