请问下各位大虾,目前在调试W25Q32,miso引脚没有输出,怎么办?
[复制链接]
主芯片: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); } }
|