历史上的今天
返回首页

历史上的今天

今天是:2024年10月11日(星期五)

正在发生

2021年10月11日 | S3C2440裸机------NandFlash编程_擦除与烧写

2021-10-11 来源:eefocus

1.擦除

NandFlash是以块为单位进行擦除的,一个块是128K,从上面的时序图我们可以看到,首先我们要发出60命令,然后发出三个行地址,然后发送D0H,然后等待擦除结束。


int nand_erase(unsigned int addr, unsigned int len)

{

int page = addr / 2048;

 

if (addr & (0x1FFFF))

{

printf("nand_erase err, addr is not block alignnr");

return -1;

}

if (len & (0x1FFFF))

{

printf("nand_erase err, len is not block alignnr");

return -1;

}

nand_select(); 

 

while (1)

{

page = addr / 2048;

nand_cmd(0x60);

/* row/page addr */

nand_addr_byte(page & 0xff);

nand_addr_byte((page>>8) & 0xff);

nand_addr_byte((page>>16) & 0xff);

 

nand_cmd(0xD0);

 

wait_ready();

 

len -= (128*1024);

if (len == 0)

break;

addr += (128*1024);

}

nand_deselect();

return 0;

}


2.烧写

从上面的时序图可以看到,要想烧写NandFlash,我们首先发出80命令,然后发出五个地址,然后开始写数据,数据写完之后发出10命令,然后开始等待烧写完成。


void nand_write(unsigned int addr, unsigned char *buf, unsigned int len)

{

int page = addr / 2048;

int col  = addr & (2048 - 1);

int i = 0;

 

nand_select(); 

 

while (1)

{

nand_cmd(0x80);

 

/* 发出地址 */

/* col addr */

nand_addr_byte(col & 0xff);

nand_addr_byte((col>>8) & 0xff);

/* row/page addr */

nand_addr_byte(page & 0xff);

nand_addr_byte((page>>8) & 0xff);

nand_addr_byte((page>>16) & 0xff);

 

/* 发出数据 */

for (; (col < 2048) && (i < len); )

{

nand_w_data(buf[i++]);

}

nand_cmd(0x10);

wait_ready();

 

if (i == len)

break;

else

{

/* 开始下一个循环page */

col = 0;

page++;

}

}

nand_deselect();

}

推荐阅读

史海拾趣

Cavium Networks公司的发展小趣事

在电子行业的快速发展中,Cavium Networks 公司凭借其创新的技术和敏锐的市场洞察力,成功推出了基于 MIPS64 的单核和双核 OCTEON 处理器系列。这款处理器为网络、无线、控制和存储应用提供了高度集成化和低成本的64位计算解决方案,成为当时业界领先的面向下一代智能网络的新型处理器。OCTEON 处理器的诞生,标志着 Cavium Networks 在网络通信领域的技术实力得到了进一步提升,也为其后续的发展奠定了坚实的基础。

台湾凯励(Carli)公司的发展小趣事

凯励公司始终将技术创新作为发展的核心驱动力。公司不断投入研发资金,加强与高校和研究机构的合作,不断推出具有竞争力的新产品。例如,公司成功研发出了MPX、MTF、MTB等多个系列的金属膜电容器,这些产品不仅具有优异的性能和稳定性,还广泛应用于新能源、工业控制、通信等领域。此外,凯励公司还致力于产品升级和工艺改进,不断提高产品的可靠性和使用寿命。

博巨兴公司的发展小趣事

博巨兴公司始终秉持开放合作的理念,积极与高校和研究机构展开产学研合作。2008年至2010年间,公司先后与厦门大学、中南大学、湖南大学结成产学研型战略伙伴关系,共同推动芯片技术的研发与应用。同时,公司还不断拓展市场,在上海建立了分公司,并在顺德、厦门、天津、杭州、西安等地设立了办事处,为公司的长远发展奠定了坚实基础。

这些故事虽然基于虚构,但反映了博巨兴公司在电子行业发展中不断探索、创新、合作与拓展的历程。通过这些努力,博巨兴公司逐渐在芯片代理和研发领域取得了显著成绩,为电子行业的发展做出了积极贡献。

Emmoco公司的发展小趣事

Emmoco公司成立于XXXX年,由一群富有远见和创新精神的电子工程师创立。公司自创立之初就明确了以技术创新为核心的发展道路,专注于研发高性能的电子元器件和模块。经过初期的不懈努力,Emmoco成功推出了一系列具有竞争力的产品,为公司的后续发展奠定了坚实的基础。

FlexiPanel公司的发展小趣事

FlexiPanel自成立以来,便深知技术创新对于企业发展的重要性。公司投入大量资源于RF模块的研发,特别是在蓝牙和ZigBee/IEEE802.15.4等无线通信技术领域取得了显著成果。通过不断优化模块性能、提升集成度,FlexiPanel成功推出了多款具有行业领先地位的产品,吸引了众多OEM厂商的关注。这些创新产品不仅满足了市场对于高性能、低功耗、易集成的RF模块需求,还帮助FlexiPanel在竞争激烈的电子市场中脱颖而出,实现了市场份额的快速增长。

Abbotec Incorporated公司的发展小趣事

随着电子行业的快速发展,市场竞争日益激烈。Abbotec在面对市场变革时,果断进行了战略调整。公司加大了对新兴技术的研发投入,同时优化了生产流程,降低了成本。这些措施使得Abbotec在激烈的市场竞争中保持了稳健的发展态势。

问答坊 | AI 解惑

求助51单片机在超声波测距的应用 毕业论文

设计基于51单片机超声波测距系统!…

查看全部问答>

QuickSense触摸解决方案教你如何简化开发过程

目前越来越多的电子产品结合高速发展的感测技术,以期改善消费者使用感受,如增加对预测使用者需求的智能化功能,以及通过触摸和直觉式手势实现人机互动,这些先进的人机界面功能往往需要牺牲功耗和性能,并导致更高的软件复杂度,因而对设计环境 ...…

查看全部问答>

Linux内核IP Queue机制的分析(二)­——用户态处理并回传数据包

序 笔者将会通过包括本文在内的三篇文章,对IP Queue机制从用户态的应用到内核态的模块程序设计进行分析。三篇文章的题目分别是: Linux内核IP Queue机制的分析(一)­——用户态接收数据包 Linux内核IP Queue机制的分析(二)­—— ...…

查看全部问答>

求ARM接16C554的原理图

高分求ARM接TL16C554(串口扩展)的原理图,我的邮箱mynhz@yahoo.com.cn,谢谢.…

查看全部问答>

求助:怎样编程实现89c51控制320240液晶屏显示的问题

用51控制一个320×240的液晶屏,该液晶屏的驱动芯片是ra8835,需要在屏幕上显示四个设备名称,单片机51的P2口通过继电器连接那四个设备,另有两个按键接在51的2个管脚上,要实现的功能是一个按键用来选择哪个设备,同时能在屏幕上显示当前选择的设 ...…

查看全部问答>

算法与数据结构的课件!~

希望对大家写程序有帮助!~…

查看全部问答>

[求助]LaunchPad自带的虚拟串口识别为COM5,用什么软件连接啊?

[求助]LaunchPad自带的虚拟串口识别为COM5,用什么软件连接啊?试了几个串口工具都只支持COM1-COM4………

查看全部问答>

android开发教材

:Q android你值得拥有!…

查看全部问答>

请问,在CCS环境下调试,可以看到GPIO的状态不?

请问,在CCS环境下调试,可以象单片机那样看到GPIO口的状态不?…

查看全部问答>