打印
[应用相关]

STM32设计的变送器海洋观测网络化智能接口模块

[复制链接]
楼主: wangjiahao88
手机看帖
扫描二维码
随时随地手机跟帖
61
wangjiahao88|  楼主 | 2019-5-15 15:45 | 只看该作者 |只看大图 回帖奖励 |倒序浏览

使用特权

评论回复
62
wangjiahao88|  楼主 | 2019-5-15 15:46 | 只看该作者
    首先对温湿程序的时钟进行初始化,然后对PG_5, PG6进行I/O方向设置和
读写函数设计。对SHT7_5首先发送通讯复位和启动传输命令,然后分别进行湿
度和温度的测量,需要注意的是,等待接收数据的时间过长的话,需要返回到初
始位置进行通讯复位,重新开始测量。最后进行温湿值的计算。
    下面以测量温湿度程序和计算温湿度程序为例进行简单介绍:

使用特权

评论回复
63
wangjiahao88|  楼主 | 2019-5-15 15:46 | 只看该作者

使用特权

评论回复
64
wangjiahao88|  楼主 | 2019-5-15 15:47 | 只看该作者
    使用此GPS模块之前,需要使用u-center软件对其进行参数设置并进行测试。
使用软件之前,需要把GPS模块和电脑连接起来,采用USB转串口TTL模块,即
PL2303小板。接线方法如图_5-7所示。
    安装PL2303小板驱动程序之后,将其连接到电脑上,接好后GPS模块红灯亮,
如果不亮应赶快拔掉线,以免接错把GPS模块烧毁。
    安装u-center软件,在软件界面选择USB转串口的端口COM7,打开View一一
Message View界面,设置波特率为9600,刷新频率为1Hz,设置完之后点击Send
并保存,之后打开View一一Text Console,  GPS模块接收数据如图_5-8所示,说明
设置成功并且能够收到数据。

使用特权

评论回复
65
wangjiahao88|  楼主 | 2019-5-15 15:47 | 只看该作者

使用特权

评论回复
66
wangjiahao88|  楼主 | 2019-5-15 15:47 | 只看该作者
    如图_5-8所示,GPS模块收到六种GPS数据:$GPRMC, $GPVTG, $GPGGA,
$GPGSA, $GPGSV, $GPGLL。本文选用其中的$GPRMC格式的GPS数据进行
处理,因此需要对数据包头进行筛选。
    使用串口进行数据接收有两种方式,一种是查询方式,另一种是中断方式。
用查询方式,芯片必须不停地查询相应的接收标志位,这将会占用很多CPU时间。
此处GPS数据接收采用中断方式,可以避免这个问题,大大优化系统。
    软件中,采用队列方式接收串口2收到的GPS数据。队列方式提高了程序的
可理解性和数据的安全性。串口中断接收到数据后,存入队列中,在主循环中,
对队列数据进行筛选,选择$GPRMC格式的GPS数据。

使用特权

评论回复
67
wangjiahao88|  楼主 | 2019-5-15 15:48 | 只看该作者
    串行NOR FLASH通过SPI进行操作。微处理器STM32与NOR Flash的通信必
须根据NOR Flash芯片自定义的协议,通过SPI发送命令到芯片,并接收NOR Flash
芯片返回的状态信息和数据信息。
    SST2_SVF016B共有17个指令,最常用的有4个,分别是芯片擦除、写一个字
节、读一个字节和读ID。所有这些操作都通过SPI接口完成,因此还需调用SPI
初始化和SPI读写函数。
    SST2_SVF016B的一系列操作指令用于实现芯片的底层操作,每个指令都有
对应代码,只要将指令代码发送给芯片,芯片就会执行相应的底层操作。
    SST2_SVF016B所提供的底层操作包括单字节读/写数据、擦除扇区、读/写状
态寄存器、设置写保护等。底层操作对用户透明,只需要一个在用户和底层操作
间完成数据交换的接口,及用户API。这些API对用户而言,使用方便,并能够
将指定的功能分解成若干个底层操作,再调用SPI通信函数来实现这些操作,最
终实现所要求的功能。

使用特权

评论回复
68
wangjiahao88|  楼主 | 2019-5-15 15:48 | 只看该作者

使用特权

评论回复
69
wangjiahao88|  楼主 | 2019-5-15 15:48 | 只看该作者

使用特权

评论回复
70
wangjiahao88|  楼主 | 2019-5-15 15:49 | 只看该作者
    要完成TIM功能首先要先规划程序流程,本研究将TIM程序分成三个流程,
分别为:
    1.解析NCAP命令功能,其中包括读取传感器通道与读取TEDS数据等命令;
    2.读取对应通道传感器数据,这是TIM很重要的工作,要能将传感器的值经
由IEEE 14_51标准送至NCAP,后续才能将数据做分析及判断,方法是由NCAP传
送读取传感器命令以及要读取的通道位址,TIM解析后将会传回相对应的传感器
数据至NCAP;
    3.读取TEDS功能,这是IEEE 14_51标准中最为关键的一个技术,有了TEDS
