S3C2440裸机------NandFlash编程_芯片id读取

最新更新时间:2021-11-16来源: eefocus 手机看文章 扫描二维码
随时随地手机看文章

1.芯片id读取时序图

我们先看一下NandFlash芯片手册中读取id的时序图,后面我们要根据这个时序图去写代码。

2.使能芯片

从前面的时序图我们可以看出,我们首先要发出片选信号,我们通过设置下图寄存器的Reg_nCE位来进行设置,

void nand_select(void)

{

/*使能片选*/

NFCONT &=~(1<<1);

}

 

void nand_deselect(void)

{

/*禁止片选*/

NFCONT |= (1<<1);

}


3.发送命令函数

我们从最前面的时序图可以看到,要想读取设备id,首先要向NandFlash发送90命令,然后相应的CLE和WE信号要使能,这里的时序不需要我们管,我们只需要往命令寄存器写值即可,NandFlash控制器会为我们做好相应的时序。


void nand_cmd(unsigned char cmd)

{

volatile int i;

NFCCMD = cmd;

for(i=0; i<10; i++);

}


4.发送地址函数

void nand_addr_byte(unsigned char addr)

{

volatile int i;

NFADDR = addr;

for(i=0; i<10; i++);

}


5.读数据函数

unsigned char nand_data(void)

{

return NFDATA;

}


6.完整代码

#include "s3c2440_soc.h"

#include "my_printf.h"

 

void nand_init(void)

{

#define  TACLS   0

#define  TWRPH0  1

#define  TWRPH1  0

/*设置NAND FLASH的时序*/

NFCONF = (TACLS<<12) | (TWRPH0<<8) | (TWRPH1<<4);

/*使能NAND FLASH控制器,初始化ECC,禁止片选*/

NFCONT = (1<<4) | (1<<1) | (1<<0);

}

 

void nand_select(void)

{

/*使能片选*/

NFCONT &=~(1<<1);

}

 

void nand_deselect(void)

{

/*禁止片选*/

NFCONT |= (1<<1);

}

 

void nand_cmd(unsigned char cmd)

{

volatile int i;

NFCCMD = cmd;

for(i=0; i<10; i++);

}

 

void nand_addr_byte(unsigned char addr)

{

volatile int i;

NFADDR = addr;

for(i=0; i<10; i++);

}

 

unsigned char nand_data(void)

{

return NFDATA;

}

 

void nand_chip_id(void)

unsigned char buf[5]={0};

nand_select(); 

nand_cmd(0x90);

nand_addr_byte(0x00);

 

buf[0] = nand_data();

buf[1] = nand_data();

buf[2] = nand_data();

buf[3] = nand_data();

buf[4] = nand_data();

nand_deselect();

 

printf("maker   id  = 0x%xnr",buf[0]);

printf("device  id  = 0x%xnr",buf[1]);

printf("3rd byte    = 0x%xnr",buf[2]);

printf("4th byte    = 0x%xnr",buf[3]);

printf("page  size  = %d kbnr",1  <<  (buf[3] & 0x03));

printf("block size  = %d kbnr",64 << ((buf[3] >> 4) & 0x03));

printf("5th byte    = 0x%xnr",buf[4]);

 

}

 

 

void nand_flash_test(void)

{

char c;

 

while (1)

{

/* 打印菜单, 供我们选择测试内容 */

printf("[s] Scan nand flashnr");

printf("[e] Erase nand flashnr");

printf("[w] Write nand flashnr");

printf("[r] Read nand flashnr");

printf("[q] quitnr");

printf("Enter selection: ");

 

c = getchar();

printf("%cnr", c);

 

/* 测试内容:

* 1. 识别nand flash

* 2. 擦除nand flash某个扇区

* 3. 编写某个地址

* 4. 读某个地址

*/

switch (c)  

{

case 'q':

case 'Q':

return;

break;

case 's':

case 'S':

nand_chip_id();

break;

 

case 'e':

case 'E':

break;

 

case 'w':

case 'W':

break;

 

case 'r':

case 'R':

break;

default:

break;

}

}

}

编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic549960.html

上一篇:S3C2440裸机------NandFlash编程_数据读取
下一篇:S3C2440裸机------NandFlash编程_时序及初始化

推荐阅读

