《物联网大亨》百度网盘txt最新全集下载:
链接:>pwd=8fus 提取码:8fus
简介:
小明下了班,掏出手机,在同事羡慕的眼光中点开一个突突软件。同事一:小明真是大方,用昆仑手机!
2、OpenEdge是ProgressSoftwar公司的一款商业网关软件。它提供了一系列工具和API,用于管理设备、数据采集和分析。
3、AzurIoTEdge是微软公司的一款物联网网关软件,可以在本地处理和分析设备数据。本实验采用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通信
>
1、ActiveDirectory改进
在Windows2000引入的MicrosoftActiveDirectory服务简化了复杂网络目录的管理,并使用户即使在最大的网络上也能够很容易地查找资源。此企业级目录服务是可扩展的,完全是基于Internet标准技术创建的,并与WindowsNETServer2003标准版、WindowsNETServer2003企业版和WindowsNETServer2003Datacenter版中的 *** 作系统完全集成。
WindowsServer2003为ActiveDirectory提供许多简捷易用的改进和新增功能,包括跨森林信任、重命名域的功能以及使架构中的属性和类别禁用,以便能够更改其定义的功能。
2、组策略管理控制台
管理员可以使用组策略定义设置以及允许用户和计算机执行的 *** 作。与本地策略相比,企业用户可以使用组策略在ActiveDirectory中设置应用于指定站点、域或组织单位的策略。基于策略的管理简化了系统更新 *** 作、应用程序安装、用户配置文件和桌面系统锁定等任务。
组策略管理控制台(GPMC)预计可作为WindowsServer2003的附加程序组件使用,它为管理组策略提供了新的框架。有了GPMC,组策略使用起来将更简单,此优势将使更多的企业用户能够更好地使用ActiveDirectory并利用其强大的管理功能。
3、策略结果集
策略结果集(RSoP)工具允许管理员查看目标用户或计算机上的组策略效果。有了RSoP,企业用户将具有强大灵活的基本工具来计划、监控组策略和解决组策略问题。
RSoP是以一组Microsoft管理控制台(MMC)管理单元的形式提供的结构。这些管理单元让管理员以两种模式确定并分析当前的策略集:登录模式和计划模式。在登录模式中,管理员可以访问已应用到特定目标的信息。在计划模式中,管理员可以看到策略将如何应用到目标,然后在部署组策略的更改之前进行检查其结果。
4、卷影子副本恢复
作为卷影子副本服务的一部分,此功能使管理员能够在不中断服务的情况下配置关键数据卷的即时点副本。然后可使用这些副本进行服务还原或存档。用户可以检索他们文档的存档版本,服务器上保存的这些版本是不可见的。
5、InternetInformationServices60
InternetInformationServices(IIS)60是启用了Web应用程序和XMLWeb服务的全功能的Web服务器。IIS60是使用新的容错进程模型完全重新搭建的,此模型很大程度上提高了Web站点和应用程序的可靠性。
现在,IIS可以将单个的Web应用程序或多个站点分隔到一个独立的进程(称为应用程序池)中,该进程与 *** 作系统内核直接通信。当在服务器上提供更多的活动空间时,此功能将增加吞吐量和应用程序的容量,从而有效地降低硬件需求。这些独立的应用程序池将阻止某个应用程序或站点破坏服务器上的XMLWeb服务或其他Web应用程序。
IIS还提供状态监视功能以发现、恢复和防止Web应用程序故障。在WindowsServer2003上,MicrosoftASPNET本地使用新的IIS进程模型。这些高级应用程序状态和检测功能也可用于现有的在InternetInformationServer40和IIS50下运行的应用程序,其中大多数应用程序不需要任何修改。
6、集成的NET框架
MicrosoftNET框架是用于生成、部署和运行Web应用程序、智能客户应用程序和XMLWeb服务的MicrosoftNET连接的软件和技术的编程模型,这些应用程序和服务使用标准协议(例如SOAP、XML和>
NET框架为将现有的投资与新一代应用程序和服务集成起来而提供了高效率的基于标准的环境。
另外,它帮助企业用户解决部署和 *** 作Internet范围的应用程序所遇到的问题。
有了完全集成在WindowsServer2003 *** 作系统内的NET框架,开发人员可以从编写“管道”代码中解放出来,从而可以将他们的精力集中在实现真正的商业价值方面。NET框架兼顾了集成和管理细节,降低了编码复杂性并增加了一致性。
7、命令行管理
WindowsServer2003系列的命令行结构得到了显著增强,使管理员无须使用图形用户界面就能执行绝大多数的管理任务。最重要的是通过使用Windows管理规范(WMI)启用的信息存储来执行大多数任务的功能。此WMI命令行(WMIC)功能提供简单的命令行界面,与现有的外壳程序和实用工具命令交互 *** 作,并可以很容易地被脚本或其他面向管理的应用程序扩展。
总之,WindowsServer2003系列中更强大的命令行功能与现成的脚本相结合,可与其他通常具有更高所有权成本的 *** 作系统的功能相抗衡。习惯使用命令行管理UNIX或Linux系统的管理员可以继续从WindowsServer2003系列中的命令行进行管理。
8、集群(8节点支持)
此服务仅用于WindowsServer2003企业版和WindowsServer2003Datacenter版,它为任务关键型应用程序(例如数据库、消息系统以及文件和打印服务)提供高可用性和伸缩性。通过启用多服务器(节点)集中工作从而保持一致通讯。如果由于错误或维修使得集群中的某个节点不可用,另一个节点将立即开始提供服务,此过程称为故障转移。正在访问该服务的用户将继续他们的活动,而不会察觉到该服务现在是由另一台服务器(节点)提供。
WindowsServer2003企业版和WindowsServer2003Datacenter版都支持多达8个节点的服务器集群配置。
9、安全的无线LAN(8021X)
根据WindowsServer2003系列对8021X的支持,公司可以寻求一种安全模型,该模型将确保所有物理访问都是已授权和加密的。使用基于8021X的无线访问点或选项,公司可以确保只有受信任的系统才能与受保护的网络连接并交换数据包。因为是由8021X决定动态密钥,因此通过解决与有线设备隐私(WEP)(由IEEE80211网络使用)相关联的许多已知问题将会显著改善8021X无线网络加密。
此功能为无线局域网(LAN)提供了安全和性能方面的改进,如访问LAN之前的自动密钥管理、用户身份验证和授权。当有线以太网在公共场所使用时,它还提供对以太网络的访问控制。
10、紧急管理服务:无外设服务器支持
“无外设服务器”功能使IT管理员在没有监视器、VGA显示适配器、键盘或鼠标的情况下也能安装和管理计算机。紧急管理服务是一种新增功能,它使IT管理员在无法使用服务器时通过网络或其他标准的远程管理工具和机制,执行远程管理和系统恢复任务。
MQTT协议是广泛应用的物联网协议,使用测试MQTT协议需要MQTT的代理。有两种方法使用MQTT服务,一是租用现成的MQTT服务器,如阿里云,百度云,华为云等公用的云平台提供的MQTT服务,使用公用的MQTT服务器的好处是省事,但如果仅仅用于测试学习还需要注册帐号,灵活性差些,有的平台还需要付费。另一方法是自己使用开源的MQTT组件来搭建。MQTT服务器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。
这里介绍的是用轻量级的mosquitto开源项目来搭建一个属于自己的MQTT服务器。
第一步:需要安装一台linux主机,这不多介绍,可以使用真机安装也可以使用虚拟机安装。如果仅仅是自己测试使用都可以。
第二步:下载mosquitto需要的依赖
sudo apt-get install libssl-devsudo apt-get install uuid-devsudo apt-get install cmake
第三步:下载mosquitto并解压,现在mosquitto官网最新的版本是151
tar xzvf mosquitto-151targz
第四步:编译
cd mosquitto-151/
make
make install
第五步:启动mosquitto
/mosquitto -v
1535473957: mosquitto version 151 starting
1535473957: Using default config
1535473957: Opening ipv4 listen socket on port 1883
1535473957: Opening ipv6 listen socket on port 1883
这时候mosquitto就会以默认的参数启动。如果需要带配置文件可以修改配置文件mosquittoconf,
启动时候加上参数 -c,
/mosquitto -c mosquittoconf
可以看到,mosquitto监听的端口为1883
这时候我们的MQTT服务器就搭建好了。可找一个mqtt客户端来测试一下。
先发布一个主题“home/garden/fountain/2”
内容是“hello world”
这时候在mosquitto会打印出下面的log
535474247: New connection from 1921681105 on port 1883
1535474247: New client connected from 1921681105 as MQTT_FX_Client (c1, k60)
1535474247: No will message specified
1535474247: Sending CONNACK to MQTT_FX_Client (0, 0)
1535474307: Received PINGREQ from MQTT_FX_Client
1535474307: Sending PINGRESP to MQTT_FX_Client
1535474339: Received PUBLISH from MQTT_FX_Client (d0, q0, r0, m0, 'home/garden/fountain/2', (12 bytes))
1535474367: Received PINGREQ from MQTT_FX_Client
1535474367: Sending PINGRESP to MQTT_FX_Client
订阅主题“home/garden/fountain/2”
可以看到收到了自己发布的消息。
用wireshark抓包
可以看到抓到了一个MQTT的publish的报文。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)