宏旺半导体解答什么是SPI Flash 运用于哪些领域
有关注宏旺半导体的小伙伴都知道,宏旺半导体是一家专注于存储芯片Design、研发、封装、测试、销售服务于一体的高科技企业。在之前宏旺半导体给大家带来了很多关于存储方面的文章,主要介绍了eMMC、UFS等Flash,但很少提到SPI闪存,作为闪存家族的重要一员,今天就和大家聊聊ICMAX SPI。
什么是SPI Flash
SPI Flash是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,一般智能电视、老式机顶盒、智能后视镜、投影仪、物联网、监控摄像机等产品会用到。由于体积小,它可以减少ASIC控制器引脚数,降低封装成本,缩小电路板空间,并降低系统成本。与并行闪存相比,SPI串行闪存功耗更低、连线更少,它是一种理想的高成本效益的数据传输解决方案。
如果采用SPI NAND Flash的方案,主控(MCU)内可以不需要带有传统NAND的控制器,只需要有SPI的接口,这样可以减少主控的成本。另外SPI NAND Flash的封装形式多采用 WSON的封装,尺寸比传统的NAND Flash TSOP的封装要小很多,充分节省了PCB板的空间,已经管脚的数量,从而可以减小PCB的尺寸及层数,既满足了小型化的需求也降低了产品的成本。
随着5G网络即将带来的数据狂潮,万物互联对存储芯片有了更高的需求,目前SPI SLC NAND在PON、网通模块、监控等领域也逐步普及。SPI NAND有更快的写入速度,且对于频繁擦写有着更高的稳定性。从上面我们了解到了 SPI NAND Flash的这么多优点,那么他的性能相比于传统的NAND Flash是否有打折扣呢?
我们以国产本土品牌ICMAX的2Gb SPI NAND Flash 型号为IMS2G083J1H2S-WN 为例来进行说明。SPI NAND Flash本质上是一个NAND Flash+ SPI controller,ICMAX为了提供给客户稳定可靠的ICMAX Flash,保证用户的程序代码的一致性,将NAND Flash和 SPI controller做了独特别设计,从而保证了所有ICMAX出厂的SPI NAND Flash都拥有一致的controller,客户在对于SPI 编程时也不会出现因为不同的controller导致驱动程序需要调整的问题。
另外ICMAX拥有完全自主的NAND Flash设计能力,在SPI NAND Flash中采用的 NAND 晶圆均为SLC规格的,擦写次数达到10万次,存储时间高达10年以上,硬件的ECC校验,更好的帮助客户管理好Flash。宏旺半导体ICMAX的SPI NAND具备体积小、集成度高等优势,从严格的封装、测试、认证等一步到位,大大缩短生产周期,为客户提供高性能到高性价比的解决方案,帮助客户抢占市场先机。
STM32F030 Nucleo-多样的SPI通信之Master标准模式-SPIFlash(一)
我个人认为,学习单片机,在硬件上和驱动上,我们无非学习这么几个东西:
1.能灵活的操作GPIO端口
2.理解单片机各个引脚的功能和作用和外围小系统的设计
3.各种通信协议比如:并口协议(LCD1602等),UART/USART协议,IIC协议,485通信协议,SPI通信协议,IIS音频流传输协议,CAN通信协议,单总线通信协议(DS18B20等),三总线协议(DS1302等)等等通信协议。
4.ADC/DAC 模数/数模转换
5.单片机内部提供的一些运输协议或者特殊功能,比如DMA,RTC,定时器Timer等,这些功能的操作有单片机本身确定,经过协议相同目标相同,但是操作等可能各家单片机不尽相同;咱只需要理解它完成的是什么功能/任务就好。
通过学习各种协议、一些基本的操作和所使用的这款单片机的内核功能或者特殊功能(与内核和厂商设计相关),就基本上能利用单片机与外设或者其他MCU或CPU实现通信交流了,都交流上了!那自然就是有关系了!哈哈哈!那至于想搞什么关系(男女关系还是朋友关系<开玩笑>)那就自己想喽!哈哈哈哈!
关系都搞通了!那么借钱(读取)或者还钱(写入)就有机会啦!!!
那么其实问题就来了!有人会疑问,不是还有算法啊!数据结构等等这些吗??其实这是一个显而易见的问题:
建议:
1.在我们写代码的时候,好将我们的代码封装起来,分成与硬件相关的代码(层)和与硬件无关的层。
2.与硬件无关的层可能有继续划分,比如分一些总线层或者书中间调度层等等,这些层和我们的产品功能实现可能没有太大关系,但是却为我们的功能进行调度或者作为基础,是的我们的代码的可移植性更高。
3.当然,万事没有绝对,在RAM和ROM/Flash紧缺的情况下,用上面1和2点的方法显然是不合适的,因为咱的ROM/Flash一不小心就装不了咱的代码了,那就没得玩了,何况还有RAM的情况也是这样,所以这时候咱就尽量的减少代码,优化代码,这样可能就会使得与硬件相关的代码和功能代码混合在一起了,这样的代码的可移植性是非常低的,但是没办法嘛!这是一种解决方案!哈哈!
4.基于上面三点的建议,做一下总结。首先说明一下实际的情况,绝大部分的初学者管你内存多大,他们的代码都采用的是第3种方法,这可以说是一种不好的习惯,建议还是尽量的模仿使用1和2中方法学习,当然也不是那么简单的,这需要一个长久的学习和阅读一些好的开源项目代码,比如一些实时操作系统源码(UCosII、FreeRTOS,小型用于SD卡或者SPIFlash等的文件系统源码等等),这样理解开源项目的架构,才能自己慢慢学习构建架构的,这是一个比较漫长的过程,需要有心人在学习的过程中慢慢的关注。
OK!废话了半天!言归正传!这里咱要学习的是SPI通信,身边刚好有SPIFlash,咋就用咱的STM32F030 Nucleo板卡作为主机与它通信吧。
首先呢,有必要先介绍一下SPI通信协议。
SPI通信总线协议开始是由Motorola(摩托罗拉)提出或者发明的。她提供了三线制全双工同步串行外围接口,采用主从模式架构。在一同一个通信系统中,支持多从机单一主机。也就是说,每一个SPI总线通信上只存在一个主机。
它的通信方式是:通信时钟CLK有主机控制,数据在时钟脉冲下按位传输,先传高位再传低位。()这一点非常重要!在单片机不支持硬件SPI通信时,与具有SPI通信接口的外设传感器等通信就必须使用MCU的I/O口模拟SPI时序与之进行数据通信,从而实现功能。
还有一个非常好的好处就是,通信速率能达到几M到十几M,哈!好快。
好!基本上几句话就知道SPI的基本信息了!那么,干啥呢??当然是。。。。。。。。分析分析通信过程了哇!哈哈!
硬件通信接口:
CLK-------CLOCK Signal;时钟线
MISO-----Master Input Slave Output;主机输入从机输出数据线
MOSI-----Master Output Slave Input;主机输出从机输入数据线
NSS-------Slave Select pin;从设备使能线
咦!咋觉得不太对呢?上面明明说是三线制啊!咋的这里有四根线呢(CLK时钟线、MISO数据线,MOSI数据线和NSS片选线)?
其实是这样的,前面介绍SPI的时候,说是三线制,主要是说数据通信所需要的线,即CLK、MISO、MOSI这三根线是SPI通信的基础,而NSS片选线有时候在特定情况下是不必要的(这个下一篇文章中我会详细介绍),所以,问题就这样愉快的解决了。哈哈!这种感觉是不是很爽!!嘿嘿。
当然,这其实只是SPI通信硬件接口的一部分,而且是基础的部分。那么现在就STM32F030的硬件SPI资源进行讲解。打开参考手册《STM32F030x468C and STM32F070x6B advanced ARM®-based 32-bit MCUs.pdf》
打开到SPI通信的讲解章节,如下:
这就是SPI的简介了!哈哈!好!不废话了!继续往下:
这里就说明了这款芯片的SPI的特点和功能,再往下:
注意红线框出的部分,这就是我们这款单片机拥有的SPI外设资源和支持的功能资源。非常重要!!!
讲到资源,那我们还必须要牢记这款芯片的资源对应的单片机引脚。这个要从Datasheet来看了。如下:
哈!看见没!这就是这款芯片的资源了,特别关注红框标注的地方,而且还要注意哪些复用是我们的STM32F030 Nucleo板卡的主控MCU STM32F030R8T8才有的,这一点非常重要!别写半天引脚的配置都不对。这是一件很悲催很丢脸的事。
OK!咱来看看我们的单片机的SPI内脏,如下:
有必要先说明一下:FIFO:First Input First Output,即先进先出队列!哈哈!还记得在学习数据结构是的队列吗??就是这个了!嘿嘿!
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!
扫码进群领资料
相关问答
SPI FLASH 与NOR FLASH 的区别?1、SPIFlash(即SPINorFlash)是NorFlash的一种;2、NORFlash根据数据传输的位数可以分为并行(Parallel)NORFlash和串行(SPI)NORFlash;3...
spi 总线是eeprom还是 flash ?这压根不是一个概念。SPI是一种通信协议,eeprom和flash是一种存储空间或者芯片。不同eeprom和flash可以不同的通讯协议访问。比如,可能已SPI方式访问,也可...
单片机外挂一个人 spi 的 Flash ,怎么操作是明白的,但是具体的原理呢,单片机通过so,嗖嗖嗖过去?事实上Flash有一套自己定义的协议。你仔细分析一下你发送给FLASH的数据就会明白。通常的做法是需要单片机先告诉flash我需要读还是写,什么位置,多少字节,如果...
嵌入式 Flash 读写操作该如何进行设计?Flash存储芯片的通讯方式以SPI居多,在实现flash读写时就是要实现SPI的通讯协议,与EEPROM不同的是,SPI在操作时是按照PAGE页进行整页擦除写入的,这一点需要注...
980芯片是微处理芯片吗?980芯片是微处理芯片。新唐NUC980系列MPU是执行速度为300MHz的ARM9核心且最高可内嵌128MBDRAM。NuMaker-IIoT-NUC980开发板内嵌NUC980核心有丰富...
主板上 spi flashmemory是什么意思?1、意思是SPIFlash存储器2、SPIFlash(即SPINorFlash)是NorFlash的一种,NORFlash是一种非易失闪存技术,是Intel创建的。1、意思是SPI...
高人指点MCU(只支持5V供电)和 flash memery(只支持3.3V供电)采用用 SPI 通讯方式的连接电路?很多(Flashmemery只支持3.3v供电)都允许直接与5VMCU的IO直接连接,不通讯时保持低电平即可。还有一方法就是中间串个470R的电阻。很多(Flashmemery只支持...
spi 双启动是什么?SPI双启动是指同时使用内部启动(内部Flash)和外部启动(外部SPIFlash)两种方式来启动设备。在这种模式下,设备的启动顺序可以在软件中进行设置。例如,可以...
mt7621at是什么处理器?SPI,NANDFlash,SDXC1xUSB3.0,2XUSB2.0,3xPCIe主机5-端口10/100/1000SW/PHY和1个RGMIIGreen--智能时钟缩放(不包括)...
flash 模组是什么?Flash模组是一种集成了闪存存储器的模块。闪存是一种非易失性存储器,可以在断电后保持数据的存储。Flash模组通常用于嵌入式系统和电子设备中,用于存储程序代...