s3c2440裸机触摸屏
1.0、触摸屏与LCD触摸屏与lcd是两个独立的屏,但是他们之间有对应关系,简单的说就是一个触摸屏的坐标点对应lcd的一个像素点,这样当我们按下触摸屏后,系统通过计算得到该地方的坐标,然后通过对应关系找到相应位置的lcd显示的内容。因为触摸屏和lcd是独立的,总是因为一些物理的原因会有一些位置上的改变,所以这种对应关系不是不变的,我们可以通过开机的时候的校验来确定这种关系,比如LCD上每个点PD的坐标为[XD,YD],触摸屏上每个点PT的坐标为[XT,YT]。要实现触摸屏上的坐标转换为LCD上的坐标,需要下列公式进行转换:XD=A×XT+B×YT+CYD=D×XT+E×YT+F这样我们只有确定了ABCDEF六个参数我们就可以确定这种
发表于 2022-05-19
从0开始学Keil下的S3C2440裸机开发-2使用外部SDRAM
和使用内部RAM一样,关键设置分散加载文件,同时设置JLINK初始化配置文件。1、新增工程配置组。2设置分散加载组3设置ini文件Ext_Ram内容:FUNC void SetupForStart (void) {// <o> Program Entry Point PC = 0x30000000;}FUNC void Init (void) { _WDWORD(0x4A000008, 0xFFFFFFFF); // Disable All Interrupts _WDWORD(0x53000000, 0x00000000); // Disable Watchdog Timer
发表于 2022-05-12
从0开始学Keil下的<font color='red'>S3C2440</font><font color='red'>裸机</font>开发-2使用外部SDRAM
【补充】s3c2440启动过程详细分析
2440启动过程算是一个难点,不太容易理解,而对于2440启动过程的理解,影响了后面裸机代码执行流程的分析,从而看出2440启动过程的重要性。2440启动方式和启动方式选择在S3C2440的datasheet《S3C2440A_UserManual_Rev13.pdf》中搜索map,可以在第5章(P195)中搜索到下图。从此图中,可以得知OM[1:0] = 01,10,Not using NAND flash for boot ROMOM[1:0] = 00, Using NAND flash for boot ROM而OM[1:0]又是什么呢?从S3C2440的datasheet《S3C2440A_UserManual_Rev13
发表于 2022-04-06
【补充】<font color='red'>s3c2440</font>启动过程详细分析
[ARM裸机程序][8]ARM处理器启动流程(S3C2440)
ARM处理器启动流程S3C2440支持启动方式:1. NorFlash启动2. NandFlash启动当处理器上电时,会自动从0地址处取第一条指令开始运行。左边为当选择NorFlash启动时地址的布局,右边为当选择NandFlash启动时地址的布局。NandFlash不像NorFlash一样参与统一编址,CPU不能直接访问其内容。NandFlash启动模式时,0地址处为Boot SRAM片内RAM大小4KB,Boot SRAM也称stepping stone。CPU上电后第一条指令从stepping stone获取,CPU会提前把NandFlash最前端的4KB内容复制到stepping stone(硬件自动完成)。CPU间接运行N
发表于 2022-03-03
[ARM<font color='red'>裸机</font>程序][8]ARM处理器启动流程(<font color='red'>S3C2440</font>)
韦东山ARM裸机学习笔记——S3C2440的串口驱动编程原理
前言讲解韦东山JZ2440开发板的串口驱动原理,对韦东山在维基教程串口使用内容的一些补充,串口使用点击这里进入。这里主要讲的是串口驱动的编程思路,如何根据s3c2440的芯片手册编写出最简单的串口驱动。一、串口的初始化串口初始化包括引脚初始化、串口时钟初始化和中断模式、波特率配置以及参数配置等。1、引脚初始化(1)看JZ2440开发板的原理图,可知UART0的引脚是GPH2(TXD0)和GPH3(RXD0)。(2)到s3c2440芯片手册295页,看GPHCON(GPH控制寄存器),可以需要把GPH2也就是GPHCON[5:4]配置为10,GPH3也就是GPHCON[7:6]配置为10。(3)配置引脚为内部上拉,然引脚初始时为高电平
发表于 2022-03-03
韦东山ARM<font color='red'>裸机</font>学习笔记——<font color='red'>S3C2440</font>的串口驱动<font color='red'>编程</font>原理
十四、S3C2440 裸机 — MMU
14.1 MMU介绍14.1.1 MMU 特性  内存管理单元(Memory Management Unit)简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。现在的多用户多进程操作系统通过MMU 使得各个用户进程都拥有自己独立的地址空间。  地址映射功能使得各进程拥有“看起来”一样的地址空间,内存访问权限的检查可以保护每个进程所用的内存不会被其他进程破坏。  S3C2440/2410 有如下特性:与 ARM V4 兼容的映射长度、域、访问权限检查机制4种映射长度:段(1MB)、大页(64KB)、小页(4KB)、极小页(1KB)对每段都可以设置访问权限大页、小页的每个子页(sub-page,即被映射页的
发表于 2022-03-03
十四、<font color='red'>S3C2440</font> <font color='red'>裸机</font> — MMU

推荐帖子

LPC1114学习之定时器
LPC1114学习之定时器 对于LPC1114的学习,可谓是摸索中前进,每一步都是艰难的。最近成功操作16位定时器的查询方式,但是中断方式还是没有掌握,这里只是抛砖引玉,各位高手不吝赐教。 定时2秒,控制NXP开发板上的LED的亮灭。程序经不起推敲,按照11.0592M计算的初值,PLL设定位M:4\"border=\"0\">:2.只是给比我还新的初学者演示16位定时器0的查询方式的操作。 #ifdef__USE_CMSI
ACXION 单片机
请问如何隐藏PocketPC最下面的任务条(想替换为我自己的)?
rt!请问如何隐藏PocketPC最下面的任务条(想替换为我自己的)?
guangtonggg 嵌入式系统
如何将实时检测到的电压值用数码管显示
请问一下如何将实时计算得到的电压值用数码管显示,比如电压为220V如何用数码管显示出来,实现这个显示的原理是什么?谢谢了如何将实时检测到的电压值用数码管显示
mwxd009 微控制器 MCU
有什么传感器能透过有色玻璃检测到前方有没有人呢
RT,好奇那些做人脸识别考勤机的,黑色的玻璃,是用什么传感器判断前面有没有人的。如果全天开着摄像头进行人脸识别,那对CPU的压力有点大啊,估计CPU烫手。而且这种设备很多还是装户外嗮太阳的 有什么传感器能透过有色玻璃检测到前方有没有人呢
z45217 模拟电子
游戏摇杆使用
最近要跟人做一个遥控的东东,就用游戏机上的摇杆控制电机运动,把摇杆拆下来之后,上网看过一点资料,就两轴摇杆,两个模拟量输出。有没有人玩过的交流一下,要怎么样计算这个模拟量以控制电机呢?游戏摇杆使用
boyhaisong Microchip MCU
PIC比较器.pdf
PIC在单片机世界里面一直是站在前端位置的一个系列今天来说下比较器PIC比较器.pdf
rain Microchip MCU
小广播
设计资源 培训 开发板 精华推荐

何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved