TI中文支持网
TI专业的中文技术问题搜集分享网站

有无 TMS320F28337 D 通过SPI 口 控制MX25l128 的例程?

有无 TMS320F28337 D 通过SPI 口 控制MX25l128 的例程? 我一直读出来的数值是0XFF,不清楚那里错了

  EALLOW;
 GpioCtrlRegs.GPBPUD.bit.GPIO54 = 0;  
    GpioCtrlRegs.GPBQSEL2.bit.GPIO54 = 3; 
    GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 1;

    GpioCtrlRegs.GPBPUD.bit.GPIO55 = 0;  
    GpioCtrlRegs.GPBQSEL2.bit.GPIO55 = 3;
    GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 1;

    GpioCtrlRegs.GPBGMUX2.bit.GPIO60 = 3;
    GpioCtrlRegs.GPBGMUX2.bit.GPIO61 = 3;
    GpioCtrlRegs.GPBPUD.bit.GPIO60 = 0;   
    GpioCtrlRegs.GPBQSEL2.bit.GPIO60 = 3; 
    GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 3;

    GpioCtrlRegs.GPBPUD.bit.GPIO61 = 0;  
    GpioCtrlRegs.GPBQSEL2.bit.GPIO61 = 3;
    GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 3;

    GPIO_SetupPinOptions(133, GPIO_OUTPUT, GPIO_PUSHPULL);
    EDIS;

    GPIO_WritePin(133, 0);//pin WP=0

 /*
     * SPI 模块初始化,使用FIFO查询方式,接收4级缓存,发送16级
     */
    SpiaRegs.SPIFFTX.all=0xE040;

    SpiaRegs.SPIFFRX.all=0x2044;
    SpiaRegs.SPIFFCT.all=0x0;
    /*
     *
     */
    SpiaRegs.***.bit.SPISWRESET =0;    // Reset on, rising edge,
    SpiaRegs.***.bit.*** = 7;//8-bit char bits
    SpiaRegs.***.bit.CLKPOLARITY =1;//
 SpiaRegs.***.all =0x000E;           // Enable master mode, normal phase,
             // enable talk, and SPI int disabled.
 SpiaRegs.SPIBRR =0x004A;                 //LSpclk/74+1=75MHz/75=1M
 SpiaRegs.***.bit.SPISWRESET = 1;           // Relinquish SPI from Reset disable lookback
 SpiaRegs.SPIPRI.bit.FREE = 1;   //debug 调试时,断点正常运行
 /*
  * M25L28 init
  */
 SpiaRegs.SPIFFRX.bit.RXFFINTCLR = 1;
 SpiaRegs.SPITXBUF = Read_RDID;
 SpiaRegs.SPITXBUF = 0xFF;//第2~4个字节具体是什么,手册里面也没有写,不知是不是FF?
 SpiaRegs.SPITXBUF = 0xFF;
 SpiaRegs.SPITXBUF = 0xFF;
 while(SpiaRegs.SPIFFRX.bit.RXFFINT !=1){}

  data[0] = SpiaRegs.SPIRXBUF;//data的值第一个字节为9F,第2~4个字节为FF,和发送的值是一样的,是为什么?
  data[1] = SpiaRegs.SPIRXBUF;
  data[2] = SpiaRegs.SPIRXBUF;
  data[3] = SpiaRegs.SPIRXBUF;
  SpiaRegs.SPIFFRX.bit.RXFFINTCLR = 1;

Jordan Zhou:通信出问题,最好上图,用示波器抓取clk,SIMO和SOMI的波形。利于分析问题。

