EM200在分布式探测站组网通信的应用
进程3负责从RAM缓冲区中截取一段之前串口0接收到的数据,并按AT指令TCP发送格式打包并发送给EM200模块,然后检测AT指令暂存缓冲区中的应答响应结果,判断是否立即发出下一轮TCP发送指令给EM200,如图10所示。进程3对串口1执行发送操作,实时性相对进程1和进程2要求更低,因此进程3的优先级可设为三者中最低一级。本文引用地址:https://www.eepw.com.cn/article/155305.htm
4.2.2 接收端软件设计
接收端也分为三个进程,依靠RTOS的调度机制,MCU在三个进程之间切换执行,实现接收端对来自CDMA网络数据包的接收并将解析后的有效数据发送给融合中心。
鉴于EM200收到自CDMA网络数据后会直接经串口将数据包输出的特性(不同于其他模块会将数据暂存在模块内部,只有当收到AT指令读命令后才会输出数据包),因此最高优先级进程1的任务就是通过串口1接收自EM200的数据包并将其压入在RAM开辟的缓冲区。如图11接收端的进程1架构与发送端进程1类似。
由于进程1中收到的数据包含有部分无效字符,因此中等优先级进程2负责解析缓冲区数据包中的有效数据,若检测到缓冲区中无完整的数据包,则调用RTOS提供的OSTimeDlyHMSM函数延时一定时间,在延时期内主动释放MCU的使用权,若检测到一个以上的完整数据包,则在解析处理后将有效数据送入在内存中开辟的串口0发送缓冲区,该进程架构如图12所示。
低优先级的进程3负责检测串口0的发送缓冲区是否为空,若不为空则通过串口0将缓冲区中数据发送出去,如图13所示。
只有在进程2延时期内且进程1处于挂起状态,负责串口0发送任务的进程3才得以执行。由于采用了延时的方式主动释放对MCU的使用权,因此延时的大小决定了进程3每次的执行时间,延时若设得过大可能会造成数据包解析不及时从而导致串口1收到的数据包在接收缓冲区中大量堆积,使得实时性大大降低。延时若设得过小则会导致进程3在发送一段较长的数据时被经常打断,微控制器的处理资源被浪费在频繁的进程切换上,综合考虑此处将延时设定为50ms。
5 结语
本文介绍了一套基于EM200模块的CDMA数据收发系统,利用该系统组建的分布式探测网络可适应各种地理环境,结合CDMA系统较短的传输时延配以合理的软硬件设计,能够确保整个网络较高的实时性能,满足分布式无源探测信息融合系统组网通信要求。
评论