嵌入式物联网之SPI接口原理与配置

嵌入式物联网之SPI接口原理与配置,第1张

本实验采用W25Q64芯片

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通信

>发送数据,储存资料,分析数据。
考虑设备在三个阶段中创建的数据会有所帮助。第一阶段是初始创建,该创建在设备上进行,然后通过Internet发送。第二阶段是中央系统如何收集和组织该数据。第三阶段是对未来数据的持续使用。
回顾时序数据的能力对整个物联网具有最深远的影响。无论是为了私有部门的利益还是公共部门的利益,了解应用程序的设计以及如何随时间存储数据都是至关重要的。在设计物联网时,可以跟上正在创建的大量数据的分布式系统的作用也很重要。

有机会,但是建议不要做泛和大,从垂直领域出发比较好,为啥这样说呢?原因如下。

1、各大运营商、互联网公司、设备制造商等等企业都在做综合性的平台

国内有阿里、华为、三大运营商、百度、腾讯、小米、海尔、京东、中电科等。

国外有亚马逊、IBM、SAP、

谷歌、GE、西门子、博世等。

通过以上名单可以发现,这些公司的特点。

这说明物联网是未来的发展方向,是值得花钱而且花大钱去布局的事。

2、做综合性的物联网平台,要求的资金、资源和技术要求会很高。因为是综合性平台,那么你得搞清楚各行各业的所使用物联网平台的诉求,行业标准等等,不然你的用户群体就会很窄。

3、面对的竞争对手的实力都不可小觑,你要考虑的是现阶段进入这个领域做平台在技术上能否与以上那些公司一较高下呢?你想投入多少时间和精力去做平台呢?人家都可是布局好几年了,踩了很多坑积累了很多经验,且现在平台已具有一定规模,形成了一定的行业壁垒,特别是华为,据我所知,国内运营商的平台都离不开华为的支持。
物联网平台的玩家之多,让人惊叹啊,那么咱们还有没有机会呢?答案是肯定的,有!但我的建议走垂直领域。

物联网的领域很广泛,所以专业的物联网平台未来会有很多,而这种综合性的物联网平台经过几年的厮杀后,最终也就剩下几家巨头。何谓垂直领域的物联网平台呢?

最基本的就是行业垂直,比如工业、农业、教育、医疗、安防、建筑、家居、交通运输等领域。

以上玩家也有做垂直领域的,比如ABB/西门子/GE/普奥云/博世等,他们专注工业领域,爱立信、诺基亚专注通信领域,而互联网巨头则是走综合性的较多,因为他们有一定客户基础、服务器资源和用户群体,可以面对企业和开发者提供平台服务,海尔/小米等企业就是在智能家居领域发力的。

不出意外,安防领域的海康、大华都在对自己的领域来架设相应的物联网平台。
从专业的角度来看物联网平台类型有功能呢?
物联网平台有五种类型

1网络连接,网络连接平台以物联网系统的网络组件为中心。它们为用户提供保持设备在线所必需的软件、连接硬件和数据指导。它们的网络通常依赖现有的运营商服务和WI-FI,并以一种便于物联网设置的方式配置网络连接。
有机会的,物联网的网少不了平台,没有平台就没有物联网。平台提供基于数据的存储、管理等。数据挖掘、数据分析等都基于云平台来计算。

物联网平台从另一个角度来看,是数据的“聚合”平台,通过大数据分析,给决策提供状态、趋势和决策等。
随着5G时代的到来,“边缘计算”一词越来越多的出现在大众视野。今天我们就来讲讲Arex算力资源平台如何利用“边缘计算”制霸未来物联网20。
什么是边缘计算?
首先我们介绍一下什么是边缘计算:边缘计算是分布式计算技术的一种,分布式系统的崛起催生边缘计算平台和新的网络构架分布式AI会在最后一英里网络中增加更多的计算、智能和处理/存储能力,将引发移动端硬件和算力变革。

在这种配置中,人工智能引擎将依赖于大量物联网传感器和执行器,收集和处理大量的 *** 作现场数据。海量数据将为“本地化”的边缘计算AI引擎提供燃料,这些引擎将运行本地进程并在现场做出决策。

因此网络需要另一种水平的实时边缘计算、数据收集和存储,将推动人工智能处理到网络边缘。这将完成云边缘智能和网络化计算机的循环, 并通过基于区块链的智能合约来完成数据授权和业务运转。

物联网中边缘计算与区块链的结合是大势所趋,会将当前的传统物联网完全颠覆掉。
为什么这么说呢?
传统物联网将被淘汰

伴随着近年来通用计算机设备的飞速发展,各类自动化的智能设备开始进入人们视野,背后是廉价传感器和控制设备的爆炸性增长。传统物联网系统基于服务器/客户端的中心化架构。即所有物联设备都通过云实现验证、连接和智能控制。

中心化的物联网架构存在三个问题。

一是云计算成本,例如在家庭应用场景下,两台家电相距不到一米,也需要通过云端进行沟通。数据汇总到单一的控制中心,企业所销售的物联设备越多,其中心云计算服务支出的成本会越大。由于终端物联设备竞争愈加激烈,利润走低,中心计算成本矛盾会越来越突出。

其次,中心化的数据收集和服务方式,无法从根本上向用户保证数据会合法使用。用户的数据保护完全依靠企业单方面的承诺,难以进行有效的监管。