有无 TMS320F28337 D 通过SPI 口 控制MX25l128 的例程? 我一直读出来的数值是0XFF,不清楚那里错了

  EALLOW;
 GpioCtrlRegs.GPBPUD.bit.GPIO54 = 0;  
    GpioCtrlRegs.GPBQSEL2.bit.GPIO54 = 3; 
    GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 1;

    GpioCtrlRegs.GPBPUD.bit.GPIO55 = 0;  
    GpioCtrlRegs.GPBQSEL2.bit.GPIO55 = 3;
    GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 1;

    GpioCtrlRegs.GPBGMUX2.bit.GPIO60 = 3;
    GpioCtrlRegs.GPBGMUX2.bit.GPIO61 = 3;
    GpioCtrlRegs.GPBPUD.bit.GPIO60 = 0;   
    GpioCtrlRegs.GPBQSEL2.bit.GPIO60 = 3; 
    GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 3;

    GpioCtrlRegs.GPBPUD.bit.GPIO61 = 0;  
    GpioCtrlRegs.GPBQSEL2.bit.GPIO61 = 3;
    GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 3;

    GPIO_SetupPinOptions(133, GPIO_OUTPUT, GPIO_PUSHPULL);
    EDIS;

    GPIO_WritePin(133, 0);//pin WP=0

 /*
     * SPI 模块初始化,使用FIFO查询方式,接收4级缓存,发送16级
     */
    SpiaRegs.SPIFFTX.all=0xE040;

    SpiaRegs.SPIFFRX.all=0x2044;
    SpiaRegs.SPIFFCT.all=0x0;
    /*
     *
     */
    SpiaRegs.***.bit.SPISWRESET =0;    // Reset on, rising edge,
    SpiaRegs.***.bit.*** = 7;//8-bit char bits
    SpiaRegs.***.bit.CLKPOLARITY =1;//
 SpiaRegs.***.all =0x000E;           // Enable master mode, normal phase,
             // enable talk, and SPI int disabled.
 SpiaRegs.SPIBRR =0x004A;                 //LSpclk/74+1=75MHz/75=1M
 SpiaRegs.***.bit.SPISWRESET = 1;           // Relinquish SPI from Reset disable lookback
 SpiaRegs.SPIPRI.bit.FREE = 1;   //debug 调试时,断点正常运行
 /*
  * M25L28 init
  */
 SpiaRegs.SPIFFRX.bit.RXFFINTCLR = 1;
 SpiaRegs.SPITXBUF = Read_RDID;
 SpiaRegs.SPITXBUF = 0xFF;//第2~4个字节具体是什么,手册里面也没有写,不知是不是FF?
 SpiaRegs.SPITXBUF = 0xFF;
 SpiaRegs.SPITXBUF = 0xFF;
 while(SpiaRegs.SPIFFRX.bit.RXFFINT !=1){}

  data[0] = SpiaRegs.SPIRXBUF;//data的值第一个字节为9F,第2~4个字节为FF,和发送的值是一样的,是为什么?
  data[1] = SpiaRegs.SPIRXBUF;
  data[2] = SpiaRegs.SPIRXBUF;
  data[3] = SpiaRegs.SPIRXBUF;
  SpiaRegs.SPIFFRX.bit.RXFFINTCLR = 1;

Seven Han:C2000Ware 提供了器件的驱动程序和库到器件外设示例,:\ti\c2000\C2000Ware_1_00_05_00\device_support\f2837xd\examples\cpu1,为f2837xd例程供参考。

