打印
[应用相关]

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

[复制链接]
楼主: wangjiahao88
手机看帖
扫描二维码
随时随地手机跟帖
41
wangjiahao88|  楼主 | 2019-5-15 15:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
    SST2_5 VFO 16B芯片的读/写操作以字节为单位,能在2.7}3.6V电源电压下完
成读/写操作。SST2_SVF016B芯片的读写时钟最高可以达到80MHz,在最高时钟
读写时,消耗电流只有12mA,空闲时只消耗8uA电流,以突显其高速低功耗。

使用特权

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

使用特权

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

使用特权

评论回复
44
wangjiahao88|  楼主 | 2019-5-15 15:34 | 只看该作者
    目前,网络技术在电子产品中的应用越来越广,对于海洋观测系统来讲,恶
劣的海洋环境导致远程观测和控制是必然的发展趋势,因此,嵌入式设备在远程
传输数据时基本采用以太网接口,以加快数据传输的速度,同时可以实现远程控
制。IEEE 14_51.1定义的结构也是包括了网络通信部分。由于STM32F103ZET6
片内没有集成以太网MAC和PHY功能,并不能直接与网络进行通信,但其FSMC
机制支持扩展以太网通信控制芯片,实现微处理器STM32与网络端的双向通信。

使用特权

评论回复
45
wangjiahao88|  楼主 | 2019-5-15 15:35 | 只看该作者
    DM9000A是中国台湾DAVICOM公司生产的,具有高性价比和强大功能的
一款高速以太网MAC控制器,其设计目的就是实现低功耗、单电源和高性能。
    DM9000A非常适用于嵌入式系统设计。它的基本特征如下所示:
    1.集成了10/100 PHY物理层接口,带有一个通用处理器接口、EEPROM接
口;
    2.内部带有16KB的SRAM用作数据接收发送缓存区(前3KB作为数据发
送缓存区,后13 KB作为数据接收缓存区);
    3.采用3.3 V或_5 V单电源供电,功耗非常低;
    4.支持8位,16位和犯位接口访问内部存储器,以支持不同的处理器;
    _5.支持TCP/IP加速;
    6. I/O读写时间非常短,只有lOns,为整个系统提升效率。
    7.能够对DM9000A的状态直接进行命令控制。

使用特权

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

使用特权

评论回复
47
wangjiahao88|  楼主 | 2019-5-15 15:35 | 只看该作者
    STM32F103ZET6芯片通过内部FSMC机制访问DM9000A网络控制器,对
于FSMC机制来说,DM9000A就是STM32连接在外部的一个静态存储器。
    DM9000A有8位和16位两种模式,本设计采用16位模式,数据线SDO}-
SD1_5直接与STM32的I/O端口PDO}-PE15中的16个端口相连;DM9000A的
中断信号线INT与STM犯的I/O口PE2相连,在程序中激活处理器I/O口的外
部中断功能,STM32将以中断方式收发数据。DM9000A片选信号线CS#并不直
接与处理器相连,而是连接到与处理器相连的地址译码器74HC 139上。当片选
信号为低电平,IOW#写命令有效时,开始将底层传感器采集的数据通过微处理
器传入网络端口,进而上传到PC客户端。DM9000A的索引地址为Ox6C000000H,
数据地址为Ox6C000002H o
    为了保证网络可靠运行,还使用了集成网络变压器HR91110_SA-1,它自带网
络隔离器,是网络控制器和以太网相连的中间器件,起到隔直流通交流,限制高
频干扰的作用。网络通信接口电路如图4-21所示。

使用特权

评论回复
48
wangjiahao88|  楼主 | 2019-5-15 15:42 | 只看该作者
    1.对于许多使用中的微处理器来说,如果存在其他除了汇编语言之外的可
用语言,通常就是C语言。在许多情况下,其他语言根本就不可用于硬件。
    2. C语言对高速、底层、输入/输出操作等提供了很好的支持,而这些特性
是许多嵌入式系统的基本特性。
    3.由于应用的逐步增长的复杂性,高级语言的使用较汇编语言更为适合。
    4.相对于其他一些高级语言,C语言能够产生较小的和较少RAM密集性
(RAM-intensive)的代码。
    _5.增长的可移植性需求。市场竞争要求在工程项目生命周期的任何阶段,
