发明内容 本发明要解决的技术问题在于避免上述现有技术的不足之处而提出一种主机与不同外设之间串行通信自适应速率的方法,使用该方法,在不同外设与主机之间能实现可插拔连接的前提下,能避免通信接口氧化和磨损问题,并能有效地规避静电,数据传输稳定。
本发明决所述技术问题可以通过采用以下技术方案来实现:
设计、使用一种主机与不同外设之间串行通信自适应速率的方法,其特征在于:包括以下步骤,
①各外设分别配置相应的接口板;所述接口板中写入与其配套外设对应的通信速率参数,使各接口板能够根据所述外设的通信速率传输数据;
②所述接口板与主机之间建立无线通信连接;
③在主机与接口板之间为半双工工作模式、外设与接口板之间为全双工工作模式,且主机与接口板之间的传输速率高于模块与接口板之间的传输速率的情况下,所述主机根据接口板之间的通信速率对自身的通信速率进行动态调整,使主机传输数据的速率与所述外设的通信速率一致,包括以下步骤:
A.所述外设向接口板发送数据,该接口板完成对所述数据的接收后将该数据发送给主机;所述外设如果没有数据发送,则由接口板向主机发送空值指令NULL;
B.所述主机接收到来自接口板的数据或空值指令NULL,如果该主机有数据发送,则发送数据至所述接口板,再由该接口板将该数据发送至所述外设;如果所述主机没有数据发送,则向所述接口板发送空值指令NULL;
C.所述接口板在发送完一帧数据,但未完成对下一帧数据的接收之前,该接口板向主机发送空闲指令IDLE;所述主机接收到空闲指令IDLE,则同样发送空闲指令IDLE给所述接口板。
所述接口板与主机之间采用红外通信连接。
同现有技术相比较,本发明的技术效果在于:可以自动适应主机各数据通道的速率,使得外设能够灵活的选择任意插槽位置。同时,在数据传输的空隙可以插入传输其它数据,具体应用到监护仪,能够实现主机对参数模块之外其它外设的控制,丰富了监护仪选择附属外设的可能,增强了系统资源的利用率。
具体实施方式 以下结合附图所示之最佳实施例作进一步详述。
以所述外设是用来测量人体各种生理信号的监护仪参数模块,所述主机是监护仪本体为例,对本发明方法进行说明如下:
监护仪的参数模块内部电路设计各种各样,但是它们通常都使用串口通信,但是不同参数模块的串口数据速率不同。监护仪主机与不同参数模块之间串行通信自适应速率的方法,包括以下步骤:
①各外设分别配置相应的接口板;所述接口板做成个性化的,采用现场可编程门阵列器件FPGA或复杂可编程逻辑器件,利用FPGA或CPLD器件可编程的特点写入与其配套外设对应的通信速率参数,使各接口板能够根据所述外设的通信速率传输数据;
②所述接口板与主机之间建立无线通信连接;本实施例中,接口板以红外线与主机通信,速率设置为远高于串口速率(比如1.152Mbps,这比串口的最快速率快10倍),接口板实现一个串口与红外的转换功能。
③所述主机根据各接口板的通信速率对自身的通信速率进行动态调整,使该主机传输数据的速率与所述外设的通信速率一致。
在接口板与主机之间采用红外通信的情况下,由于参数模块相对于红外传输是慢速设备,在接口板向主机发送数据时没有问题,但是主机如果向接口板以红外传输速率发送数据,就会由于模块的接收速度慢而使接口板的存储器件堵塞,因而需要做流量控制。另一方面,由于红外通信是半双工工作模式,而参数模块通常采用全双工工作模式,所以同时需要做调度。
为了实现对参数模块、接口板和主机之间的流量控制,以及半双工工作模式和全双工工作模式之间调度,如图2所示。图2中T表示参数模块的一个发送数据周期参数,参数模块和主机之间的通信自适应速率的方法包括以下步骤:
A.所述外设向接口板发送数据,该接口板完成对所述数据的接收后将该数据发送给主机;所述外设如果没有数据发送,则由接口板向主机发送空值指令NULL;
B.所述主机接收到来自接口板的数据或空值指令NULL,如果该主机有数据发送,则发送数据至所述接口板,再由该接口板将该数据发送至所述外设;如果所述主机没有数据发送,则向所述接口板发送空值指令NULL;
C.所述接口板在发送完一帧数据,但未完成对下一帧数据的接收之前,该接口板向主机发送空闲指令IDLE;所述主机接收到空闲指令IDLE,则同样发送空闲指令IDLE给所述接口板。
对于数据和指令可以作如下定义:红外传输的一帧数据格式为9位,8位数据,1位标志,标志为0表示后8位为传输数据,为1表示后8位为指令,指令如何编码对本方法无影响。
如图1所示,监护仪主机与参数模块之间串行通信自适应速率的方法具体包括以下步骤:
a.所述接口板将所述参数模块发来的数据写入该接口板的第一先进先出存储器FIFO,每当所述参数模块发送完一帧数据时,接口板的发送逻辑器件便从所述第一先进先出存储器FIFO中读取数据,如果有数据,则将该数据编码后发送至主机;如果没有数据,则发送空值指令NULL;在所述发送逻辑器件两次读取所述第一先进先出存储器FIFO的时间间隔内,该接口板向主机发送空闲指令IDLE;
b.所述接口板将数据或指令发送至主机后,切换至接收模式;
c.所述主机接收来自接口板的数据或指令并解码,如果是数据,则将该数据写入所述主机内的第二先进先出存储器FIFO中,发中断让由该主机的中央处理器CPU来读取;
d.所述主机在接收到来自所述接口板的数据、空值指令NULL或空闲指令IDLE后,切换至发送模式,如果所述主机的第三先进先出存储器FIFO中有数据,则将数据编码后发送至接口板;如果所述第三先进先出存储器FIFO中没有数据,就发送空值指令NULL到接口板;如果所述主机接接收的是空闲指令IDLE,则同样发送空闲指令IDLE给所述接口板;
e.所述接口板收到来自所述主机的数据、空值指令NULL或空闲指令IDLE后,如果是数据,则将该数据解码后写入该接口板的第四先进先出存储器FIFO,并将所述数据传输至所述参数模块。
所述接口板和主机均可以采用中速红外线编码器/解码器、高速红外线编码器/解码器或者更快速的机制对数据进行编码/解玛。所述参数模块与接口板之间可以采用UART、SPI(串行外设接口)、I2S或I2C等接口。本实施例中,采用的是中速红外线MIR编码器/解码器和通用异步接口UART。
本实施例的方法既可以完成调度,又可以做流量控制,更重要的是主机侧可以用一种统一的机制自动适应各种不同的参数模块通信速率。接口板能够根据模块的速率传输数据。主机做成统一的逻辑,根据接口板的速率对传输速率进行动态调整。保证了主机发送逻辑发送的数据速率与模块的通信速率完全一致,从而主机使用统一的机制完成了对各参数模块速率的自适应。
图3是一个表示整个通信过程的例子,本例中红外传输速率是模块速率的8倍,也就是说,外设参数模块发送一个数据,红外传输只需要1/8的时间即可完成向主机的发送。图3中,MDATA表示模块向主机发送的数据,HDATA表示主机向参数模块发送的数据,我们定义红外传输一个数据的时间为1个周期,这样参数模块串口的传输时间为8周期。图3中,参数模块发送了一个数据MDATA1,接口板在第8个周期完成MDATA1的接收,并发送给主机,这时主机有一个数据HDATA1在等待,主机收到MDATA1后发送HDATA1,接口板接收到HDATA1后,用8个周期发送给参数模块。参数模块在第9周期又发送了一个数据MDATA2,接收MDATA2需要8周期,在完成MDATA2的接收前,图1中的第一FIFO是空的,这时接口板向主机发送IDLE指令,主机接收到IDLE指令,也发送IDLE指令给接口板。到第16周期,接口板接收到MDATA2,就发送给主机,主机在接收到MDATA2后,发HDATA2给接口板。如果参数模块有一段时间没有发送数据,比如MDATA2和MDATA3之间的时间,图1中的第一FIFO为空,这时接口板按参数模块的数据周期(本例是8周期)向主机发送NULL指令,主机收到NULL指令后,如有数据,就把数据发送给接口板,如图3的HDATA3,如无数据,也回发NULL指令。主机接收到NULL指令或者数据时,如没有数据需要发送到参数模块,则发送NULL指令,图3中主机收到MDATA3之后就发送了一个NULL指令。
本方法还可以扩展,如图4所示,接口板除了进行模块数据的转发外,还可以控制一些外设,如指示灯,按键或者非易失性存储器,由于贴牌生产(OEM)的参数模块往往不会将这些外设集成进去,外设扩展能力就显得特别重要。接口板可以设计按键,当按键按下时,参数模块将图3中两个数据之间或者数据与NULL指令之间的某个IDLE指令换成KEY指令,主机收到KEY指令,由CPU进行处理,主机的行为仍然按IDLE指令操作。主机可以向接口板发送指示灯指令,在图3中,主机收到IDLE指令后,如有指示灯操作,就将回发的IDLE指令换成LED指令,接口板接收到LED指令后,控制指示灯的亮,灭或者闪烁,该LED指令不发送给模块。接口板可以设计非易失性存储器存储报警门限之类的信息,图3中,主机收到IDLE指令后,将回发的IDLE指令换成发送读/写存储器指令和存储器地址,如果是写存储器,还需要发送写的数据。接口板接收到存储器写指令,就将数据写入指定地址,如收到存储器读指令,就将IDLE指令换成返回的数据发送给主机。这样就实现了参数模块与外设数据流的混合传输。