有无 TMS320F28337 D 通过SPI 口 控制MX25l128 的例程? 我一直读出来的数值是0XFF,不清楚那里错了

  EALLOW;
 GpioCtrlRegs.GPBPUD.bit.GPIO54 = 0;  
    GpioCtrlRegs.GPBQSEL2.bit.GPIO54 = 3; 
    GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 1;

    GpioCtrlRegs.GPBPUD.bit.GPIO55 = 0;  
    GpioCtrlRegs.GPBQSEL2.bit.GPIO55 = 3;
    GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 1;

    GpioCtrlRegs.GPBGMUX2.bit.GPIO60 = 3;
    GpioCtrlRegs.GPBGMUX2.bit.GPIO61 = 3;
    GpioCtrlRegs.GPBPUD.bit.GPIO60 = 0;   
    GpioCtrlRegs.GPBQSEL2.bit.GPIO60 = 3; 
    GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 3;

    GpioCtrlRegs.GPBPUD.bit.GPIO61 = 0;  
    GpioCtrlRegs.GPBQSEL2.bit.GPIO61 = 3;
    GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 3;

    GPIO_SetupPinOptions(133, GPIO_OUTPUT, GPIO_PUSHPULL);
    EDIS;

    GPIO_WritePin(133, 0);//pin WP=0

 /*
     * SPI 模块初始化,使用FIFO查询方式,接收4级缓存,发送16级
     */
    SpiaRegs.SPIFFTX.all=0xE040;

    SpiaRegs.SPIFFRX.all=0x2044;
    SpiaRegs.SPIFFCT.all=0x0;
    /*
     *
     */
    SpiaRegs.***.bit.SPISWRESET =0;    // Reset on, rising edge,
    SpiaRegs.***.bit.*** = 7;//8-bit char bits
    SpiaRegs.***.bit.CLKPOLARITY =1;//
 SpiaRegs.***.all =0x000E;           // Enable master mode, normal phase,
             // enable talk, and SPI int disabled.
 SpiaRegs.SPIBRR =0x004A;                 //LSpclk/74+1=75MHz/75=1M
 SpiaRegs.***.bit.SPISWRESET = 1;           // Relinquish SPI from Reset disable lookback
 SpiaRegs.SPIPRI.bit.FREE = 1;   //debug 调试时,断点正常运行
 /*
  * M25L28 init
  */
 SpiaRegs.SPIFFRX.bit.RXFFINTCLR = 1;
 SpiaRegs.SPITXBUF = Read_RDID;
 SpiaRegs.SPITXBUF = 0xFF;//第2~4个字节具体是什么,手册里面也没有写,不知是不是FF?
 SpiaRegs.SPITXBUF = 0xFF;
 SpiaRegs.SPITXBUF = 0xFF;
 while(SpiaRegs.SPIFFRX.bit.RXFFINT !=1){}

  data[0] = SpiaRegs.SPIRXBUF;//data的值第一个字节为9F,第2~4个字节为FF,和发送的值是一样的,是为什么?
  data[1] = SpiaRegs.SPIRXBUF;
  data[2] = SpiaRegs.SPIRXBUF;
  data[3] = SpiaRegs.SPIRXBUF;
  SpiaRegs.SPIFFRX.bit.RXFFINTCLR = 1;

user4329368:

回复 Seven Han:

这个软件需要花钱购买吧?

有无 TMS320F28337 D 通过SPI 口 控制MX25l128 的例程? 我一直读出来的数值是0XFF,不清楚那里错了

  EALLOW;
 GpioCtrlRegs.GPBPUD.bit.GPIO54 = 0;  
    GpioCtrlRegs.GPBQSEL2.bit.GPIO54 = 3; 
    GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 1;

    GpioCtrlRegs.GPBPUD.bit.GPIO55 = 0;  
    GpioCtrlRegs.GPBQSEL2.bit.GPIO55 = 3;
    GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 1;

    GpioCtrlRegs.GPBGMUX2.bit.GPIO60 = 3;
    GpioCtrlRegs.GPBGMUX2.bit.GPIO61 = 3;
    GpioCtrlRegs.GPBPUD.bit.GPIO60 = 0;   
    GpioCtrlRegs.GPBQSEL2.bit.GPIO60 = 3; 
    GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 3;

    GpioCtrlRegs.GPBPUD.bit.GPIO61 = 0;  
    GpioCtrlRegs.GPBQSEL2.bit.GPIO61 = 3;
    GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 3;

    GPIO_SetupPinOptions(133, GPIO_OUTPUT, GPIO_PUSHPULL);
    EDIS;

    GPIO_WritePin(133, 0);//pin WP=0

 /*
     * SPI 模块初始化,使用FIFO查询方式,接收4级缓存,发送16级
     */
    SpiaRegs.SPIFFTX.all=0xE040;

    SpiaRegs.SPIFFRX.all=0x2044;
    SpiaRegs.SPIFFCT.all=0x0;
    /*
     *
     */
    SpiaRegs.***.bit.SPISWRESET =0;    // Reset on, rising edge,
    SpiaRegs.***.bit.*** = 7;//8-bit char bits
    SpiaRegs.***.bit.CLKPOLARITY =1;//
 SpiaRegs.***.all =0x000E;           // Enable master mode, normal phase,
             // enable talk, and SPI int disabled.
 SpiaRegs.SPIBRR =0x004A;                 //LSpclk/74+1=75MHz/75=1M
 SpiaRegs.***.bit.SPISWRESET = 1;           // Relinquish SPI from Reset disable lookback
 SpiaRegs.SPIPRI.bit.FREE = 1;   //debug 调试时,断点正常运行
 /*
  * M25L28 init
  */
 SpiaRegs.SPIFFRX.bit.RXFFINTCLR = 1;
 SpiaRegs.SPITXBUF = Read_RDID;
 SpiaRegs.SPITXBUF = 0xFF;//第2~4个字节具体是什么,手册里面也没有写,不知是不是FF?
 SpiaRegs.SPITXBUF = 0xFF;
 SpiaRegs.SPITXBUF = 0xFF;
 while(SpiaRegs.SPIFFRX.bit.RXFFINT !=1){}

  data[0] = SpiaRegs.SPIRXBUF;//data的值第一个字节为9F,第2~4个字节为FF,和发送的值是一样的,是为什么?
  data[1] = SpiaRegs.SPIRXBUF;
  data[2] = SpiaRegs.SPIRXBUF;
  data[3] = SpiaRegs.SPIRXBUF;
  SpiaRegs.SPIFFRX.bit.RXFFINTCLR = 1;

