⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spi_com.h

📁 使用MC9S12DP256写的CAN转串口程序。
💻 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 + -