📄 nandflash_hal.c
字号:
/*
+FHDR------------------------------------------------------------------
Copyright (c),
Tony Yang –51,AVR,ARM firmware developer
Contact:qq 292942278 e-mail:tony_yang123@sina.com.cn
Abstract:
$Id: main.c,v 1.2 2007/04/15 13:18:54 design Exp $
-FHDR-------------------------------------------------------------------
*/
#include<include\NandFlash_cfg.h>
#include<include\types.h>
#include<main.h>
#if compile_the_nandflash_code
/*
;==============================================================================================================
;函数
;Nand Flash HAL(发送CMD)
;入口: cmd:命令代码
;出口:无
;==============================================================================================================
*/
void Nandflash_write_cmd(u8 cmd)
{
_CE = LOW;
CLE = HIGH;
IO_0_7 = cmd;
_WE = LOW;
_WE = HIGH;
CLE = LOW;
//_CE = HIGH;
}
/*
;==============================================================================================================
;函数
;Nand Flash HAL(发送ADDRESS)
;入口: address:地址缓冲区首地址,len:地址长度
;出口:无
;==============================================================================================================
*/
void Nandflash_write_add(u8 *address,u8 len)
{
u8 i;
//_CE = LOW;
ALE = HIGH;
for(i = 0;i < len;i++)
{
IO_0_7 = address[i];
_WE = LOW;
_WE = HIGH;
}
ALE = LOW;
//_CE = HIGH;
}
/*
;==============================================================================================================
;函数
;Nand Flash HAL(发送databyte)
;入口: data_array:发送缓冲区首地址,len:缓冲区长度
;出口:无
;==============================================================================================================
*/
void Nandflash_write_data(u8 *data_array,u16 len)
{
u16 i;
CLE = LOW; //CLE无效
ALE = LOW;
//_CE = LOW;
for(i = 0;i < len;i++)
{
#if __DEBUG
IO_0_7 = data_array[i % 64];
#else
IO_0_7 = data_array[i];
#endif
_WE = LOW;
_WE = HIGH;
}
_CE = HIGH;
}
/*
;==============================================================================================================
;函数
;Nand Flash HAL(接收databyte)
;入口: data_array:接收缓冲区首地址,len:指定接收字节数据
;出口:SUCC
;==============================================================================================================
*/
u8 Nandflash_read_data(u8 *data_array,u16 len)
{
u16 i;
//CLE = LOW; //CLE无效
//ALE = LOW; //ALE无效
IO_0_7 = 0xff;
//_CE = LOW;
for(i = 0;i < len;i++)
{
_RE = LOW;
#if __DEBUG
data_array[i % 64] = IO_0_7;
#else
data_array[i] = IO_0_7;
#endif
_RE = HIGH;
}
_CE = HIGH;
return(SUCC);
}
/*
;==============================================================================================================
;函数
;Nand Flash HAL(WP_Enable)
;入口: nable: 1 - 0xff:WP Enable, 0 - WP Disable
;出口:SUCC
;==============================================================================================================
*/
void Nandflash_WP_Enable(u8 Enable)
{
if (Enable)
_WP = LOW;
else
_WP = HIGH;
}
/*
;==============================================================================================================
;函数
;读NandFlash R/B引脚状态
;入口: 无
;出口:返回NandFlash R/B引脚状态
;==============================================================================================================
*/
u8 NandFlash_Read_pin_rdy_bsy(void)
{
if ( R_B == HIGH)
return(READY);
else
return(BUSY);
}
/*
;==============================================================================================================
;函数
;NandFlash_Init
;入口: 无
;出口:SUCC
;==============================================================================================================
*/
u8 NandFlash_Init(void)
{
_WP = LOW;
_WE = HIGH;
ALE = LOW;
CLE = LOW;
_CE = HIGH;
_RE = HIGH;
R_B = HIGH;
IO_0_7 = 0xff;
return(SUCC);
}
#endif
/*
+FFTR------------------------------------------------------------------------------------------------------------
$Log: nandflash_hal.c,v $
-FFTR------------------------------------------------------------------------------------------------------------
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -