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

📄 flash.c

📁 ZIGBEE 2006协议栈 BAT测试代码 RADIO PULSE MG2455
💻 C
字号:
/*******************************************************************************
	- Chip		: MG24500/55
	- Author		: RadioPulse Inc, 2007.
	- Date		: 2007-07-02
	- Version		: VER 1.0	
*******************************************************************************/


/****************************************************************
	MG245X Embedded FLASH

	+ Memory Size : 96KB + 1KB
	+ Page Size : 512 Bytes
	+ Erase Unit : 512 Bytes
	+ Bank Structure
		Bank0   	: 0x0000 ~ 0x7FFF
		Bank1	: 0x8000 ~ 0xFFFF
		Bank2 	: 0x8000 ~ 0xFFFF
		Bank3   	: Reserved as 0
		Bank4   	: 0x8000 ~ 0x8400
****************************************************************/


#include "INCLUDE_TOP.h"


void ZHAL_FLASH_PAGE_ERASE(UINT16 FlashWordAddr)
{
	xFCN_NOWAIT = 0x00;

	while(xFCN_STS0 & 0x01);

	_nop_();
	_nop_();
	_nop_();
	_nop_();

	xFCN_ADR0 = FlashWordAddr & 0xFF;
	xFCN_ADR1 = (FlashWordAddr>>8);
	xFCN_LEN1 = 0;
	xFCN_LEN0 = 1;
	xFCN_CMD = 0x02;	// Page Erase

	_nop_();
	_nop_();
	_nop_();
	_nop_();

	while(xFCN_STS0 & 0x01);

}

// 512 Byte Addr Write
void ZHAL_FLASH_PAGE_WRITE(UINT16 CodeAddr, UINT8 *pByteBuf)
{
	UINT16 	i;
	UINT16	len;
	UINT16	dst;

	UINT16	FlashWordAddr;

	FlashWordAddr = CodeAddr >> 2;	// FlashWordAddr = CodeAddr / 4

//
//	STEP-1 : CLOCK STALL OFF
//
	xFCN_NOWAIT = 0x00;

	xFCN_LEN0 = 0x01;
	xFCN_LEN1 = 0x00;
	
//
//	STEP-2 : Erase Page
//

	ZHAL_FLASH_PAGE_ERASE(FlashWordAddr);

//
//	STEP-3 : IDLE CHECK
//
	while(xFCN_STS0&0x01);	

//
//	STEP-4 : PAGE WRITE
//
	i = 0;
	dst = FlashWordAddr;
	len = 512/4;

	while(len)
	{
		xFCN_ADR0 = dst & 0xFF;
		xFCN_ADR1 = (dst>>8);

		xFCN_DAT3 = pByteBuf[i+3];
		xFCN_DAT2 = pByteBuf[i+2];
		xFCN_DAT1 = pByteBuf[i+1];
		xFCN_DAT0 = pByteBuf[i+0];

		xFCN_CMD  = 0x01;
		
		_nop_();
		_nop_();
		_nop_();
		_nop_();

		i   += 4; 		/* byte addr */
		dst += 1; 	/* word addr */
		len -= 1; 	/* word wlen */
	}

	while(xFCN_STS0 & 0x01);
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -