请问下各位大虾,目前在调试W25Q32,miso引脚没有输出,怎么办?

2019-03-24 15:36发布

主芯片:lm3S9B92 dataflash:试过W25Q32和W25Q80 SPI时钟:1Mbit 表现如下: 初始化SPI正常,读取ID的值为0xff,用示波器看SCK和mosi都有信号,CS也有,SCK的频率也确实是1Mbit,从而应该可以判断SPI的初始化没有问题。而miso持续为高。MISO上接了10K的上拉电阻。不过因为电阻电阻值比较大,应该不会有那么大的影响。 读取ID的代码如下: 请有经验的大虾帮忙判断一下问题大致在什么地方?     /************************************************************************
** 函数名称:W25X16_RdID                          
** 函数功能:W25X16的读ID函数,可选择读ID和读数据操作    
** 入口参数:
**   idtype IDType:ID类型。用户可在Jedec_ID,Dev_ID,Manu_ID三者里选择
**   uint32* RcvbufPt:存储ID变量的指针
** 出口参数:操作成功则返回OK,失败则返回ERROR  
** 注  意:若填入的参数不符合要求,则返回ERROR
************************************************************************/
uint8 W25X16_RdID(idtype IDType,uint32* RcvbufPt)
{
 uint32 temp = 0;
 if (IDType == Jedec_ID)
 {
  CE_Low(); 
  delay(10000);
  Send_Byte(0x9f);     // 发送读JEDEC ID命令(9Fh)
            
        temp = (temp | Get_Byte()) << 8; // 接收数据
  temp = (temp | Get_Byte()) << 8; 
        temp = (temp | Get_Byte());   // 在本例中,temp的值应为0xEF4015
        CE_High();  
  delay(10000);
  *RcvbufPt = temp;
  return (OK);
 }
 
 if ((IDType == Manu_ID) || (IDType == Dev_ID) )
 {
  CE_Low(); 
  delay(10000);  
  Send_Byte(0x90);    // 发送读ID命令90h
     Send_Byte(0x00);    // 发送地址
  Send_Byte(0x00);    // 发送地址
  Send_Byte(IDType);    // 发送地址 - 不是00H就是01H
  temp = Get_Byte();    // 接收获取的数据字节
  CE_High();  
  delay(10000); 
  *RcvbufPt = temp;
  return (OK);
 }
 else
 {
  return (ERROR); 
 }
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
zxq6
2019-03-25 04:04
谢谢楼上各位,问题解决了,是spi模式没配置对。

一周热门 更多>

相关问题

    相关文章