微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 利用MSM7512B的PC机和单片机远程通信

利用MSM7512B的PC机和单片机远程通信

时间:02-09 来源:互联网 点击:

MSM7512B是一款单片FSK调制解调器。他符合ITUT V.23标准,可以支持1200 b/s半双工或1 200 b/s收/75 b/s发全双工2种数据传输方式。MSM7512B用于控制或单向数据通信比较方便,这样的系统往往执行端由小巧的单片机组成,处理控制端由计算机组成。如通过网络的远程抄表,远程报警,远程检测和远程在系统编程。但如果需要经过模拟接入网的远程双向数据通信,问题就不简单了。这就引出了如何利用 MSM7512B进行PC机和单片机之间的远程通信问题。

1通信方案与模式

通信方案应由具体应用决定。当PC机和单片机要通过公共电话交换网进行通信时,由于MSM7512B没有附加其他功能电路,因此在发起连接端需要加接拨号电路,在应答连接端需要加接振铃检测电路。如果连接请求是由计算机发起的,其通信方案可如图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误认为是信号加以接收,从而导致一些干扰数据的产生进而影响正常通信。



为此需制定新的通信时序,用以保证在通信过程中双方不可能同时出现在接收状态,也就是双方或者都处于发送状态,或者一发一收。图3表示了这种新的通信时序中PC方发数据,单片机方发应答的情形。其中Td是数据传输时延,Tc是MSM7512B模式转换时延,T1、T2为避免双方同时处于接收状态而设置的人为延迟。单片机方的保存数据仅在接收到正确的帧后操作,而若是在等待接收重传帧时则不操作,所需时间为Tsave。同样,PC方的装载数据也是在发送新帧时操作,而重传帧时也无需操作,所需时间为Tload。

在正常收发情况下(无重传),对单片机而言,一收到来自计算机的数据,紧接着就改变为发模式,但改变为发模式后并不立即发应答,而要延迟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、100ms比较合理。针对其他长度的T1,T2的选取可以用试凑法,测试多组数据比较选取较好的。选取的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top