Spring Cloud开源可分布式物联网(IOT)平台,完整物联网解决方案

Spring Cloud开源可分布式物联网(IOT)平台,完整物联网解决方案,第1张

基于Spring Cloud的开源可分布式物联网(IOT)平台,用于快速开发、部署物联设备接入项目,是一整套物联系统解决方案

模块划分,四层架构

 IOT 平台架构

Demo


源码获取源码地址关注后私信回复“iot平台”



本实验采用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通信

>作为一位物联网小白,是时候分享自己对物联网这个庞然大物一些简单的解析了。
众所周知,物联网的范围很广很广。在人们都意识生活离不开互联网的时候,你会发现,其实物联网也无处不在。但是物联网又没有像互联网一样应用的很明显,能够通过音视频表现出来。物联网从2016、2017年的LoRa、NB-Iot等技术站在风口上,到2018年渐渐进入一个平稳期,很多人不确定其方向到底在哪里。
近两年一直从事物联网相关的硬件产品开发,对物联网相关知识有了浅陋的了解,对物联网方向也简单认识。简答发表个人见解。
智能家居
提到智能家居,现在我们首先想到的就是AI音箱,它是智能家居的入口,它融合了AI、物联网、大数据等技术一体,实现了人与物、物与物的相连。此类产品有亚马逊的Echo、小米的小爱、京东的叮咚、阿里的天猫精灵等。已经深入到人们的生活中。与我们的智能家居(家用电器等)相接、控制,提供人们的生活质(bi)量(ge)。未来,智能家居行业将会围绕着AI音箱等作更广的发展。如扩展到智能穿戴设备、智能医疗等方面。
畜牧业、农业物联网应用
我国是一个农业大国,也是一个畜牧业大国。物联网在农业中的应用包括植物生长环境的数据采集、农业物流跟踪、食品安全跟踪、农作物生长控制等。目前的市场来看,物联网在农业方面的应用主要还是应用于农场、果蔬基地等,其他,如物流市场、食品安全市场等都还没有很好的应用。这个和现有技术、成本以及需求等相关
畜牧业主要包括牛、羊、猪、鸡鸭鹅等。物联网在畜牧业中应用案例比较多。例如,网易猪、京东的跑步鸡、牛耳标、羊耳标等。物联网在畜牧业中应用主要是动物数据采集(健康、生长周期等)、实时定位、动物溯源(食品安全)等。现在虽有大量案例,但是技术的成熟型以及产品的必要性一直制约其发展。(只针对畜牧业本身,不涉及对应的物联网+畜牧业+金融贷款的组合产品,因为涉及到畜牧业+金融,现在就可以考虑加入区块链)
工业物联网
工业物联网的市场与应用是我目前认为市场行情最好的,也是目前物联网效果最能体现的应用场景。工厂设备改造、无线监控、设备状态检测、工业园区人员监控等需求非常多。工业物联网的应用主要是现代企业需要提高效率、降低人力成本以及维护成本,而现在的物联网解决方案恰好帮助他们解决了。其次,工业应用不像商用对产品性能以及外观等最求很高,其对使用时间,寿命稳定性等要求比较高。这些恰恰是符合物联网终端设备的要求。还有就是现在的窄带物联网技术满足长距离传输需求,符合工业场所的需求。需求和技术都能满足,所以工业物联网的前景非常明朗。
智慧城市
智慧城市这个概念比较大,智慧城市的目的是方便人们生活,智慧城市的每个部分都离不开物联网,包括安防监控、环保、停车等。智慧城市的发展在一定程度上会方便人们的生活,提高生活质量。但是,从现在已经部署的智慧城市的效果来看,并不明显。个人认为其主要原因是人们对物联网的概念还不深入,一直停留在过去的生活方式中,并且生活中的一些微小的变化并不会立刻显示出来,不会像移动互联网那样表现的特别明显。我们现在要做的就是适应时代的变化,让科技进入生活,改变生活。
物联网的应用远不止这么点,它无处不在,让科技进入我们的生活,让物联网提高我们的生活质量,这个是我们作为物联网产品人的职责。让产品进入生活,改变生活,改变物与物,万物互联。

物联网的应用如下:
1、智能仓库。物联网一个很好的应用。它能准确的提供仓库管理各个环节数据的真实性,对于生产企业,可以根据这个数据合理的把控库存量,调整生产量。物联网中利用SNHGES系统的库位管理功能,可以准确提供货物库存位置,这就大大提高了仓库管理的效率。
2、智能物流。运用条形码、传感器、射频识别技术、全球定位等先进的物联网通信技术,实现物流业运输、仓储、配送、装卸等各个环节的智能化。不仅货物运输更加的自动化,而且作出的全面分析还能及时的处理问题对物流过程作出调整,优化了管理。大大提高了物流行业的服务水平,还节约了成本。
3、智能医疗。利用物联网技术,实现患者和医务人员、医疗机构、医疗设备的互动,实现医疗智能化。物联网医疗设备中的传感器与移动设备可以对患者的生理状态进行捕捉,把生命指数记录到电子健康文件中,不仅自己可以查看,也方便了医生的查阅,实现远程的医疗看病。很好的解决当前的医疗资源分布不均,看病难的问题。
4、智能家庭。物联网的出现让我们的日常生活更加的便捷。不远的将来一台手机,就可以 *** 作家里大多数的电器,查看它们的运行状态。寒冷的冬天,我们可以提前打开家里的空调,回到家就暖暖的。物联网还能准确的定位家庭成员的位置,你再也不用担心孩子跑的找不见人,省心省力。
5、智能农业。物联网在农业中的应用就更加的广泛。监测温湿度,监视土壤酸碱度,查看家禽的状态。在这些数据的支持下,农户就可以合理进行科学评估,安排施肥,灌溉。监测到的天气情况比如降水,风力等又为我们抗灾、减灾提供了依据。提高了产量,降低了减产风险。
6、智能交通。物联网将整个交通设备连在一起。主要是用图像识别为核心技术。可以准确的收集到交通车流量信息,通过信号灯等设备进行流量的控制,这个技术的运用,会让堵车成为历史。管理人员利用这个技术能将道路、车辆的情况掌握的一清二楚,驾驶违章无处可逃,交通事故也能及时的得到处理。人们的出行得到了很大的方便。
7、智能电力。电力工程是一项重大的民生工程,对电网的安全检测是一项必修科目。以南方电网与中国移动通过M2M技术进行的合作为例,因为物联网的运用,使得自动化计量系统开始启动,使得故障评价处理时间得到一倍的缩减。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存