user4329368:MX25l128 的手册上有图,但是没指明具体的值。

有无 TMS320F28337 D 通过SPI 口 控制MX25l128 的例程? 我一直读出来的数值是0XFF,不清楚那里错了

  EALLOW;
 GpioCtrlRegs.GPBPUD.bit.GPIO54 = 0;  
    GpioCtrlRegs.GPBQSEL2.bit.GPIO54 = 3; 
    GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 1;

    GpioCtrlRegs.GPBPUD.bit.GPIO55 = 0;  
    GpioCtrlRegs.GPBQSEL2.bit.GPIO55 = 3;
    GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 1;

    GpioCtrlRegs.GPBGMUX2.bit.GPIO60 = 3;
    GpioCtrlRegs.GPBGMUX2.bit.GPIO61 = 3;
    GpioCtrlRegs.GPBPUD.bit.GPIO60 = 0;   
    GpioCtrlRegs.GPBQSEL2.bit.GPIO60 = 3; 
    GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 3;

    GpioCtrlRegs.GPBPUD.bit.GPIO61 = 0;  
    GpioCtrlRegs.GPBQSEL2.bit.GPIO61 = 3;
    GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 3;

    GPIO_SetupPinOptions(133, GPIO_OUTPUT, GPIO_PUSHPULL);
    EDIS;

    GPIO_WritePin(133, 0);//pin WP=0

 /*
     * SPI 模块初始化,使用FIFO查询方式,接收4级缓存,发送16级
     */
    SpiaRegs.SPIFFTX.all=0xE040;

    SpiaRegs.SPIFFRX.all=0x2044;
    SpiaRegs.SPIFFCT.all=0x0;
    /*
     *
     */
    SpiaRegs.***.bit.SPISWRESET =0;    // Reset on, rising edge,
    SpiaRegs.***.bit.*** = 7;//8-bit char bits
    SpiaRegs.***.bit.CLKPOLARITY =1;//
 SpiaRegs.***.all =0x000E;           // Enable master mode, normal phase,
             // enable talk, and SPI int disabled.
 SpiaRegs.SPIBRR =0x004A;                 //LSpclk/74+1=75MHz/75=1M
 SpiaRegs.***.bit.SPISWRESET = 1;           // Relinquish SPI from Reset disable lookback
 SpiaRegs.SPIPRI.bit.FREE = 1;   //debug 调试时,断点正常运行
 /*
  * M25L28 init
  */
 SpiaRegs.SPIFFRX.bit.RXFFINTCLR = 1;
 SpiaRegs.SPITXBUF = Read_RDID;
 SpiaRegs.SPITXBUF = 0xFF;//第2~4个字节具体是什么,手册里面也没有写,不知是不是FF?
 SpiaRegs.SPITXBUF = 0xFF;
 SpiaRegs.SPITXBUF = 0xFF;
 while(SpiaRegs.SPIFFRX.bit.RXFFINT !=1){}

  data[0] = SpiaRegs.SPIRXBUF;//data的值第一个字节为9F,第2~4个字节为FF,和发送的值是一样的,是为什么?
  data[1] = SpiaRegs.SPIRXBUF;
  data[2] = SpiaRegs.SPIRXBUF;
  data[3] = SpiaRegs.SPIRXBUF;
  SpiaRegs.SPIFFRX.bit.RXFFINTCLR = 1;

