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

📄 ecc.c

📁 AT91SAM 系列微控制器的NAND Flash支持代码 描述怎样将NAND Flash和AT91SAM 系列微控制器连接起来。
💻 C
字号:
//  ----------------------------------------------------------------------------
 //          ATMEL Microcontroller Software Support  -  ROUSSET  -
 //  ----------------------------------------------------------------------------
 //  DISCLAIMER:  THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
 //  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 //  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
 //  DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
 //  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 //  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 //  OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 //  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 //  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 //  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 //  ----------------------------------------------------------------------------
//*-------------------------------------------------------------------------
//* File Name           : ECC.c
//* Object              : ECC Controller management
//* Creation            : GGI   17/Jul/2006
//*-------------------------------------------------------------------------
#ifdef CONFIG_NAND_ECC

#include "AT91SAM9260.h"
#include "lib_AT91SAM9260.h"


void AT91F_ECC_Init(void){
	//reset
	*AT91C_HECC_CR = AT91C_ECC_RST;
  	// page size = 2112
  	*AT91C_HECC_MR = 2;
  	
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_Check_ECC
//* \brief checks ECC status and returns bit error
//*----------------------------------------------------------------------------

unsigned short AT91F_Check_ECC(unsigned short *e_a){
	unsigned short ecc_status = *AT91C_HECC_SR;
	
	switch(ecc_status){
		case AT91C_ECC_RECERR:
			e_a[0] = *AT91C_HECC_PR & AT91C_ECC_WORDADDR;
			e_a[1] = *AT91C_HECC_PR & AT91C_ECC_BITADDR;
			break;
		case AT91C_ECC_ECCERR:
		case AT91C_ECC_MULERR:
			e_a[0] = 0;
			e_a[1] = 0;
			break;
		default:
			break;
	}
  	return ecc_status;
}



#endif

⌨️ 快捷键说明

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