软件可以通过移植到新的和/或低成本的处理器,目的是为了降低硬件成本。
    6.增长的自动产生C代码的使用要求。C代码需要从模型包中自动产生。

使用特权

评论回复
49
wangjiahao88|  楼主 | 2019-5-15 15:43 | 只看该作者
    根据软件层次化设计方法,整体软件系统设计为四部分:数据采集控制层、
数据传输驱动层、协议解析处理层、应用综合显示层,如图_5-1所示:
    1.数据采集控制层:主要完成底层传感器数据的采集,分为三部分,
DS 18B20温度采集程序、SHT7_5温湿采集程序,GPS数据接收程序;
    2.数据传输驱动层:完成数据传输接口的通信驱动功能,主要分为_5个部
分。
    (1 > RS-232串口通信驱动模块一一能够通过指定的端口号,根据配置的波
特率和工作模式接收GPS数据并完成TIM与NCAP之间的命令和数据传递;
    (2)网络通信驱动模块一一主要完成TCP/IP模式的网络接口通信功能,通
过指定的通信地址,根据配置工作模式完成NCAP与客户端进行双向通信;
    (    3 > SPI通信驱动模块一一根据SPI通信协议,完成TEDS数据的读写;
    (    4 ) 1-wire通信驱动模块一一根据DS 18B20的1-wire总线协议,完成温
度数据和命令的传递;
    (5)类I2C通信驱动模块一一根据SHT7_5自身的通信协议,完成温湿数据
和命令的传递。
    3.协议解析处理层:对于被协议包裹住的数据,完成数据解析功能,实现从
机读到人读的过程,主要分为两部分。
    C 1) GPS定位导航数据解析模块一一针对NEMA-O 183协议,解析出客户
端需要的各部分数据,如经纬度等。
    (    2 ) TEDS数据解析模块一一TEDS数据根据IEEE 14_51协议来存储,因此
读取之后必须对其进行解析,才能被人们所理解。
    4.应用综合显示层:主要为客户端应用程序,显示客户需要了解的底层传感
器采集的各种数据和传感器的位置信息,本章对此不加论述。

使用特权

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

使用特权

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

使用特权

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

使用特权

评论回复
53
wangjiahao88|  楼主 | 2019-5-15 15:44 | 只看该作者
    在程序开始之前,要先进行I/O端口的配置,包括I/O端口方向设置和I/O
操作函数的定义,本设计使用PG8作为两个DS 18B20与STM犯的数据端口,
输入模式定义为上拉/下拉输入模式,输出模式定义为通用推挽模式。
    首先进行时钟的初始化,本设计选用STM32系统SysTick定时器来完成延
时的计算。然后进行DS 18B20的初始化,包括DS 18B20的复位和检测。如果失
败,延时is继续进行初始化,如果成功,直接进入DS 18B20温度采集循环程序。
在循环程序中,对两个DS 18B20顺序发送命令,通过预先得到的ROM进行匹
配,读取每个DS 18B20暂存器中的数据,并计算出实际的温度值。
下面给出进行温度采集的主函数进行简单程序说明。
short DS 18B20_Get Temp(u8 ID)
{
    u8 temp, n, num;
    u8 TL, TH;
      short tem;
    num=ID一1;
    DS18B20_Start Q;                 // DS18B20开始转换温度
    DS18B20_ RstQ;                    //DS18B20复位
    DS18B20_ Check();//检测DS 18B20是否存在
    DS18B20_ Write_ Byte(Ox55);//发送匹配ROM命令
    for(n=O;n<8;n++)
      DS18B20_ Write_ Byte(DS18B20_ ROM[num][n]);//发送64 bit ROM
    DS18B20_ Write_ Byte(Oxbe);//发送读RAM命令
    TL=DS18B20_ Read_ Byte();//读取LSB
    TH=DS 18B20_ Read_ Byte();//读取MSB
    //进行温度转换
    if(TH>7)
    TH=}TH;
    TL=}TL;
    temp=0;
}
else
    temp=1;
tem=TH;
tem+=8;
tem+=TL;
tem=(float)tem*0.625;
if(temp)
      return  tem;
else
      return  -tem;
//温度为负
//温度为正
//获得高八位
//获得底八位
//转换
//返回温度值

使用特权

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

使用特权

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

使用特权

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

使用特权

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

使用特权

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

使用特权

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

使用特权

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

使用特权

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

本版积分规则