购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.2 初步理解UE与MPO的构件UECom

在UE编程中,UE与MPO的构件UECom是NB-IoT通信的重要一环。本节将给出其设计要点、头文件及使用方法。

4.2.1 UECom构件的设计要点

UECom构件是MCU与MPO的沟通桥梁,属于嵌入式应用层驱动构件。通过UECom构件,可以方便地实现联网功能。无论哪个型号的通信模组,其对外功能都应该是一致的,共性方面主要有初始化、发送与接收。发送与接收函数又可分为带帧格式与不带帧格式。带帧格式的发送与接收函数和人机交互系统的HCICom相对应,较为常用;不带帧格式的发送与接收函数用于透明传送(透传)编程。此外,UECom构件还提供了较为常用的其他API函数,例如,开关通信模块电源、获取基站信息及获取模组信息等函数。

UECom构件设计主要围绕 低功耗支持、使用方便性、数据完整性、安全性 等四个方面。

1.低功耗支持

在硬件上,G E C包含控制通信模组电源的模块,为软件干预通信模组的电源提供了硬件支撑。基于该硬件模块,在软件上设计了控制通信模组的电源函数UECom_switch,以便在不使用NB-IoT通信时彻底关断通信模组,从而减少其静态功耗,为GEC的低功耗设计提供基础。

2.使用方便性

MCU与通信模组之间采用串口进行通信,使用AT指令进行通信编程。一般来说,AT指令由厂家在通信模组手册中给出,少则几十条,多则近百条,而且不同的通信模组厂家,其 AT 指令的语义也不尽相同,与以太网的通信协议也可能不同。为了方便用户编程,降低开发难度,通过分析其共性技术,AHL-IoT-GEC 从知识要素的角度封装了 UECom,提供了初始化、发送与接收等函数,把各种差异封装在GEC内部的BIOS中,使得应用程序与通信模组的厂家无关。为了不占用过多的MCU资源,并能够迅速做出响应,UECom构件的接收函数采用中断的方式接收通信模组的返回数据。

3.数据完整性

为了保证数据完整性,在 UECom 构件的封装中采用了帧结构,与人机交互系统的HCICom相对应,自封自解,与用户层编程无关,并同时增加了CRC校验。循环冗余校验码(Cyclic Redundancy Code,CRC)是数据通信领域中最常用的一种查错校验码。其特征是信息字段和校验字段的长度可以任意选定,具有数据传输检错功能,可对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。针对MCU资源紧张的特点,UECom构件采用了CRC16(即16位CRC校验)算法。

4.安全性

在安全性方面,用户可以将密文提交给UECom构件传输,由PC方的HCICom构件接收密文,再直接传给HCI方的应用程序,满足用户“自我加密,自我解密”的要求。此外,UECom与HCICom构件还形成了构件层“自我加密,自我解密”,即在上行时UECom构件将传入的用户数据加密,HCICom构件收到密文并解密后交给应用层;下行时则相反。通过构件层及应用层的两层加密机制,再加上信息邮局(MPO)的加密,极大地增强了数据传输的安全性。

4.2.2 UECom构件的头文件

通过4.2.1节对UECom构件的设计要点分析,表4-2给出其15个接口函数的简要描述。

表4-2 UECom构件15个接口函数的简要描述

下面给出了uecom.h文件中各函数接口介绍。

4.2.3 UECom构件的使用方法

1.UECom构件的基本使用步骤

使用 UECom 构件需要先根据实际项目配置 uecom.h 文件中的宏,然后进行应用,基本使用步骤如下。

(1)打开通信模组的电源,使通信模组处于供电状态。若需重启通信模组,则先关闭电源,短暂延时后再开启通信模组的电源。

(2)初始化UECom构件。与通信模组建立串口通信,并获取SIM卡的IMSI。

(3)与网络运营商的基站建立连接。在基站连接成功后,与指定的服务器和端口建立TCP连接。若连接失败,则返回失败提示,并继续尝试连接。

(4)获取通信模组相关信息、GNSS 定位信息、与基站相关的信息,以及金葫芦套件型号、版本号等信息。

(5)在有发送请求时,开启发送模式,将数据通过已经建立的TCP通道发送出去。

(6)开启 UECom 构件的串口中断,通过串口中断接收网络发送来的数据,并进行相关数据处理。

2.理解UECom构件基本使用步骤—流程举例

下面给出UECom构件的一个使用样例,此样例用于实现基于UECom构件的发送与接收过程。

(1)通信模组供电。调用uecom_power函数为通信模组供电。宏定义UECOM_ON为打开通信模组电源,控制通信模组电源状态。在设置完成后,等待6 s,保证电源打开成功。

(2)UECom构件初始化。调用uecom_init函数,完成UECom构件初始化。若成功初始化,则继续下面的流程;若初始化失败,则直接退出。

(3)连接基站。调用uecom_linkBase函数,连接指定服务器。若成功连接基站,便可以继续连接指定服务器;若连接失败,则直接退出。

(4)连接服务器。调用 uecom_linkCS 函数,连接基站。若成功连接服务器,则继续下面的流程;若连接失败,则直接退出。

(5)获取通信模组信息。调用uecom_modelInfo函数,获取通信模组信息,包括IMEI和IMSI。若获取失败,则直接退出。

(6)发送数据。调用 uecom_send 函数,发送数据。将组帧完成的数据 mSendData 通过TCP连接发送出去。若发送失败,则直接退出。

(7)接收数据。通过串口中断函数接收网络发送来的数据,根据 gRecvLength 判断是否接收到数据。在接收到数据后,进行相关的数据处理。

3.UECom构件基本使用例程代码

基于4.2.2节介绍的UECom构件头文件,下面给出UECom构件的一个使用样例的详细代码。 3jmoSTbXgyvhjINDSt54pPdsgVz45Ra+2kEixGky2lE1KgGks3dhpN8i7BZFpnKZ

点击中间区域
呼出菜单
上一章
目录
下一章
×