mangui zhang:

看看spi的时钟最高频率。有没有超

片选是否正常 最好抓波形看看

有无 TMS320F28337 D 通过SPI 口 控制MX25l128 的例程? 我一直读出来的数值是0XFF,不清楚那里错了

  EALLOW;
 GpioCtrlRegs.GPBPUD.bit.GPIO54 = 0;  
    GpioCtrlRegs.GPBQSEL2.bit.GPIO54 = 3; 
    GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 1;

    GpioCtrlRegs.GPBPUD.bit.GPIO55 = 0;  
    GpioCtrlRegs.GPBQSEL2.bit.GPIO55 = 3;
    GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 1;

    GpioCtrlRegs.GPBGMUX2.bit.GPIO60 = 3;
    GpioCtrlRegs.GPBGMUX2.bit.GPIO61 = 3;
    GpioCtrlRegs.GPBPUD.bit.GPIO60 = 0;   
    GpioCtrlRegs.GPBQSEL2.bit.GPIO60 = 3; 
    GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 3;

    GpioCtrlRegs.GPBPUD.bit.GPIO61 = 0;  
    GpioCtrlRegs.GPBQSEL2.bit.GPIO61 = 3;
    GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 3;

    GPIO_SetupPinOptions(133, GPIO_OUTPUT, GPIO_PUSHPULL);
    EDIS;

    GPIO_WritePin(133, 0);//pin WP=0

 /*
     * SPI 模块初始化,使用FIFO查询方式,接收4级缓存,发送16级
     */
    SpiaRegs.SPIFFTX.all=0xE040;

    SpiaRegs.SPIFFRX.all=0x2044;
    SpiaRegs.SPIFFCT.all=0x0;
    /*
     *
     */
    SpiaRegs.***.bit.SPISWRESET =0;    // Reset on, rising edge,
    SpiaRegs.***.bit.*** = 7;//8-bit char bits
    SpiaRegs.***.bit.CLKPOLARITY =1;//
 SpiaRegs.***.all =0x000E;           // Enable master mode, normal phase,
             // enable talk, and SPI int disabled.
 SpiaRegs.SPIBRR =0x004A;                 //LSpclk/74+1=75MHz/75=1M
 SpiaRegs.***.bit.SPISWRESET = 1;           // Relinquish SPI from Reset disable lookback
 SpiaRegs.SPIPRI.bit.FREE = 1;   //debug 调试时,断点正常运行
 /*
  * M25L28 init
  */
 SpiaRegs.SPIFFRX.bit.RXFFINTCLR = 1;
 SpiaRegs.SPITXBUF = Read_RDID;
 SpiaRegs.SPITXBUF = 0xFF;//第2~4个字节具体是什么,手册里面也没有写,不知是不是FF?
 SpiaRegs.SPITXBUF = 0xFF;
 SpiaRegs.SPITXBUF = 0xFF;
 while(SpiaRegs.SPIFFRX.bit.RXFFINT !=1){}

  data[0] = SpiaRegs.SPIRXBUF;//data的值第一个字节为9F,第2~4个字节为FF,和发送的值是一样的,是为什么?
  data[1] = SpiaRegs.SPIRXBUF;
  data[2] = SpiaRegs.SPIRXBUF;
  data[3] = SpiaRegs.SPIRXBUF;
  SpiaRegs.SPIFFRX.bit.RXFFINTCLR = 1;

Jordan Zhou:

回复 user4329368:

你的代码读取数据一直是0xFF,这个错误是可以通过示波器波形图分析的。而不是芯片手册上的说明图。

赞(0)
未经允许不得转载:TI中文支持网 » 有无 TMS320F28337 D 通过SPI 口 控制MX25l128 的例程?
分享到: 更多 (0)