第三,中心化物联生态系统中,一个设备被攻陷,所有的设备会受到影响。例如《麻省理工 科技 评论》2017年所指出的僵尸物联网,可以通过感染并控制摄像头、监视器等物联设备,造成大规模网络瘫痪。
区块链技术重塑物联网
区块链技术可以利用区块链独特的不可篡改的分布式账本记录特性,构建底层通讯节点、建立链上算力生态、依托分布式存储用于计算服务等区块链技术的综合应用,将全球闲置算力整合起来,通过构建“边缘算力”模式为有需求的用户提供d性可扩容的算力交易、算力租赁等服务。为用户打造一个开放、公平、透明和低门槛的去中心化算力资源共享平台,同时结合丰富的行业经验为全球客户提供更优质的服务。

简单来说就是Arex算力资源平台利用分布式计算模式将全球的闲置算力进行整合,从而构建出高数量级的“边缘算力”,并以此为算力源对需要的应用场景进行高能输出。

边缘算力的应用场景到底有多广阔?

边缘计算将数据处理从云中心转移到网络边缘,计算和数据存储可以分散到互联网靠近物联终端、传感器和用户的边缘,不仅可以缓解云带宽压力,还可以优化面向感知驱动的网络服务架构。(例如家里的空调、热水器与冰箱、安防摄像头等可以通过边缘计算进行协调运行,即使是在连接不上云服务器的情况下,也能确保最佳的节能和服务状态。)

第三方数据分析机构IDC预测,在2020年全球将有约500亿的智能设备接入互联网,除了目前大火的5G通信外,包括大数据人工智能穿戴产品、无人驾驶技术、智慧城市服务等,其中40%的数据需要边缘计算服务。由此可见边缘计算有着强大市场潜力,也是当前各服务商争夺的热点。

无人驾驶技术:

无人驾驶

智能穿戴设备:
智慧城市:
要回答物联网云平台是不是还有机会的问题,首先要搞清楚几方面的状况:

一是定位。从技术角度来说,你是做物联网云平台的那一层,IaaS、PaaS、SaaS,单做某层或是混合?而技术的定位取决于:(1)你觉得那一块是你发掘出的空白或者你觉得有前景?(2)为你的客户提供什么样的价值(3)你想做什么样的商业模式。这三个问题依次定推,最后才决定了你了的技术定位和技术架构。找准定位,这是你开始一切的起点。

二是资源。这个我就不多说了,包括资金、技术、人脉、产业链合作,这是你保障自己可以开始有效行动的基础。

三是团队。团队是真正去实施理想的载体,可以是几个人的创业“作坊”,也可以是有一定规模的公司,也可以是松散的联盟组织。

其实,物联网的市场何其大,需要的云服务何其多,宏观市场和细分市场规模都足够你有所作为。做不做,做不做得好在于自己。至于,做不做设备终端,就看你是怎么玩了。

机会很大

物联网平台承上启下,是物联网产业链枢纽。按照逻辑关系和功能物联网平台从下到上提供终端管理、连接管理、应用支持、业务分析等主要功能。

通信技术发展促进连接数迅速猛增,物联网迎来告诉发展引爆点

连接数告诉增长是物联网行业发展基础

物联网发展路径为连接--感知--智能,目前处于物联网发展第一阶段即物联网连接数快速增长阶段。到2018年,全球物联网连接数将超过手机连接数。

物联网发展第一阶段:物联网连接大规模建立阶段,越来越多的设备在放入通信模块后通过移动网络(LPWA\GSM\3G\LTE\5G等)、WiFi、蓝牙、RFID、ZigBee等连接技术连接入网,在这一阶段网络基础设施建设、连接建设及管理、终端智能化是核心。爱立信预测到2021年,全球的移动连接数将达到275亿,其中物联网连接数将达到157亿、手机连接数为86亿。智能制造、智能物流、智能安防、智能电力、智能交通、车联网、智能家居、可穿戴设备、智慧医疗等领域连接数将呈指数级增长。该阶段中最大投资机会主要在于网络基础设施建设、通讯芯片和模组、各类传感器、连接管理平台、测量表具等。

物联网发展第二阶段:大量连接入网的设备状态被感知,产生海量数据,形成了物联网大数据。这一阶段传感器、计量器等器件进一步智能化,多样化的数据被感知和采集,汇集到云平台进行存储、分类处理和分析,此时物联网也成为云计算平台规模最大的业务之一。根据IDC的预测, 2020年全球数据总量将超过40ZB(相当于4万亿GB),这一数据量将是2012年的22倍,年复合增长率48%。这一阶段,云计算将伴随物联网快速发展。该阶段主要投资机会在AEP平台、云存储、云计算、数据分析等。

物联网发展第三阶段:初始人工智能已经实现,对物联网产生数据的智能分析和物联网行业应用及服务将体现出核心价值。Gartner 预测2020 年物联网应用与服务产值将达到2620 亿美元,市场规模超过物联网基础设施领域的4 倍。该阶段物联网数据发挥出最大价值,企业对传感数据进行分析并利用分析结果构建解决方案实现商业变现,同时运营商坐拥大量用户数据信息,通过数据的变现将大幅改善运营商的收入。该阶段投资者机会主要在于物联网综合解决方案提供商、人工智能、机器学习厂商等

物联网云平台是一个专门为物联网定制的云平台,物联网与普通的互联网是不同的:物联网终端设备比普通互联网手机端,电脑端多出几个数量级;普通互联网对>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/13064483.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-30
下一篇 2023-05-30

发表评论

登录后才能评论

评论列表(0条)

保存