📄 spi_com.h
字号:
#define SUCCESS 0
#define SPI_EEPROM_ERROR 1
#define ONCHIP_EEPROM_ERROR 2
uchar CMD(uchar op_code)
{
uchar temp;
ulong error_count = 0;
SPI2DR = op_code;
temp = SPI2DR;
while(SPI2SR_SPIF == 0)
{
error_count++;
if(error_count >= TIME_OUT)
return SPI_EEPROM_ERROR;//操作超时,返回 SPI_EEPROM_ERROR.
}
return SUCCESS;
}
//连续写,中间需要延时。
uchar Write(uint address,uchar m_data)
{
SS_0;
if(CMD(0x06) != SUCCESS)
return SPI_EEPROM_ERROR;// 写使能
SS_1;
SS_0;
if(CMD(0x02) != SUCCESS)
return SPI_EEPROM_ERROR;// 写命令0x02
if(CMD(address>>8) != SUCCESS)
return SPI_EEPROM_ERROR;// 传输高八位地址
if(CMD(address) != SUCCESS)
return SPI_EEPROM_ERROR;// 传输低八位地址
if(CMD(m_data) != SUCCESS)
return SPI_EEPROM_ERROR;// 传输数据
SS_1;
Delay(1000);//如果进行了2倍频,则需要加上这条延时语句
return SUCCESS;//操作成功,返回SUCCESS.
}
uchar Page_Write(uint address,uchar * p_data,uchar size_of_data)
{
uchar j=0;
SS_0;
if(CMD(0x06) != SUCCESS)
return SPI_EEPROM_ERROR;// 写使能
SS_1;
SS_0;
if(CMD(0x02) != SUCCESS)
return SPI_EEPROM_ERROR;// 写命令0x02
if(CMD(address>>8) != SUCCESS)
return SPI_EEPROM_ERROR;// 传输高八位地址
if(CMD(address) != SUCCESS)
return SPI_EEPROM_ERROR;// 传输低八位地址
for(j=0;j<size_of_data;j++)
if(CMD(p_data[j]) != SUCCESS)
return SPI_EEPROM_ERROR;//传输数据
SS_1;
return SUCCESS;//操作成功,返回SUCCESS.
}
uchar Read(uint address,uchar * read_result)
{
SS_0;
if(CMD(0x03) != SUCCESS)
return SPI_EEPROM_ERROR;// 读命令0x02
if(CMD(address>>8) != SUCCESS)
return SPI_EEPROM_ERROR;// 传输高八位地址
if(CMD(address) != SUCCESS)
return SPI_EEPROM_ERROR;// 传输低八位地址
if(CMD(0) != SUCCESS)
return SPI_EEPROM_ERROR;// 任意启动一个传输,接收数据
SS_1;
Delay(1000);//如果进行了2倍频,则需要加上这条延时语句
*read_result = SPI2DR;
return SUCCESS;//操作成功,返回SUCCESS.
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -