初级会员

- 积分
- 64
- 金钱
- 64
- 注册时间
- 2016-12-22
- 在线时间
- 15 小时
|
发表于 2017-1-6 20:57:01
|
显示全部楼层
不是用原子哥的程序,但是程序在开发板上的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; //¶áè¡16λID
ID |= SPI2_WriteReadData(0xFF);
FLASH_CS_SET; //1رÕƬѡ
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();
}
} |
|