看你上面的回答,你才大二,就志向于建立团队模式,精神实在可嘉,后生可畏啊。
第一、针对在校大学生,尤其是本科阶段,我觉得建立团队就可以了,不需要细到部门,你们做项目的出发点是掌握整个流程,至于讲深入研究那是以后的事情了。试问对项目没有个整体把握,何谈项目整合及深入研究?鉴于此,建议将整个团队分为两个方向----硬件、软件。当然不是说纯粹的偏硬、偏软。而是根据个人特点和熟练程度大致分组。
第二、在校大学生经费肯定紧张,利用好手头资源,看看学院有没有跟大型企业建立联合实验室,以前我们学校是和TI有合作的,所以有联合实验室。企业在建立联合实验室后,是会定时赠送板子的,假如可以的话就能借到板子,倒不是介意板子功能的多寡,确实是大厂的板子稳定性能极佳,我曾试过同一段程序烧进不同的板子,稳定性有天壤之别。所以假如条件允许,强烈建议使用大厂的板子。假如没有条件也没事,现在taobao那么发达,上去搜个单片机,最简单的就行了,价格20左右的就行,功能只要实用就好。一般来说刚起步的话,传输有个USB+串口就行了,不用太复杂。无线传输的话24ghz就行了。
第三、前面的种种都是为应用做准备的。物联网是最近几年才星期的技术,其实拆分开来说的话,并不是什么新技术。它是传感器、传输(有线、无线)、单片机、终端(复杂点的加个oracle数据库)组成。拿个简单的项目来说吧,可以生动些。不如说,无线测距系统。首先是传感器,一般用超声波距离传感器(当然你也能用激光的,但是价格的话。。。)其中的规格啊,精度啊、温度影响因子啊什么的都是需要你自己在选用前考虑的。其次需要考虑的是它与中间件(可以是单片机、FPGA等等)之间的传输方式,假如用无线的话就要去研究下射频频率,信道传输方面的知识,一般是根据传输距离来选用适合的频率,以前有用红外线的,不过那个太烂,窗口对不准就无法传输,对环境要求太高,被淘汰了。现在主流的用无线鼠标的频段24ghz,传输距离大概在10m左右,适合一般的通讯了,唯一的不足是带宽窄了点,传输速度有点影响。当然了,有钱的话完全可以采用卫星信道的嘛~呵呵。当然了,传输里面的东西就多了,深入的话可以研究协议、报头什么的,觉得TCP/IP太大众的话完全可以自己设计报头,进而发明新的协议。中间件的话你就可以随便选择啦,主导思想还是够用就好,不用浪费。接下来就是老调重谈啦,中间件和终端(一般是pc)之间的传输了,有线的话接上就ok了(此间跳过了单片机的驱动程序设计啊什么的,不过那个太深入了,暂时没必要去谈,而且一般你买的单片机什么的都是会附带的,而且会教你调通为止的,所以不必烦恼)。假如还是采用无线方式连接的话,那就要考虑干扰问题了,建议采用电脑的无线传输模式80211a/b/g/n。。。现在发展到哪代了?貌似是i?不清楚,这个你自己查吧。这样可以有效的避免干扰。至此,电脑这段就能与单片机进行数据交流了,也就是传说中的走通了,至于讲你收到的数据如何记录,怎么处理那是后话,学有余力的话,去学学oracle数据库、学学SQL语言,绝对很给力的。假如考虑后面平台移植的话JAVA是不二选择(好用又易学,我们一直用它!哈哈)当然了,前面单片机里面也是需要烧程序进去的,语言嘛,肯定不会是汇编啦,C#、C++足够了,一般还是C的多。前面不是说要分组的么,其目的也就在此了。
第四、前面已经差不多结束了,为什么要有第四?主要是其中我忘记说,你得研究下算法的,包括防碰撞算法、信道优化算法、路由算法等,防碰撞的话就是说假如在单片机的频率范围内,存在多个无线传感器都需要向单片机传输信息的话,孰先孰后的问题。现代通信中已经有了TDD、FDD、OFDM、CDMA等方式。。。考虑优化的话,就要引入代价函数、博弈论等新知识了。路由算法的话,你要考虑路由节点的可靠性、信道衰减、中继等问题。
说了那么多,算是抛砖引玉吧。都是个人对物联网的浅薄认识,算不得是给你的指导,权当是交流吧。时间不早,睡了,晚安!本实验采用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通信
>
物联网可以应用在智能住宅,农业,零售等地方。
智能住宅:最佳物联网应用理念中,有机会通过智能恒温器,空调,扬声器,宠物喂食器以及为促进和控制家庭日常 *** 作而创建的许多其他技术创新来改善空间。
农业:农民严重依赖智能设备并将其应用于农业和畜牧业管理。在性能和有效性方面,该地区最佳的物联网应用包括无人机,各种检查土壤成分和预测气候变化的工具,以及用于检测牧群成员疾病和跟踪其位置的物联网应用。
零售:在零售领域的物联网应用实例中,存在许多使用智能设备来增强店内体验的情况。
具体来说,物联网的各种应用意味着智能手机的使用能力促进零售商和买家之间的沟通,最需要的商品和服务出现在客户眼前的正确位置和右侧时刻。
NHR系列智能显示控制仪表RS-485通信中应用
01摘要
NHR系列智能显示控制仪表是经过多年开发制造经验而设计生产,集诸多全新功能于一身的新一代智能显示控制仪表。针对现场温度、压力、液位、速度、流量等各种信号进行采集、显示、控制、远传、通讯、打印等处理,构成数字采集系统及控制系统,广泛运用于电力、石化、冶金、轻工、制药、航空等诸多领域。产品的EMC设计符合GB/T176262-11相关规定,同时产品取得了CE认证。
02产品的市场背景
在自动化控制领域,随着分布式控制系统的发展,在产业上的分布式控制系统中,经常需要采用串行通讯来达到远程信息交换的目的。目前,用于串行通讯的接口标准包括:RS-232、RS-422、RS-423和RS-485。RS-232是最早的串行接口标准,广泛应用在短间隔、较低波特率串行通讯中。其后发展起来的RS-422、RS-485是平衡传送的电气标准,比起RS-232非平衡的传送方式在电气指标上有了大幅度的进步。RS-485串行接口的电气标准实际上是RS-422的变型,它属于七层OSI (open system interconnection,开放系统互连)模型物理层的协议标准。由于性能优异、结构简单、组网轻易,RS-485总线标准得到了越来越广泛的应用。下面是关于虹润NHR 系列智能显示控制仪表在RS-485通信中的应用。
03产品的技术原理
1、系统技术方案
工业场合中,经常要用一些仪表去控制如温度、液位、流量等。在某些场合,需要1台控制器灵活地控制多台仪表,以达到设计控制目的。
本文利用标准的MODBUS RTU通讯协议与 RS-485通信指令,方便的实现与多台虹润NHR系列仪表的串行通信成功的实现了用单台控制器对多台仪表的灵活控制。可编程控制器允许在一个RS-485通信接口上连接多达100台虹润仪表,仪表大于60台时,需加一个RS-485中继器,RS-485通信口通信距离长达1KM以上。
2、RS-485总线的硬件设计
考虑到此控制系统中网络节点数较多,整个网络超过100个节点,为保证通讯的可靠性和通讯效率按照仪表在系统中实现的不同功能、数据流量、实时性要求把各仪表分布到两条总线上,而且所选器件中的RS-485芯片驱动能力均达到255点,通讯速率选96Kbps,离主站最远的节点不超过50m。
3、网络协议
为了能使具体的命令、数据在网络上正确地传输,在数据链路层必须提供一定的网络协议,保证在物理层的比特流出现错误时进行检测和校正,同时实现数据帧和命令帧的功能。然而,为保证数据传输质量,对每个字节进行校验的同时,应尽量减少特征字和校验字,而常用的数据包格式由引导码、长度码、地址码、命令码、数据、校验码、尾码组成,每个数据包长度达20~30字节,在RS-485系统中显得又有些繁杂。由于MODBUS协议是公然的通讯协议,而且被很多的工控产品生产厂家支持,该协议已广泛应用于水利、水文、电力等行业设备及系统的国际标准中,因此,本系统采用MODBUS协议作为此控制系统的网络协议。
在此控制中由于对PLC和变频器的通讯数据量小而且实时性要求不高,因此采用MODBUS ASCII方式,而对单片机的数据通讯量较大且实时性要求高,因此采用MODBUS RTU方式。
04产品的应用
考虑到100台仪表在RS485总线上的实时性、有效性、正确性,现将100台虹润NHR系列智能控制仪表通讯组网分为两条总线,分别由PLC的串口扩展口分别定义为A1、B1和A2、B2 ;下面是虹润NHR系列智能控制仪表与PLC主机连接图,见图1、图2:
图1:虹润仪表与PLC组网图
图2:虹润仪表与PLC组网图
1、虹润NHR系列智能显示控制仪表通信参数配置
(1)、通信方式为RS-485, (1个起始位,1个或2个停止位,8位数据,无奇偶校验)
(2)、通信传输数据的波特率(12K 24K 48K 96K 192K)可在仪表叁数baud中设定
(3)、通信协议为标准Modbus Rtu 模式
这里重点突出可编程控制器与虹润NHR仪表RS-485接口部分。在工业现场,RS-485通信是应用较多的一种通信方式,图中可编程控制器通过RS-485通信接口与多个NHR仪表相连接,最多可达到100台,每台仪表被赋予各自的地址码,用以识别身份,( 地址码可在仪表叁数Addr中设定),子单元和主单元采用地址轮询方式。这样可编程控制器的RS-485通信口便能通过RS485总线对挂在下面的所有仪表进行控制 *** 作。
2、虹润NHR系列智能数字显示控制仪通信数据流解析
本通信协议采用标准ModBus协议,采用RTU(十六进制数)传输模式。ModBus协议是一种主---从式协议。任何时刻只有一个设备能够在线路上进行发送。由主站管理信息交换,且只有主站能发起。主站会依次对从站进行轮流查询。只有当从站地址与轮询地址相匹配,从站才能回复消息。从站之间不能进行直接通信。协议桢中不包含任何消息报头及消息结束符,消息的开始和结束依靠间隔时间来识别,当间隔时间长于或等于35个字符时,即作为检测到桢结束。如果网络内没有与查询地址相一致的从站或从站接收时CRC校验出错,主站将不会接收到返回桢,这时主站根据超时设定判断是否超时,如超时,作出重发或d出异常错误窗口动作。
协议桢定义如下:
从站地址:地址必须在1---247之间。
在同个主站网络中每个从站地址必须唯一。
0为广播地址,从站接收消息并作相应处理,但不能回复消息。
功能代码:包含读、写寄存器。
数据:以二进制代码传输。
CRC16:循环冗余校验,校验从从站地址到数据区最后一个字节,计算多项式码为A001(hex)。
(1)、通讯口设置
通讯方式 异步串行通讯接口,如RS-485,RS-232等。
波 特 率 2400~9600bps(可由设定仪表二级参数自由更改,设定仪表二级参数BT,默认4800)。
(2)、字节数据格式 HEX
一位起始位、八位数据位、一位停止位、无校验
(3)、消息桢格式(读、写功能是从主站角度定义的)
读寄存器桢
读寄存器返回桢
写寄存器桢
写寄存器返回桢
错误返回桢
功能代码表:1
错误代码表:2
3、产品
05结论
本文利用标准的MODBUS协议和虹润NHR系列智能显示控制仪表进行RS-485通信,实现了单台控制器控制多台NHR仪表的任务,并能实时检测各仪表的运行状态,整个系统控制灵活方便, 方案结构简单,开发成本低,周期短,既使在恶劣的工业环境下也能稳定工作。
智能家居产品融合自动化控制系统、计算机网络系统和网络通信技术于一体,将各种家庭设备(如音视频设备、照明系统、窗帘控制、空调控制、安防系统、数字影院系统、网络家电等)通过智能家庭网络联网实现自动化,通过中国电信的宽带、固话和3G无线网络,可以实现对家庭设备的远程 *** 控。
2、智能医疗
智能医疗系统借助简易实用的家庭医疗传感设备,对家中病人或老人的生理指标进行自测,并将生成的生理指标数据通过中国电信的固定网络或3G无线网络传送到护理人或有关医疗单位。根据客户需求,中国电信还提供相关增值业务,如紧急呼叫救助服务、专家咨询服务、终生健康档案管理服务等。智能医疗系统真正解决了现代社会子女们因工作忙碌无暇照顾家中老人的无奈,可以随时表达孝子情怀。
3、智能城市
智能城市产品包括对城市的数字化管理和城市安全的统一监控。前者利用“数字城市”理论,基于3S(地理信息系统GIS、全球定位系统GPS、遥感系统RS)等关键技术,深入开发和应用空间信息资源,建设服务于城市规划、城市建设和管理,服务于政府、企业、公众,服务于人口、资源环境、经济社会的可持续发展的信息基础设施和信息系统。后者基于宽带互联网的实时远程监控、传输、存储、管理的业务,利用中国电信无处不达的宽带和3G网张口,将分散、独立的图像采集点进行联网,实时对城市安全的统一监控、统一存储和统一管理,为城市管理和建设者提供一种全新、直观、视听觉范围延伸的管理工具。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)