打印
[其他ST产品]

不能读出M25P64 寻求帮助

[复制链接]
4184|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
seawwh|  楼主 | 2007-1-9 14:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不能读出M25P64 寻求帮助

  本人使用的调试环境为STR910-EVAL, STR912 CPU, 该板上有一片串行Flash 芯片M25P64,
本人使用SPI0的与其通信,但是不能读出数据,请调通过的大侠给与帮助.

  有示波器观察 MOSI, CLK , CS的波形均正确,但MISO没有任何输出.

  开发板式南京万利的,和原装的基本相同

初始化部分如下:

//  CLK =P5.4   GPIO5, GPIO_Pin_4 , GPIO_PinOutput, GPIO_Type_PushPull, GPIO_IPConnected_Enable , GPIO_OutputAlt2, 
//  MOSI=P5.5   GPIO5, GPIO_Pin_5 , GPIO_PinOutput, GPIO_Type_PushPull, GPIO_IPConnected_Enable , GPIO_OutputAlt2, 
//  MIS0=P5.6   GPIO5, GPIO_Pin_6 , GPIO_PinInput,  GPIO_Type_PushPull, GPIO_IPConnected_Enable , GPIO_InputAlt1 , 
//  CS  =P5.7   GPIO5, GPIO_Pin_7 , GPIO_PinOutput, GPIO_Type_PushPull, GPIO_IPConnected_Disable, GPIO_OutputAlt1, 


  SSP_InitTypeDef SSP_InitStructure;

  SSP_StructInit(&SSP_InitStructure);
  /*********************** For SPI Flash *****************************/
  SSP_InitStructure.SSP_FrameFormat = SSP_FrameFormat_Motorola;
  SSP_InitStructure.SSP_Mode = SSP_Mode_Master;
  SSP_InitStructure.SSP_CPOL = SSP_CPOL_Low;
  SSP_InitStructure.SSP_CPHA = SSP_CPHA_1Edge;
  SSP_InitStructure.SSP_DataSize = SSP_DataSize_16b;
  SSP_InitStructure.SSP_SlaveOutput = SSP_SlaveOutput_Enable;
  SSP_InitStructure.SSP_ClockRate = 0xB;
  SSP_InitStructure.SSP_ClockPrescaler = 12;

  SSP_Init(SSP0, &SSP_InitStructure);
  SSP_Cmd(SSP0,ENABLE);

读出M25P64内部ID的代码如下:

     GPIO_WriteBit(GPIO5,GPIO_Pin_7,Bit_RESET);   // CS=0
     Delay(20);    
     SSP0->DR=0x9F00;                             //  发出读ID命令
     Delay(100);    
     TT=SSP0->DR;                                 //  读出的数据不对
     GPIO_WriteBit(GPIO5,GPIO_Pin_7,Bit_SET);     //  CS=0
沙发
NEOO| | 2007-1-9 17:37 | 只看该作者

买的开发板没有提供实例程序?

我们使用8位的ST95080
初始化
 /* deselect the EEPROM */
  BSPI_EE_ChipSelect(High);

  /* SSP0 configuration */
  SSP_DeInit(SSP0);
  SSP_InitStructure.SSP_FrameFormat = SSP_FrameFormat_Motorola;
  SSP_InitStructure.SSP_Mode = SSP_Mode_Master;
  SSP_InitStructure.SSP_CPOL = SSP_CPOL_High;
  SSP_InitStructure.SSP_CPHA = SSP_CPHA_2Edge;
  SSP_InitStructure.SSP_DataSize = SSP_DataSize_8b;
  SSP_InitStructure.SSP_ClockRate = 2;
  SSP_InitStructure.SSP_ClockPrescaler = 2;
  SSP_Init(SSP0, &SSP_InitStructure);

  SSP_Cmd(SSP0, ENABLE);


读写的程序是

static u8 Send_Byte(u8 byte)
{
  u16 data;
  data = (u16)byte;
  /* send byte through the SSP0 peripheral */
  SSP0->DR = Data;
  
  /* loop while Transmit FIFO is full */
  while(SSP_GetFlagStatus(SSP0,SSP_FLAG_TxFifoNotFull) == RESET);   

  /* loop while Receive FIFO is empty */
  while(SSP_GetFlagStatus(SSP0,SSP_FLAG_RxFifoNotEmpty) == RESET);    
  
  /* return the byte read from the SPI bus */
  return((u8)(SSPx->DR)));       

}

以上程序供参考,谢谢

使用特权

评论回复
板凳
seawwh|  楼主 | 2007-1-9 18:05 | 只看该作者

原因找到了!!!

原来程序没有问题,是南京万利的STR910-EVAL板子上面没有焊M25P64(或者是M25P16),而是装的M25P80.M25P80的容量小而且不支持读出id命令,我用Read Electronic Signature 命令去试验,其内部的Signature=13h 表明这是一片M25P80。
  在南京万利的提供的图纸上,标明是M25P64或者是M25P16。板子上的器件的印字模糊,不能辨认,才导致我多花了4个小时的劳动。

  提请使用STR910-EVAL各位注意!

  谢谢 楼上NEOO 的帮助!

使用特权

评论回复
地板
jie841010| | 2008-12-25 11:30 | 只看该作者

谁有M25P20的驱动程序?

手头上有M25P64的程序,改了改想用在M25P20上却用不了,示波器中CS、DI、CLK中都正确,就DO没数据,不知哪位仁兄能提供下M25P20的程序?

使用特权

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

本版积分规则

145

主题

368

帖子

0

粉丝