Ejemplo n.º 1
0
/*---------------------------------------------------------------------------------
* Function Name  : Flash_EraseSector
* Description    : Erase a sector
* Input          : u32int_t SectorAddress
* Output         : None
* Return         : None
* Attention  : None
*---------------------------------------------------------------------------------*/
void Flash_PageWrite(u8 *pBuffer,u32 PageAddress,u16 WriteByteNum)
{
    Flash_Write_Enable();
    
    Flash_CS_Low;
    
    Flash_SendByte(0x02);
    Flash_SendByte(PageAddress >> 16);
    Flash_SendByte(PageAddress >> 8);
    Flash_SendByte(PageAddress);
      
    if(WriteByteNum > 256)  //the biggest num is 256
    {
        WriteByteNum = 256;
    }
     
    while(WriteByteNum--)
    {
        Flash_SendByte(*pBuffer);
        pBuffer++;
    }
     
    Flash_CS_High;

    Flash_WaitWriteEnd();
}
Ejemplo n.º 2
0
void Flash_WriteBytes(uint32_t data_addr, uint8_t* ptdata, uint16_t count)
{
	uint8_t Data_Addr_H;
	uint8_t Data_Addr_M;
	uint8_t Data_Addr_L;

	Data_Addr_H = (uint8_t)((data_addr&0xff0000)>>16);//(uint8_t)(((data_addr*0x10000)&0x00ff0000)>>16);
	Data_Addr_M = (uint8_t)((data_addr&0xff00)>>8);//(uint8_t)(((data_addr*0x10000)&0x0000ff00)>>8);
	Data_Addr_L = (uint8_t)(data_addr&0xff);//(uint8_t)((data_addr*0x10000)&0x000000ff);	

	Flash_Write_Enable();
	FLASH_ENABLE;
	SPI2_WriteRead_Data(SPI_Flash_Page_Program);
	SPI2_WriteRead_Data(Data_Addr_H);
	SPI2_WriteRead_Data(Data_Addr_M);
	SPI2_WriteRead_Data(Data_Addr_L);

	for(;count!=0;count--)
	{
		SPI2_WriteRead_Data(*(ptdata++));
	}
	//HAL_SPI_TransmitReceive(&hspi2,ptdata,r_buffer,count,1000);

	FLASH_DISABLE;	

	while(Flash_Read_Status_Register()&C_Flash_Busy != RESET);	
}
Ejemplo n.º 3
0
void Flash_Chip_Erase(void)
{
	Flash_Write_Enable();
	FLASH_ENABLE;
	SPI2_WriteRead_Data(SPI_Flash_Chip_Erase);
	FLASH_DISABLE;	
	
	while(Flash_Read_Status_Register()&C_Flash_Busy != RESET);	
}
Ejemplo n.º 4
0
void Flash_EraseChip(void)
{
    Flash_Write_Enable();
    
    Flash_CS_Low;

    Flash_SendByte(0x60);
     
    Flash_CS_High;

    Flash_WaitWriteEnd();
}
Ejemplo n.º 5
0
/*---------------------------------------------------------------------------------
* Function Name  : Flash_EraseBlock
* Description    : Erase a Block
* Input          : u32int_t BlockAddress
* Output         : None
* Return         : None
* Attention  : None
*---------------------------------------------------------------------------------*/
void Flash_EraseBlock(u32 BlockAddress)
{
    Flash_Write_Enable();
    
    Flash_CS_Low;

    Flash_SendByte(0xD8);
    Flash_SendByte(BlockAddress >> 16);
    Flash_SendByte(BlockAddress >> 8);
    Flash_SendByte(BlockAddress);
     
    Flash_CS_High;

    Flash_WaitWriteEnd();
}
Ejemplo n.º 6
0
/*---------------------------------------------------------------------------------
* Function Name  : Flash_EraseSector
* Description    : Erase a sector
* Input          : u32int_t SectorAddress
* Output         : None
* Return         : one byte
* Attention  : None
*---------------------------------------------------------------------------------*/
void Flash_EraseSector(u32 SectorAddress)
{
    Flash_Write_Enable();
    
    Flash_CS_Low;
    
    Flash_SendByte(0x20);
    Flash_SendByte(SectorAddress>>16);
    Flash_SendByte(SectorAddress>>8);
    Flash_SendByte(SectorAddress);

    Flash_CS_High;
     
    Flash_WaitWriteEnd();
}
Ejemplo n.º 7
0
void Flash_Block_Erase(uint16_t Block_idx)
{
	uint8_t Block_Addr_H;
	uint8_t Block_Addr_M;
	uint8_t Block_Addr_L;

	Block_Addr_H = (uint8_t)(((Block_idx*0x10000)&0x00ff0000)>>16);
	Block_Addr_M = 0x00;
	Block_Addr_L = 0x00;

	Flash_Write_Enable();
	FLASH_ENABLE;
	SPI2_WriteRead_Data(SPI_Flash_Block_Erase);
	SPI2_WriteRead_Data(Block_Addr_H);
	SPI2_WriteRead_Data(Block_Addr_M);
	SPI2_WriteRead_Data(Block_Addr_L);
	FLASH_DISABLE;	
	
	while(Flash_Read_Status_Register()&C_Flash_Busy != RESET);	
}
Ejemplo n.º 8
0
void Flash_WriteByte(uint32_t data_addr, uint8_t data)
{
	uint8_t Data_Addr_H;
	uint8_t Data_Addr_M;
	uint8_t Data_Addr_L;

	Data_Addr_H = (uint8_t)((data_addr&0xff0000)>>16);//(uint8_t)(((data_addr*0x10000)&0x00ff0000)>>16);
	Data_Addr_M = (uint8_t)((data_addr&0xff00)>>8);//(uint8_t)(((data_addr*0x10000)&0x0000ff00)>>8);
	Data_Addr_L = (uint8_t)(data_addr&0xff);//(uint8_t)((data_addr*0x10000)&0x000000ff);	

	Flash_Write_Enable();
	FLASH_ENABLE;
	SPI2_WriteRead_Data(SPI_Flash_Page_Program);
	SPI2_WriteRead_Data(Data_Addr_H);
	SPI2_WriteRead_Data(Data_Addr_M);
	SPI2_WriteRead_Data(Data_Addr_L);
	SPI2_WriteRead_Data(data);
	FLASH_DISABLE;	

	while(Flash_Read_Status_Register()&C_Flash_Busy != RESET);
}