辅助可使得TIM具有随插即用的功能,在读取TEDS时NCAP需先送读取TEDS命
令与要读取的通道位址,TIM会读取相对应Flash扇区,再将TEDS参数传回
NCAP。
    TIM主控程序整体流程图如图_5-12所示。

使用特权

评论回复
71
wangjiahao88|  楼主 | 2019-5-15 15:49 | 只看该作者
    要完成NCAP功能首先要设计好NCAP的主控程序,本研究将NCAP主控程序
分成2个流程,分别为:
    1.解析客户端命令功能,其中包括读取各传感器通道的数据与读取TEDS参
数等命令,并将命令及通道地址发送给TIM ;
    2.接受TIM的数据,包括传感器采集的数据和TEDS数据,将这些数据进行
协议解析或者其他的处理,经由网络接口发送到客户端应用程序。
    NCAP主控程序流程图如图5-13所示。

使用特权

评论回复
72
wangjiahao88|  楼主 | 2019-5-15 15:50 | 只看该作者

使用特权

评论回复
73
wangjiahao88|  楼主 | 2019-5-15 15:50 | 只看该作者

使用特权

评论回复
74
wangjiahao88|  楼主 | 2019-5-15 15:51 | 只看该作者
    本设计选用DM9000A作为网络通信模块的主芯片,扩展了STM32的网络通
信功能。网络通信模块的工作原理是:首先通过对DM9000A内部的一系列寄存
器进行设置,对其进行初始化,使DM9000A能够进行数据收发;对于STM32向
网络端发送数据,STM32首先根据网络通信协议封装要发送的数据,然后将封装
好的数据写入到DM9000A内部SRAM的数据发送缓存区中,并将数据长度等信
息写入相关寄存器以方便DM9000A对数据进行操作,之后对DM9000A发送数据
发送命令,DM9000A接收到命令后对数据进行自动MAC组帧然后通过网口发送
到网络端;对于网络端到STM32数据的接收,STM32首先检查接收到的数据是否
正确,如果是正确的则通过上层协议对其进行解封装[}so}0
    网络通信模块的软件设计按照层次化理念分为底层的网卡驱动程序和上层
的网络通信协议2个部分。

使用特权

评论回复
75
wangjiahao88|  楼主 | 2019-5-15 15:51 | 只看该作者

使用特权

评论回复
76
wangjiahao88|  楼主 | 2019-5-15 15:52 | 只看该作者
dm9000_ io_ write(DM9000_ NCR, 0x0);/*软件复位*/
dm9000_ io_ write(DM9000_ TCR, 0);
dm9000_ io_ write(DM9000_ BPTR, Ox3f);
/*发送轮询清除*/
/*Less 3Kb, 200}s*/
    dm9000_ io_ write(DM9000_ FCTR, FCTR_ HWOT(3) I FCTR_ LWOT(8));
                                                /*流量控制*/
    dm9000_ io_ write(DM9000_ FCR, 0x0);/*流量控制*/
    dm9000_ io_ write(DM9000_SMCR, 0);/*特殊模式*/
    dm9000_ io_ write(DM9000_ NSR,   NSR_WAKEST      I   NSR_ TX2END
NSR_TXIEND);/*清除发送状态标志*/
    dm9000_ io_ write(DM9000_ ISR, OxOf);/*清除中断标志*/

使用特权

评论回复
77
wangjiahao88|  楼主 | 2019-5-15 15:52 | 只看该作者

使用特权

评论回复
78
wangjiahao88|  楼主 | 2019-5-15 15:52 | 只看该作者

使用特权

评论回复
79
wangjiahao88|  楼主 | 2019-5-15 15:53 | 只看该作者

使用特权

评论回复
80
wangjiahao88|  楼主 | 2019-5-15 15:55 | 只看该作者
    2. RAW API
    LwIP提供了两种API函数来实现TCP/IP协议栈的主要功能,分别是:高水平
的、连续的API ( sequential API)和低水平的、基于回调函数的API ( RAW API
[54]
    sequential API接口函数则是一种高起点的函数,它并不适用于比较小的嵌入
式系统中,因为它的实现要求应用程序必须支持多线程。而RAW API接口函数在
运行时占用的内存很小,而且程序代码的执行时间也很短,非常适用于嵌入式系
统。因此,针对本设计使用的嵌入式硬件平台,本设计采用RAW API接口函数。
    这里用到的RAW API函数主要有以下这些:
    (1)应用程序状态设置函数:tcp_arg();
    (2)建立TCP连接函数:tcp_ new(), tcp_ bind(), tcp_accepted(), tcp_ listen(),
tcp_ listen_ with_ backlog(), tcp_accept(), tcp_connect();
    (    3 > TCP数据发送函数:tcp_   write()、tcp_sent ();
    (    4 ) TCP数据接收函数:tcp recv ()、tcp recved ();
    (5>应用程序轮询工作原理及相关函数:tcp_poll();
    (6)关闭与中止TCP连接函数:tcp_ close(),  tcp_abort()、tcp_  err()o
    LwIP的RAW API提供了较底层的TCP接口函数。这些函数与BSD标准的
Sockets相比虽然编程较困难,但是它们生成的代码了更小,运行占用更少的内存,
非常适合应用于RAM与CODE都是比较宝贵的嵌入式系统中。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则