MSM7512B是一款单片FSK调制解调器。他符合ITUT V.23标准,可以支持1200 b/s半双工或1 200 b/s收/75 b/s发全双工2种数据传输方式。MSM7512B用于控制或单向数据通信比较方便,这样的系统往往执行端由小巧的单片机组成,处理控制端由计算机组成。如通过网络的远程抄表,远程报警,远程检测和远程在系统编程。但如果需要经过模拟接入网的远程双向数据通信,问题就不简单了。这就引出了如何利用 MSM7512B进行PC机和单片机之间的远程通信问题。
1 通信方案与模式
通信方案应由具体应用决定。当PC机和单片机要通过公共电话交换网进行通信时,由于MSM7512B没有附加其他功能电路,因此在发起连接端需要加接拨号电路,在应答连接端需要加接振铃检测电路。如果连接请求是由计算机发起的,其通信方案可如图1所示。
图1 通信方框图
MSM7512B的14,15脚 MOD1,MOD2是通信工作模式控制。当MOD2=0,MOD1=0时,芯片处于发送模式,只能以1 200 b/s向外发送数据;而MOD2=0,MOD1=1时,处于接收模式,可以以1 200 b/s的速率接收数据,也可以以75 b/s的速率发送数据。可惜MSM7512B没有一种模式可以以75 b/s接收数据,因此当PC机端和单片机端都采用MSM7512B时,无法用全双工发送接收数据。
然而计算机与单片机之间的数据传输是双向的,如果没有应答确认,通信过程就难以为续。这就引出了如何用2个MSM7512B以物理层的半双工实现链路层双向通信的问题。也就是说,一方使用MOD2=0,MOD1=0,另一方使用MOD2=0,MOD1=1,并且这2种模式需要在通信过程中不断转换。
2 模式转换中必须注意的问题
根据以上提出的设计方案,通过单向的通信测试发现两个方向的单工模式都是可行的。但这并不意味着半双工通信一定可行,当在连接建立后的通信过程中改变调制解调器模式从而改变收发方向时,接收的数据就会时而正确时而不正确。显然,在通信过程中转变模式是一个值得探讨的问题。经过多次反复的测试和分析,发现双机的MSM7512B都处于接收状态时,也就是两者都不发送数据时,一方居然能接收到一些奇怪的数据。这说明如果一方已经从发送模式转换为接收模式而另一方还没来得及转换,通信双方将同时处于接收状态(见图2),而这时模拟信道上信号为零,其上的噪声被MSM7512B误认为是信号加以接收,从而导致一些干扰数据的产生进而影响正常通信。
图2 一般通信时序
为此需制定新的通信时序,用以保证在通信过程中双方不可能同时出现在接收状态,也就是双方或者都处于发送状态,或者一发一收。图3表示了这种新的通信时序中PC方发数据,单片机方发应答的情形。其中Td是数据传输时延,Tc是MSM7512B模式转换时延,T1、T2为避免双方同时处于接收状态而设置的人为延迟。单片机方的保存数据仅在接收到正确的帧后操作,而若是在等待接收重传帧时则不操作,所需时间为Tsave.同样,PC方的装载数据也是在发送新帧时操作,而重传帧时也无需操作,所需时间为Tload。
图3 一发一收
在正常收发情况下(无重传),对单片机而言,一收到来自计算机的数据,紧接着就改变为发模式,但改变为发模式后并不立即发应答,而要延迟T1时间等待计算机准备好收状态再发应答。单片机发完应答后也不能立即转换为收模式,而应延迟T2时间保证计算机方在此之前已转移为发送模式。如果是确认应答,就保存数据,然后转为收模式,如果是否认应答,直接转为收模式。对计算机端而言,状态转移过程类似。即计算机一收到来自单片机的应答立即改变为发模式,如果是确认应答,装载下一组数据,然后延迟T1时间等待单片机准备好接收状态再发数据。如果是否认应答,直接延迟T1时间等待单片机准备好接收状态,然后重发数据。计算机发完数据后也不能立即转换为收模式,而应延迟T2时间保证单片机方在此之前已转移为发送应答模式。显然,在链路对称的情况下,假定装载数据和保存数据时间相同,应有T1>T2。
那么如何确定T1,T2呢?为了保证在通信过程中双方不能同时出现在接收状态(也就是双方或者都处于发送状态,或者一发一收),则不难得出如下关系式:
因为Tsave和Tload都与具体的帧长度有关,即与机器速率有关,例如单片机处理数据要慢于PC机,因此帧越长,保存数据时间就越大于装载数据时间,为保证正确的模式转换,T1随之增加。所以延时值即T1,T2的取值在数据传输速率一定时也要依具体的数据长度而定。通过实验得出当帧长度为54字节时T1,T2的取值为100 ms,50ms比较合理。而帧长度为100字节时T1,T2的取值为200 ms、100 ms比较合理。针对其他长度的T1,T2的选取可以用试凑法,测试多组数据比较选取较好的。选取的原则就是在保证数据传输可以正常进行的前提下选取较小值。
3 传输效率
从图3的时序图可以看出如下关系:
设帧长度为N1字节,应答长度为N2字节,数据传输速率为Rb/s.当每字节10个码元时,传输一段数据的总耗时Ts为
Ts≈2T1+2Tc+2Td+[(N1+N2)×10/R]×1 000 (ms)(3)
其中Td与路径长度和媒介有关,Tc与调制解调芯片有关,一般均较小。由于传输效率与传输时间成反比,因此在N1,N2,R取值一定时,式(3)表明传输效率主要由T1决定,即T1选取越小传输效率越高。注意到延时T2是为了保证通信过程中,在收方转变为发送模式之前,发方仍处于发送模式,同时也要保证在对方数据发出之前转变为接收模式,他的选取只要满足关系式(1)即可,表面上看与传输效率无关,但由于T1受到T2的制约,所以隐含着对T2的要求。由此可见,合理选取模式转换的人为延迟时间T1和T2,是提高传输效率的关键所在。
采用以上方案,PC机和单片机之间就都可以使用MSM7512B正确地进行远程数据的发送和接收了。