打印
[其他ST产品]

710的BSPI问题:请教大虾:

[复制链接]
2033|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
progrime|  楼主 | 2008-1-14 19:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上次香水城说BSPI_BufferReceive能产生CLK时序,我试了不行呀,
沙发
香水城| | 2008-1-14 22:43 | 只看该作者

你是如何试的?

程序呢?

使用特权

评论回复
板凳
progrime|  楼主 | 2008-1-16 09:00 | 只看该作者

这是我读SPI存储器的程序

void FM25L512_ReadMem(u16 FmAdd,u8* Rxbuf,u16 NbOfByte)

  u8 FmReg[4],i;
  FmReg[0]=FM25L512_READ;
  FmReg[1]=FmAdd>>8;
  FmReg[2]=FmAdd;
  IOPort_Set(GPIO2,IO2_NSS,IOPort_OFF);
  DelayNS(100);  
  BSPI_BufferSend(BSPI0,FmReg,3);//写命令和地址
  for(i=0;i<NbOfByte;i++)
  {
    while(BSPI_FlagStatus(BSPI0,0x0008))//在读之前先清FIFO
    {
      BSPI_BufferReceive(BSPI0,&FmReg[3],1);//读数据
    }
    BSPI_BufferSend(BSPI0,&FmReg[3],1);//产生读时序,此时数据在MOSI为无所谓
    DelayNS(100);    
    BSPI_BufferReceive(BSPI0,Rxbuf+i,1);//读数据
  }
  
  DelayNS(100);
  IOPort_Set(GPIO2,IO2_NSS,IOPort_ON);  
}

使用特权

评论回复
地板
progrime|  楼主 | 2008-1-16 09:06 | 只看该作者

BSPI_BufferReceive时我用示波器看了,没有时序产生!

BSPI_BufferReceive时我用示波器看了,没有时序产生!
所以只能用BSPI_BufferSend(BSPI0,&FmReg[3],1);来产生读时序,此时数据在MOSI虽然有数据送出,但是存储器那边是不处理的

使用特权

评论回复
5
香水城| | 2008-1-16 11:02 | 只看该作者

既然你用示波器看了,有没有看到MISO上有数据?

如果没有数据肯定是之前的命令部分有问题。

另外,今天看了一下BSPI_BufferSend的源程序,它不产生时钟,我上次说错了,抱歉。所有库函数的源程序,可以在ST的网站上得到,下载地址http://www.st.com/stonline/products/support/micro/files/str71xfwlib.zip,说明手册下载地址http://www.st.com/stonline/products/literature/um/10780.pdf

在ST的网站上还可以得到STR710演示板的源程序,里面有一个SPI存储器的演示实例,你也可以拿来参考,下载地址http://www.st.com/mcu/files/mcu/1080747744.zip,说明手册下载地址http://www.st.com/mcu/files/mcu/1080810895.pdf

使用特权

评论回复
6
starm| | 2008-1-16 11:03 | 只看该作者

我看到这样一个代码, 可以参考一下

u8 SPI0_ByteSendReceive(u8 data)
{
  u16 wTemp;
  u8 bTemp;

  while(BSPI0->CSR2&SPI_RFNE)
    wTemp = BSPI0->RXR;                 /* Clean Receive FIFO */
  while(!(BSPI0->CSR2&SPI_TFE));        /* Wait until the Transmit FIFO is empty */
  BSPI0->TXR = data<<8;                 /* Send data to Transmit buffer */


  while(!(BSPI0->CSR2&SPI_RFF));       /* Wait until the end of transmission */

  wTemp = (BSPI0->RXR);
  bTemp = wTemp >> 8;                   /* Read the received data */
  return bTemp;
}

使用特权

评论回复
7
progrime|  楼主 | 2008-1-16 15:03 | 只看该作者

谢谢同志们!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

304

帖子

2

粉丝