W25Q64是华邦公司推出的大容量SPI
FLASH产品,其容量为64Mb。该25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件。W25Q64将8M字节的容量分为128个块,每个块大小为64K字节,每个块又分为16个扇区,每个扇区4K个字节。W25Q64的最小擦除单位为一个扇区,也就是每次必须擦除4K个字节。所以,这需要给W25Q64开辟一个至少4K的缓存区,这样必须要求芯片有4K以上的SRAM才能有很好的 *** 作。
W25Q64的擦写周期多达10W次,可将数据保存达20年之久,支持27~36V的电压,支持标准的SPI,还支持双输出/四输出的SPI,最大SPI时钟可达80Mhz。
一。SPI接口原理
(一)概述
高速,全双工,同步的通信总线。
全双工:可以同时发送和接收,需要2条引脚
同步: 需要时钟引脚
片选引脚:方便一个SPI接口上可以挂多个设备。
总共四根引脚。
(二)SPI内部结构简明图
MISO: 做主机的时候输入,做从机的时候输出
MOSI:做主机的时候输出,做从机的时候输入
主机和从机都有一个移位寄存器,在同一个时钟的控制下主机的最高位移到从机的最高位,同时从机的最高位往前移一位,移到主机的最低位。在一个时钟的控制下主机和从机进行了一个位的交换,那么在8个时钟的控制下就交换了8位,最后的结果就是两个移位寄存器的数据完全交换。
在8个时钟的控制下,主机和从机的两个字节进行了交换,也就是说主机给从机发送一个字节8个位的同时,从机也给主机传回来了8个位,也就是一个字节。
(三)SPI接口框图
上面左边部分就是在时钟控制下怎么传输数据,右边是控制单元,还包括左下的波特率发生器。
(四)SPI工作原理总结
(五)SPI的特征
(六)从选择(NSS)脚管理
两个SPI通信首先有2个数据线,一个时钟线,还有一个片选线,只有把片选拉低,SPI芯片才工作,片选引脚可以是SPI规定的片选引脚,还可以通过软件的方式选择任意一个IO口作为片选引脚,这样做的好处是:比如一个SPI接口上挂多个设备,比如挂了4个设备,第二个用PA2,第三个用PA3,第四个用PA4作为片选,我们
跟第二个设备进行通信的时候,只需要把第二个片选选中,比如拉低,其他设备的片选都拉高,这样就实现了一个SPI接口可以连接个SPI设备,战舰开发板上就是通过这种方法来实现的。
(七)时钟信号的相位和极性
时钟信号的相位和极性是通过CR寄存器的 CPOL 和 CPHA两个位确定的。
CPOL:时钟极性,设置在没有数据传输时时钟的空闲状态电平。CPOL置0,SCK引脚在空闲时为低电平,CPOL置1,SCK引脚在空闲时保持高电平。
CPHA:时钟相位 设置时钟信号在第几个边沿数据被采集
CPHA=1时:在时钟信号的第二个边沿
CPOL=1,CPHA=1,
CPOL=1表示时钟信号在没有数据传输时即空闲时的状态为高电平。如果CPHA=1,那么数据就在时钟信号的第二个边沿即上升沿的时候被采集。
CPOL= 0,CPHA=1, CPOL=0表示时钟信号在没有数据传输时即空闲时的状态为低电平。
如果CPHA=1,那么数据就在时钟信号的第二个边沿即下降沿的时候被采集。
CPHA=0时:在时钟信号的第一个边沿
CPOL=1,CPHA=0,
CPOL=1表示时钟信号在没有数据传输时即空闲时的状态为高电平。如果CPHA=1,那么数据就在时钟信号的第一个边沿即下降沿的时候被采集。
CPOL= 0,CPHA=0, CPOL=0表示时钟信号在没有数据传输时即空闲时的状态为低电平。
如果CPHA=1,那么数据就在时钟信号的第一个边沿即上升沿的时候被采集。
为什么要配置这两个参数
因为SPI外设的从机的时钟相位和极性都是有严格要求的。所以我们要根据选择的外设的时钟相位和极性来配置主机的相位和极性。必须要与从机匹配。
(八)数据帧的格式和状态标志
数据帧格式:根据CR1寄存器的LSBFIRST位的设置,数据可以MSB在前也可以LSB在前。
根据CR1寄存器的DEF位,每个数据帧可以是8位或16位。
(九)SPI中断
(十)SPI引脚配置 (3个SPI)
引脚的工作模式设置
引脚必须要按照这个表格配置。
二。SPI寄存器库函数配置
(一)常用寄存器
(二)SPI相关库函数
STM32的SPI接口可以配置为支持SPI协议或者支持I2S音频协议。默认是SPI模式,可以通过软件切换到I2S方式。
常用的函数:
1 void SPI_Init(SPI_TypeDef SPIx, SPI_InitTypeDef
SPI_InitStruct);//SPI的初始化
2 void SPI_Cmd(SPI_TypeDef SPIx, FunctionalState NewState); //SPI使能
3 void SPI_I2S_ITConfig(SPI_TypeDef SPIx, uint8_t SPI_I2S_IT,
FunctionalState NewState); //开启中断
4 void SPI_I2S_DMACmd(SPI_TypeDef SPIx, uint16_t SPI_I2S_DMAReq,
FunctionalState NewState);//通 过DMA传输数据
5 void SPI_I2S_SendData(SPI_TypeDef SPIx, uint16_t Data); //发送数据
6 uint16_t SPI_I2S_ReceiveData(SPI_TypeDef SPIx); //接收数据
7 void SPI_DataSizeConfig(SPI_TypeDef SPIx, uint16_t SPI_DataSize);
//设置数据是8位还是16位
8 其他几个状态函数
void SPI_Init(SPI_TypeDef SPIx, SPI_InitTypeDef
SPI_InitStruct);//SPI的初始化
结构体成员变量比较多,这里我们挑取几个重要的成员变量讲解一下:
第一个参数 SPI_Direction 是用来设置 SPI 的通信方式,可以选择为半双工,全双工,以及串行发和串行收方式,这里我们选择全双工模式
SPI_Direction_2Lines_FullDuplex。
第二个参数 SPI_Mode 用来设置 SPI 的主从模式,这里我们设置为主机模式 SPI_Mode_Master,当然有需要你也可以选择为从机模式
SPI_Mode_Slave。
第三个参数 SPI_DataSiz 为 8 位还是 16 位帧格式选择项,这里我们是 8 位传输,选择SPI_DataSize_8b。
第四个参数 SPI_CPOL 用来设置时钟极性,我们设置串行同步时钟的空闲状态为高电平所以我们选择 SPI_CPOL_High。
第五个参数 SPI_CPHA
用来设置时钟相位,也就是选择在串行同步时钟的第几个跳变沿(上升或下降)数据被采样,可以为第一个或者第二个条边沿采集,这里我们选择第二个跳变沿,所以选择
SPI_CPHA_2Edge
第六个参数 SPI_NSS 设置 NSS 信号由硬件(NSS 管脚)还是软件控制,这里我们通过软件控
制 NSS 关键,而不是硬件自动控制,所以选择 SPI_NSS_Soft。
第七个参数 SPI_BaudRatePrescaler 很关键,就是设置 SPI 波特率预分频值也就是决定 SPI 的时
钟的参数 , 从不分频道 256 分频 8 个可选值,初始化的时候我们选择 256 分频值
SPI_BaudRatePrescaler_256, 传输速度为 36M/256=140625KHz。
第八个参数 SPI_FirstBit 设置数据传输顺序是 MSB 位在前还是 LSB 位在前, ,这里我们选择
SPI_FirstBit_MSB 高位在前。
第九个参数 SPI_CRCPolynomial 是用来设置 CRC 校验多项式,提高通信可靠性,大于 1 即可。
设置好上面 9 个参数,我们就可以初始化 SPI 外设了。
初始化的范例格式为:
SPI_InitTypeDef SPI_InitStructure;
SPI_InitStructureSPI_Direction = SPI_Direction_2Lines_FullDuplex;
//双线双向全双工
SPI_InitStructureSPI_Mode = SPI_Mode_Master; //主 SPI
SPI_InitStructureSPI_DataSize = SPI_DataSize_8b; // SPI 发送接收 8 位帧结构
SPI_InitStructureSPI_CPOL = SPI_CPOL_High;//串行同步时钟的空闲状态为高电平
371
SPI_InitStructureSPI_CPHA = SPI_CPHA_2Edge;//第二个跳变沿数据被采样
SPI_InitStructureSPI_NSS = SPI_NSS_Soft; //NSS 信号由软件控制
SPI_InitStructureSPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; //预分频
256
SPI_InitStructureSPI_FirstBit = SPI_FirstBit_MSB; //数据传输从 MSB 位开始
SPI_InitStructureSPI_CRCPolynomial = 7; //CRC 值计算的多项式
SPI_Init(SPI2, &SPI_InitStructure); //根据指定的参数初始化外设 SPIx 寄存器
(三)程序配置步骤
三。W25Qxx配置讲解
(一)电路图
片选用的PB12
W25Q64 是华邦公司推出的大容量SPI FLASH 产品,W25Q64 的容量为 64Mb,该系列还有 W25Q80/16/32
等。ALIENTEK 所选择的 W25Q64 容量为 64Mb,也就是 8M 字节。(1M=1024K)
W25Q64 将 8M 的容量分为 128 个块(Block),每个块大小为 64K 字节,每个块又分为 16个扇区(Sector),每个扇区 4K
个字节。W25Q64 的最少擦除单位为一个扇区,也就是每次必须擦除 4K 个字节。这样我们需要给 W25Q64 开辟一个至少 4K 的缓存区,这样对 SRAM
要求比较高,要求芯片必须有 4K 以上 SRAM 才能很好的 *** 作。
W25Q64 的擦写周期多达 10W 次,具有 20 年的数据保存期限,支持电压为 27~36V,W25Q64 支持标准的
SPI,还支持双输出/四输出的 SPI,最大 SPI 时钟可以到 80Mhz(双输出时相当于 160Mhz,四输出时相当于 320M),更多的 W25Q64
的介绍,请参考 W25Q64 的DATASHEET。
在往一个地址写数据之前,要先把这个扇区的数据全部读出来保存在缓存里,然后再把这个扇区擦除,然后在缓存中修改要写的数据,然后再把整个缓存中的数据再重新写入刚才擦除的扇区中。
便于学习和参考再给大家分享些spi 的资料
stm32之SPI通信
>从物联网的定义及各类技术所起的作用来看,物联网的关键核心技术应该是无线传感器网络(WSN)技术,主要原因是:WSN技术贯穿物联网的全部三个层次,是其它层面技术的整合应用,对物联网的发展有提纲挈领的作用。WSN技术的发展,能为其它层面的技术提供更明确的方向。 以下是实现物联网的五大核心技术:核心技术之感知层:传感器技术、射频识别技术、二维码技术、微机电系统和GPS技术1传感器技术传感技术同计算机技术与通信技术一起被称为信息技术的三大技术。从仿生学观点,如果把计算机看成处理和识别信息的“大脑”,把通信系统看成传递信息的“神经系统”的话,那么传感器就是“感觉器官”。微型无线传感技术以及以此组件的传感网是物联网感知层的重要技术手段。2射频识别(RFID)技术射频识别(Radio Frequency Identification,简称RFID)是通过无线电信号识别特定目标并读写相关数据的无线通讯技术。在国内,RFID已经在身份z、电子收费系统和物流管理等领域有了广泛应用。RFID技术市场应用成熟,标签成本低廉,但RFID一般不具备数据采集功能,多用来进行物品的甄别和属性的存储,且在金属和液体环境下应用受限,RFID技术属于物联网的信息采集层技术。3微机电系统(MEMS)微机电系统是指利用大规模集成电路制造工艺,经过微米级加工,得到的集微型传感器、执行器以及信号处理和控制电路、接口电路、通信和电源于一体的微型机电系统。MEMS技术属于物联网的信息采集层技术。4GPS技术GPS技术又称为全球定位系统,是具有海、陆、空全方位实时三维导航与定位能力的新一代卫星导航与定位系统。GPS作为移动感知技术,是物联网延伸到移动物体采集移动物体信息的重要技术,更是物流智能化、智能交通的重要技术。核心技术之信息汇聚层:传感网自组网技术、局域网技术及广域网技术1无线传感器网络(WSN)技术无线传感器网络(Wireless Sensor Network,简称WSN)的基本功能是将一系列空间分散的传感器单元通过自组织的无线网络进行连接,从而将各自采集的数据通过无线网络进行传输汇总,以实现对空间分散范围内的物理或环境状况的协作监控,并根据这些信息进行相应的分析和处理。WSN技术贯穿物联网的三个层面,是结合了计算、通信、传感器三项技术的一门新兴技术,具有较大范围、低成本、高密度、灵活布设、实时采集、全天候工作的优势,且对物联网其他产业具有显著带动作用。2Wi-Fi Wi-Fi(Wireless Fidelity,无线保真技术)是一种基于接入点(Access Point)的无线网络结构,目前已有一定规模的布设,在部分应用中与传感器相结合。Wi-Fi技术属于物联网的信息汇总层技术。3GPRS GPRS(General Packet Radio Service,通用分组无线服务)是一种基于GSM移动通信网络的数据服务技术。GPRS技术可以充分利用现有GSM网络,目前在很多领域有广泛应用,在物联网领域也有部分应用。GPRS技术属于物联网的信息汇总层技术。
核心技术之传输层:通信网、互联网、3G网络、GPRS网络、广电网络、NGB 1通信网通信网是一种使用交换设备、传输设备,将地理上分散用户终端设备互连起来实现通信和信息交换的系统。通信最基本的形式是在点与点之间建立通信系统,但这不能称为通信网,只有将许多的通信系统(传输系统)通过交换系统按一定拓扑结构组合在一起才能称之为通信。也就是说,有了交换系统才能使某一地区内任意两个终端用户相互接续,才能组成通信网。23G网络3G是英文the 3rd Generation的缩写,指第三代移动通信技术。相对第一代模拟制式手机(1G)和第二代GSM、CDMA等数字手机,第三代手机(3G)是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统。3GPRS网络这是一种基于GSM系统的无线分组交换技术,提供端到端的、广域的无线IP连接。通俗的讲,GPRS是一项高速数据处理的科技,方法是以“分组”的形式传送资料到用户手上。虽然GPRS是作为现有GSM网络向第三代移动通信演变的过渡技术,但是它在许多方面都具有显著的优势。4广电网络广电网通常是各地有线电视网络公司(台)负责运营的,通过HFC(光纤+同轴电缆混合网)网向用户提供宽带服务及电视服务网络,宽带可通过CableModem连接到计算机,理论到户最高速率38M,实际速度要视网络情况而定。5NGB广域网络中国下一代广播电视网(NGB)是以有线电视数字化和移动多媒体广播(CMMB)的成果为基础,以自主创新的“高性能带宽信息网”核心技术为支撑,构建适合我国国情的、三网融合的、有线无线相结合的、全程全网的下一代广播电视网络。核心技术之运营层:专家系统、云计算、API接口、客户管理、GIS、ERP 1企业资源计划(ERP)ERP是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。ERP技术属于物联网的信息处理层技术。2专家系统(Exper System)专家系统是一个含有大量的某个领域专家水平的知识与经验,能够利用人类专家的知识和经验来处理该领域问题的智能计算机程序系统。属于信息处理层技术。3云计算云计算概念间由Google提出的,这是一个美丽的网络应用模式,是指IT基础设施的交付和使用,通过网络以按需、易扩展的方式获得所需的资源。核心技术之应用层:垂直行业应用、系统集成、资源打包应用层主要是根据行业特点,借助互联网技术手段,开发各类的行业应用解决方案,将物联网的优势与行业的生产经营、信息化管理、组织调度结合起来,形成各类的物联网解决方案,构建智能化的行业应用。如交通行业,涉及的就是智能交通技术;电力行业采用的是智能电网技术;物流行业采用的智慧物流技术等。行业的应用还要更多涉及系统集成技术、资源打包技术等。
参考资料>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)