新手上路 
 
	- 积分
 - 26
 
        - 金钱
 - 26 
 
       - 注册时间
 - 2022-10-27
 
      - 在线时间
 - 4 小时
 
 
 
 | 
 
1金钱 
抱歉,研究半天没能发出来图片。 
 
uint8_t SPI_FLASH_WriteByte(uint8_t data) 
{ 
        u8 i = 0 
        while(SPI_I2S_GetFlagStatus(SPI_FLASH,SPI_I2S_FLAG_TXE) == RESET) 
        { 
              i++; 
              if(i>200) return 0; 
         }; 
        SPI_I2S_SendData(SPI_FLASH,data); 
        i = 0; 
        while(SPI_I2S_GetFlagStatus(SPI_FLASH,SPI_I2S_FLAG_RXNE) == RESET) 
        { 
              i++; 
              if(i>200) return 0; 
         }; 
        return SPI_I2S_ReceiveData(SPI_FLASH); 
} 
 
 
uint8_t SPI_Get_JEDEC_ID() 
{ 
        u8 rec = 0; 
        SPI_FLASH_CS_LOW; 
        SPI_FLASH_WriteByte(0xAB); 
        SPI_FLASH_WriteByte(DUMMY); 
        SPI_FLASH_WriteByte(DUMMY); 
        SPI_FLASH_WriteByte(DUMMY);         
        return SPI_FLASH_WriteByte(DUMMY); 
 
} 
 
 
这样用串口打印出来的Device ID和手册一样,是0x17; 
 
现在读取JEDEC ID 
uint32_t SPI_Get_JEDEC_ID() 
{ 
        u32 rec = 0; 
        SPI_FLASH_WriteByte(0x9F); 
        rec = SPI_FLASH_WriteByte(DUMMY);//SPI_FLASH_ReceiveByte(); 
        rec <<= 8; 
        rec |= SPI_FLASH_WriteByte(DUMMY);//SPI_FLASH_ReceiveByte(); 
        rec <<= 8; 
        rec |= SPI_FLASH_WriteByte(DUMMY);//SPI_FLASH_ReceiveByte(); 
        SPI_FLASH_CS_HIGH; 
        return rec; 
} 
 
用串口读取的是0x522118,实际手册上应该是0xEF4018,实在费解,希望大佬指点一下,是否是读取方式有问题 
 
 
 
 |   
 
 
 
 
 
 |