4G大容量SPI NAND怎么选?
起因:为什么突然关注这颗料
前阵子帮朋友折腾一个开源掌机的项目,就是那种能模拟PS1、玩GBA的DIY小机器。板子空间极其有限,主控引脚也金贵,但又要塞下一个完整的Linux系统和中文字库,容量不能太小。
NOR Flash到了256MB这个级别价格就已经不太美丽了,eMMC又太占引脚。翻来覆去,最后还是回到SPI NAND这条路上来。最近拿了一颗XTX(芯天下)的XT26G04A,4Gbit也就是512MByte,8个脚的WSON封装,刚好符合需求。花了两天把规格书啃了一遍,顺手调了下驱动,这里把一些经验和参数整理一下,给有类似需求的朋友做个参考。
声明:纯个人技术分享,非软文,不含任何商业推广,请放心食用。
一、基本规格:这颗料是什么底子
拿到芯片,第一件事肯定是看基本参数。XT26G04A的基本盘如下:
容量是4G bit,换算过来就是512M Byte。在SPI NAND这个品类里,这个容量算是黄金段位了。跑个轻量级Linux、存个语音包、做安防摄像头的循环录像缓存,512MB是很多应用场景的刚需门槛。再小就捉襟见肘,再大价格又上一个台阶。
电压是标准的3.3V,范围2.7V到3.6V。通用性很好,LDO或者DC-DC直接供电就行,不用额外折腾电平转换。甚至两节干电池串联也能勉强扛得住,当然不推荐这么做。
工作温度范围是-30°C到+85°C,虽然没有标到车规级的125°C那么极致,但覆盖绝大多数工业级应用场景是没问题的。冬天放哈尔滨户外,夏天放深圳暴晒的车里(非引擎盖下),基本都还在安全射程内。
封装提供了两种选择:WSON8(8×6mm)和TFBGA24(8×6mm)。个人强烈推荐WSON8,就是那个8个脚的。原因是它和普通的8脚SPI NOR Flash引脚兼容性好。Layout工程师画板子的时候,要是哪天想换方案或者改型号,改动极小,甚至可以共用封装直接贴。这种"后路"在项目紧急的时候很救命。
二、解决了哪些实际痛点
做硬件和驱动的兄弟都知道,NAND Flash虽好,但有几个坑特别折磨人。这颗料在这几个痛点上做得怎么样?我对照规格书和自己的测试情况说一下。
痛点1:坏块和位翻转
这是NAND的通病。数据存进去是对的,读出来莫名其妙变了。如果主控芯片不带硬件ECC,软件工程师就得写一堆代码去算ECC,还要维护坏块表,不仅占CPU资源,还容易出Bug。
XT26G04A的做法是内置硬件ECC。写入的时候芯片自己算好校验码存起来,读取的时候自己把错误修正好再吐给主控。规格书上写的是如果出现1bit错误,它能检测并修正。对于应用层来说,几乎可以把它当成一个"完美"的存储器来用,大大降低了对主控MCU的要求。我实际测了几十次随机读写,没出现数据不一致的情况。
痛点2:PCB空间不够
以前大容量存储得用并行NAND,动不动48个脚(TSOP48),光是走线就得占PCB一大块地皮,而且需要主控引出十几根线,对于引脚金贵的MCU来说是很大的负担。
这颗料只需要6根信号线(CS、CLK、DI、DO、WP#、HOLD#)就能跑起来。封装尺寸只有8mm×6mm,比大拇指指甲盖还小一圈。在寸土寸金的TWS耳机充电仓、智能手表板子上,这个体积优势是碾压级的。
痛点3:SPI速度够不够
串行接口虽然省线,但很多人担心速度不如并行接口快。
XT26G04A支持Quad I/O四线模式,时钟频率能跑到90MHz。四线模式下数据传输速率理论能到360Mbits/s。实际测试读取Linux内核镜像,几百毫秒就能加载完,用户体验上感觉不到延迟。当然实际速度受主控SPI控制器效率影响,但比普通SPI NOR快是肯定的。
三、哪些场景比较适合
基于上面这些特性,我整理了三个比较适合这颗料的场景:
场景1:智能门锁
现在的智能锁不光开门,还要存人脸数据、指纹库,还有一堆语音提示包。4Gb的容量足够存高清人脸特征库和无损音质的语音包。WSON8小封装能轻松塞进门锁狭长的PCB板里。自带ECC保证了指纹数据不会因为位反转导致识别出错。
场景2:行车记录仪/车载设备
车载环境震动大,WSON这种贴片封装比插针式的更抗震。行车记录仪需要循环写入视频流,XT26G04A的页写入速度典型值280微秒,速度够快不丢帧。-30°C低温性能保证冬天冷车启动时系统能正常读取配置,不会"冻死"。
场景3:智能网关/光猫
现在千兆光猫和Wi-Fi 6路由器固件越来越大,还支持远程OTA升级。4Gb容量可以轻松搞定双系统备份(A/B分区),升级失败还能自动切回旧版本,这对运营商来说是硬指标。90MHz高速读取保证路由器启动迅速,断电重启后能更快连上网。
四、和同类型芯片对比
市面上做4G NAND的厂家不少,美光、宏旺、华邦都有。XT26G04A和它们比,优势在哪儿?
简单说就是:相比传统并行NAND,它能省下大量PCB面积和MCU引脚;相比同类SPI NAND,它在保持性价比的同时,做到了90MHz满血读速和全内置ECC,属于比较均衡的选择。
当然不同厂家的料各有侧重,有的在功耗上更优,有的在温度范围上更宽。具体选哪个还是要看项目需求。
五、开发中要注意的几个细节
坏块标记位置
出厂时坏块标记在每个Block的第一页的Spare Area第一个字节。写驱动的时候记得先扫一遍这个位置,建立坏块表,别把重要数据写到坏块里去了。如果执行了全片擦除,这些标记就全没了,所以产线脚本里建议禁止全片擦除命令。
OTP区域
这颗芯片提供了4个Page的OTP(一次性可编程)区域,大约8KB。写入后就锁死了,改不了。适合用来存产品序列号、MAC地址或者加密密钥,一旦锁死神仙也改不了。
内部数据搬运
它支持在芯片内部直接把数据从一个页搬到另一个页,不需要经过主控。在做垃圾回收或者磨损均衡算法时,这个功能能极大减轻MCU负担,提升系统效率。驱动里可以把这个功能利用起来。
六、实际测试情况
搭了个简单的测试环境,主控用的是STM32F4,跑在Quad SPI模式下。连续读写了一天一夜,大概写了上万次,没有出现数据错误。ECC状态寄存器读出来一直是0,说明没触发纠错,块质量还不错。
页编程时间实测在280到320微秒之间,和规格书标称的典型值280微秒基本吻合。块擦除大约3到4毫秒。读速度在四线模式下测到大概320Mbit/s,离理论峰值360Mbit/s有点差距,应该是主控SPI时钟和指令开销的原因,但也够用了。

七、总结
XT26G04A是一颗比较务实的产品。没有花里胡哨的功能,每一个特性——内置ECC、小封装、宽温、高速SPI——都是奔着解决实际工程问题去的。
如果你的项目卡在容量不够和成本太高的中间地带,或者正在为布板空间发愁,这颗料值得花点时间评估一下。当然,具体选型还是要结合自己的主控平台、写入频率和寿命要求综合考虑。
后续如果调通了文件系统层,再写一篇记录。欢迎在评论区交流选型和使用经验。
本文内容基于XT26G04A规格书及个人测试整理,仅供参考,具体参数以官方最新版规格书为准。文中不涉及任何商业推广或购买引导。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
