EM200在分布式探测站组网通信的应用
图4是模块与UIM卡的连接电路,其中33 pF电容用于滤去射频电路产生的干扰。本文引用地址:https://www.eepw.com.cn/article/155305.htm
目前大多数ARM7都具有两组以上串口,其中通常有一组带有完整的调制解调器接口,如LPC2214的串口。LPC2214作为DTE(数据终端设备)通过串口1与作为DEC(数据通信设备)的EM200相连,需要注意的是DTE与DCE之间的连接不需要交叉TXD/RXD线。
3 双串口的管理
如图2所示,收发端均需要管理两组串口。对于接收端而言,当获取来自CDMA网络的数据后,MCU从串口1接收EM200的数据包,解包分析后将有效数据通过串口0发送给融合中心。如图5所示,此时MCU只需处理串口1的接收中断,串口0可以采取查询方式发送。
在发送端,MCU从串口0接收来自探测站的数据,并将数据按AT指令TCP发送格式打包,经串口1发送给EM200。由于AT指令的操作是交互式的,在MCU发出下一条TCP指令给EM200前,必须确认已收到EM200之前AT指令执行后的应答响应,否则极可能导致发送失败。由于需接收AT指令执行后的应答响应,串口1既要发送也要接收,再加上串口0的接收中断,MCU需要同时处理两组串口中断,如图6所示。
3.1 发送端面临的问题
发送端面临的最大问题是如何兼顾两组串口的接收中断,即当两个串口同时接收到数据时,如何保证无丢失地全部接收。
虽然LPC2214的两个16C550标准串口自带16 BFIFO缓存,却仍难以同时兼顾两个串口的接收操作。
具体问题为,在两个串口同时接收到超过其FIFO缓冲容量的连续数据时,MCU只能响应高优先级串口中断,在低优级串口中断被暂时屏蔽期间,低优先级中断的串口会因自身FIFO缓存溢出导致数据丢失。
实际使用中,MCU一方面需要接收来自探测站的数据,另一方面还要接收EM200返回的之前AT指令执行后的应答响应。工作中TCP发送指令执行后的应答结果为“CRLF%TCPSEND:1,XCRLF”,其中CR和LF分别表示回车和换行,X代表发送指令中的有效数据个数,可能是1~1 024之间的任意数值,另外在1和X前面还分别有一个空格。应答结果共计18~21 B,超过了串口的16 B FIFO缓存容量,在中断被屏蔽而得不到及时响应时,无疑会导致FIFO缓存溢出。
评论