有谁用过w25q128芯片?为什么我用原子的W25Q64程序读出id全是0XFFFF

2019-07-21 01:31发布

我的管脚接法和原子一样的直接接到SPI2特殊功能引脚上去了!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
24条回答
MoQinchuan
2019-07-23 10:18
正点原子 发表于 2014-1-19 12:49
Q128读ID是0XFFFF?

不是用原子哥的程序,但是程序在开发板上的EN25Q64用得了,然而换到自己板子上,只是换了FLASH_CS,换成了W25Q64(地址改成了EF14),就用不了了......

/* ¶¨òåFLASH ê1óÃμÄIO¿ú */
#define FLASH_CS_SET GPIO_SetBits(GPIOB, GPIO_Pin_12)
#define FLASH_CS_CLR GPIO_ResetBits(GPIOB, GPIO_Pin_12)
/*#define FLASH_CS_CLR {GPIO_ResetBits(GPIOG, GPIO_Pin_13);
GPIO_SetBits(GPIOG, GPIO_Pin_14);GPIO_SetBits(GPIOB, GPIO_Pin_12);}*/

/* ¶¨òå¸÷¸öFLASHμÄID */
#define EN25Q80         0X1C13        
#define EN25Q16         0X1C14
#define EN25Q32         0X1C15
//#define EN25Q64         0X1C16
#define EN25Q64         0Xc816
#define W25Q64                 0XEF16


u16 FLASH_ReadID(void)
{
        u16 ID = 0;
       
        FLASH_CS_CLR;                                                                    //′ò¿aƬѡ
       
        SPI2_WriteReadData(0x90);                                                        //·¢Ëí¶áè¡IDÃüáî            
        SPI2_WriteReadData(0x00);             
        SPI2_WriteReadData(0x00);             
        SPI2_WriteReadData(0x00);

        ID |= SPI2_WriteReadData(0xFF) << 8;         //&#182;áè&#161;16&#206;&#187;ID
        ID |= SPI2_WriteReadData(0xFF);
                 
        FLASH_CS_SET;                                                                                                         //1&#216;±&#213;&#198;&#172;&#209;&#161;   
        return ID;       
}

void CheckFlash(void)
{
        u16 FID;
        FID = FLASH_ReadID();
        while(FID != EN25Q64)                                                                                                                                                                                       
  {
                USART_SendData(USART1,(u8)(FID>>8));
                while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET){}
                USART_SendData(USART1,(u8)(FID));
                while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET){}
                FID = FLASH_ReadID();
  }
}

一周热门 更多>