突发!三星工厂停电或导致全球NAND供应短期受阻
集微网消息,据韩国当地媒体报道,3月9日三星 位于平泽的NAND工厂突然遭遇30分钟的意外停电。尽管备用的不间断电源可以应对20分钟左右的突发状况,但是在CVD(化学气相沉积)、扩散、蚀刻和离子注入等工艺中,60分钟的停电可能将影响60%的输入晶圆片(即等待加工的晶圆片)。一般情况下,超过20分钟的任意停电将导致一半以上的输入晶圆报废。由于平泽工厂此次停电事故,预计3月份全球NAND供应将暂时收紧,同时预计这次事故会降低全球NAND库存水平。
花旗银行分析,三星3月份11%的NAND产能预计将受到影响。目前,三星平泽工厂一层每月NAND产能为90k片晶圆,二层DRAM/NAND装备则正在安装中。尽管有不间断电源备用,预计此次停电事故仍将影响到60%的产能。如果以三星NAND总产能514k片/月来计算,估计三星3月份NAND芯片出货量的11%将报废。目前全球每月NAND产能为1,557k片/月,因此预计2018年3月全球NAND供应量将下降3.5%。
不过三星有事故保险,因此停电事故对其影响有限。三星的内存晶圆厂都投了事故保险,此次意外停电可获得一笔保险赔偿,因此对三星的利润影响不大。此外,由于其有充足的NAND库存准备,相信三星的销售和运营也不会受到影响。
花旗银行指出,受服务器DRAM采用1xnm和1ynm驱动, 预计三星将继续保持强劲增长。SK Hynix方面,预计2018年强劲的服务器DRAM和SSD需求将使该公司创下新的盈利纪录。(校对/刘洋)
CS创世SD NAND的存储芯片应用方案
前言:
很感谢深圳雷龙发展有限公司为博主提供的两片SD NAND的存储芯片,在这里博主记录一下自己的使用过程以及部分设计。
深入了解该产品:
拿到这个产品之后,我大致了解了下两款芯片的性能。CSNP4GCR01-AMW是一种基于NAND闪存和SD控制器的4Gb密度嵌入式存储;而CSNP32GCR01-AOW是一种基于NAND闪存和SD控制器的32Gb密度嵌入式存储。与原始NAND相比其具有嵌入式坏块管理和更强的嵌入式ECC。即使在异常断电,它仍然可以安全地保存数据。作为一个存储芯片,它确实做到了小巧,LGA-8的封装对比我之前用到过的TF卡,只占到了其面积的三分之一,这样对于一些嵌入式的设计就方便了很多。
雷龙官方还很贴心的提供了样品的测试板,在这款测试板上,我焊接了4GB的CSNP4GCR01-AMW上去,并且跑了一下分,对于一款小的存储芯片而言,实在难得。
(上图为测试板焊接图)
博主日前在设计基于H616与NB-IOT的嵌入式智能储物柜的时候考虑过存储方面的问题,当时在SD NAND和EMMC与TF卡中徘徊,以下是几个存储类型的对比。
经过多方对比,本着不需要频繁更换的原则,同时也为了更好的防水和成本考虑,最终决定使用雷龙公司的SD NAND 作为设计样品的存储部分。
此外,SD NAND还具有不用写驱动程序自带坏块管理的NAND FLASH(贴片式TF卡),不标准的SDIO接口,也同时兼容SPI/SD接口,10万次的SLC晶圆擦写寿命,通过一万次的随机掉电测试耐高低温,经过跑分测得,速度级别Class10。标准的SD2.0协议,普通的SD卡可以直接驱动,支持TF卡启动的SOC都可以用SD NAND,而且雷龙官方还贴心的提供了STM32参考例程和原厂技术支持,这对于刚上手的小白而言,十分友好。
设计理念:
使用H616作为主控CPU并搭配NB-IOT来向申请下来的云端传输数据,当WIFI正常时,储物数据每搁两小时向云端传输一次,当有人取出物品时再次向云端发送一次数据(不保留在SD NAND中);一旦系统检测到WIFI出现问题,储物数据转而存储到SD NAND中,取物时输入的物品ID和取出时间一并放入SD NAND中(我也是看中了SD NAND与原始NAND相比其具有嵌入式坏块管理和更强的嵌入式ECC。即使在异常断电,它仍然可以安全地保存数据这一点)。
部分SD NAND的参考设计
根据官方数据手册提供的SD NAND参考设计,只占用8个GPIO,对于H616来说,确实很友好
这里为了不泄露他人的劳动成果,我也就不粘PCB设计了。
采用H616驱动SD NAND的示例代码
下面是关于H616驱动SD NAND的示例代码,这里记录一下自己当初的学习过程(注:这个代码不能直接拿过来就用,而是要根据自己的需求修改)
#include <stdio.h>#include <stdint.h>#include <stdlib.h>#include <string.h>#include "h616_sdio.h"// 定义SDIO引脚#define SDIO_CMD_PIN 0#define SDIO_CLK_PIN 1#define SDIO_D0_PIN 2#define SDIO_D1_PIN 3#define SDIO_D2_PIN 4#define SDIO_D3_PIN 5// 定义NAND芯片命令#define CMD_READ 0x00#define CMD_WRITE 0x80#define CMD_ERASE 0x60#define CMD_STATUS 0x70#define CMD_RESET 0xff// 定义NAND芯片状态#define STATUS_READY 0x40#define STATUS_ERROR 0x01// 初始化SDIO控制器void sdio_init(){// 设置SDIO引脚模式和速率h616_sdio_set_pin_mode(SDIO_CMD_PIN, H616_SDIO_PIN_MODE_SDIO);h616_sdio_set_pin_mode(SDIO_CLK_PIN, H616_SDIO_PIN_MODE_SDIO);h616_sdio_set_pin_mode(SDIO_D0_PIN, H616_SDIO_PIN_MODE_SDIO);h616_sdio_set_pin_mode(SDIO_D1_PIN, H616_SDIO_PIN_MODE_SDIO);h616_sdio_set_pin_mode(SDIO_D2_PIN, H616_SDIO_PIN_MODE_SDIO);h616_sdio_set_pin_mode(SDIO_D3_PIN, H616_SDIO_PIN_MODE_SDIO);h616_sdio_set_clock(H616_SDIO_CLOCK_FREQ_25MHZ);// 初始化SDIO控制器h616_sdio_init();}// 发送NAND芯片命令void nand_send_cmd(uint8_t cmd){// 设置SDIO控制器传输模式和命令码h616_sdio_set_transfer_mode(H616_SDIO_TRANSFER_MODE_WRITE);h616_sdio_set_command_code(cmd);// 发送命令h616_sdio_send_command();}// 发送NAND芯片地址void nand_send_addr(uint32_t addr){// 设置SDIO控制器传输模式和地址h616_sdio_set_transfer_mode(H616_SDIO_TRANSFER_MODE_WRITE);h616_sdio_set_address(addr);// 发送地址h616_sdio_send_address();}// 读取NAND芯片数据void nand_read_data(uint8_t *data, uint32_t size){// 设置SDIO控制器传输模式h616_sdio_set_transfer_mode(H616_SDIO_TRANSFER_MODE_READ);// 读取数据h616_sdio_read_data(data, size);}// 写入NAND芯片数据void nand_write_data(const uint8_t *data, uint32_t size){// 设置SDIO控制器传输模式h616_sdio_set_transfer_mode(H616_SDIO_TRANSFER_MODE_WRITE);// 写入数据h616_sdio_write_data(data, size);}// 读取NAND芯片状态uint8_t nand_read_status(){uint8_t status;// 发送读取状态命令nand_send_cmd(CMD_STATUS);// 读取状态nand_read_data(&status, 1);return status;}// 等待NAND芯片准备就绪void nand_wait_ready(){uint8_t status;// 循环读取状态,直到NAND芯片准备就绪do {status = nand_read_status();} while ((status & STATUS_READY) == 0);}// 读取NAND芯片数据void nand_read(uint32_t page, uint32_t column, uint8_t *data, uint32_t size){// 发送读取命令和地址nand_send_cmd(CMD_READ);nand_send_addr(column | (page << 8));// 等待NAND芯片准备就绪nand_wait_ready();// 读取数据nand_read_data(data, size);}// 写入NAND芯片数据void nand_write(uint32_t page, uint32_t column, const uint8_t *data, uint32_t size){// 发送写入命令和地址nand_send_cmd(CMD_WRITE);nand_send_addr(column | (page << 8));// 写入数据nand_write_data(data, size);// 等待NAND芯片准备就绪nand_wait_ready();}// 擦除NAND芯片块void nand_erase(uint32_t block){// 发送擦除命令和地址nand_send_cmd(CMD_ERASE);nand_send_addr(block << 8);// 等待NAND芯片准备就绪nand_wait_ready();}// 复位NAND芯片void nand_reset(){// 发送复位命令nand_send_cmd(CMD_RESET);// 等待NAND芯片准备就绪nand_wait_ready();}// 示例程序入口int main(){uint8_t data[2048];memset(data, 0x5a, sizeof(data));// 初始化SDIO控制器sdio_init();// 复位NAND芯片nand_reset();// 擦除第0块nand_erase(0);// 写入第0页nand_write(0, 0, data, sizeof(data));// 读取第0页nand_read(0, 0, data, sizeof(data));return 0;}————————————————
【本文转载自CSDN,作者:孙启尧】
相关问答
NAND 与ROM有什么不同-ZOL问答我的PPC有8G的NAND但是ROM只有128MB,我想问在WM系统中NADN和ROM的使用功能一样吗,或者说NADN能够当作是ROM使用吗?在待机状态系系统会像SDMMC那样切断储存器电...
SK Hynix推出的128层4D NAND 闪存,在消费级市场得到怎样的应用?...【题图viaTechSpot】而在下月的拉斯维加斯消费电子展(CES2020)上,SKHynix还计划展示两款PCIeNVMeSSD新品(GoldP31和Platin...
固态硬盘缓存有什么意义?所以固态硬盘带缓存对读取速度的提升,几乎可以忽略。把数据从内存写入硬盘,由于硬盘较缓慢,需要等待较长的时间才能完成此任务。为了解决硬盘速度过慢的问题...
国产芯片有望新突破,预计9月份量产!哪些上市公司直接受益?国产芯片如果能取得突破并量产,对我国的半导体元器件行业将是质的飞跃!但得承认,国内的芯片产业链落后太多,短期是难以赶超的,得一步一个脚印的研发和超越!...3...
qq三国时装为什么拿不掉?就好像固定了,点时装明明已经没带了,...且在刷机时会格式化内置SD卡(系统中叫NANDFLASH),所以一定要做好备份。2...等待电脑中提示发现新硬件后放手。6、手动指定驱动位置到你解压的升级包中的...
nandflash 最快读写速度?NAND闪存的最快读写速度取决于具体的技术和规格。目前,高性能NAND闪存的读取速度可以达到几百兆字节每秒(MB/s),而写入速度通常在几十到一百多兆字节每秒之间...
插入读卡器没反应是怨什么[回答]卡插入插槽,端口与计算机相连并安装所需的驱动程序之后,计算机就把存储卡当作一个可移动存储器,从而可以通过读卡器读写存储卡。按所兼容...按所兼...
小米14用长江存储吗?小米14不使用长江存储。小米14采用的是UFS3.0高速闪存技术,而不是长江存储。UFS(UniversalFlashStorage)是一种高速、低功耗的闪存存储技术,具有更快的读...
iphone6p刷机死机?3.当屏幕上出现苹果图标时,说明已经强制启动成功,就等待进入桌面了。4.如果同时按下电源键与Home键,还不能将死机的iPhone摆平的话,此时请将电源插上,再同...
内存还要继续涨价?什么时候买内存合适?不信了。e312301240v2v3平台。加ddr4g内存组16g,配个560显卡,还有什么跑不动。你要非说啥非i78代加1080ti不可。那内存这点小钱还算啥。直接......