适用于星载电子设备的异步通信串口指令快速应答方法与流程

文档序号:11154932阅读:498来源:国知局
适用于星载电子设备的异步通信串口指令快速应答方法与制造工艺

本发明涉及一种适用于星载电子设备的异步通信串口指令快速应答方法,特别是一种适用于以较低速工作时钟运行的星载电子设备的异步通信串口指令快速应答方法,属星载数字电子技术领域。



背景技术:

星载综合电子系统多设备间常采用一主多从关系通信串口进行信息交互,主机管理的从机设备数量较多时,主机按顺序向某一从机发出数据采集命令后,要求从机在收到命令后一定时间(例如3ms)内开始返回数据,若超过此时间主机未收到数据则不再等待接收该从机数据,切换至下一从机。某些从机使用的微处理器工作时钟降额后频率较低,无法满足快速响应时间要求,导致主机不能正常接收数据。



技术实现要素:

本发明解决的技术问题:克服现有技术的不足,提供了一种适用于星载电子设备的异步通信串口指令快速应答方法,解决了一主多从串口通信系统中从机因工作时钟较低无法满足主机提出的快速响应要求的问题。

本发明的技术解决方案:

适用于星载电子设备的异步通信串口指令快速应答方法,该应答方法基于MCU和FPGA组成的电路系统实现,且MCU和FPGA组成的电路系统在低工作时钟下运行;系统上电后MCU和FPGA同时运行,FPGA用于接收并解析其他星载电子设备通过异步通信串口发送过来的状态查询指令帧,并设置flag标志的值,MCU查询所述flag标志,并将MCU和FPGA组成的电路系统的状态数据发送到FPGA,FPGA再将该状态数据通过所述异步通信串口发送到所述其他星载电子设备,实现指令快速应答。

所述低工作时钟是指运行时钟低于10MHz。

所述的MCU的工作步骤如下:

(1)设置MCU两个外部中断源,第一外部中断源为FPGA串口物理层数据接收中断,第二外部中断源为FPGA产生的500us定时中断;

(2)FPGA产生500us定时中断后,进入中断服务程序ISR;

(3)在中断服务程序ISR中查询状态查询指令标志flag,若所述状态查询指令标志flag无效则退出中断服务程序ISR并返回执行步骤(2),若有效则执行步骤(4);

(4)将所述MCU和FPGA组成的电路系统的状态数据发送到FPGA的FIFO中,判断需上报的所述MCU和FPGA组成的电路系统的状态数据是否已发送完毕,若发送完毕则清除FPGA中的flag标志,退出中断服务程序ISR并返回执行步骤(2),若未发送完毕则执行步骤(5);

所述清除FPGA中的flag标志是指将flag标志值置为0;

(5)根据FIFO满标志判断FPGA的FIFO是否已满,若FIFO满标志的值为1,则退出中断服务程序ISR并返回执行步骤(2),若FIFO满标志的值为0,则向FIFO写入一字节状态数据后执行步骤(4)。

当状态查询指令标志flag为1时,状态查询指令标志flag有效,则FPGA收到并解析出其他星载电子设备通过异步通信串口发送过来的状态查询指令帧;

当状态查询指令标志flag为0时,状态查询指令标志flag无效,则FPGA未收到其他星载电子设备通过异步通信串口发送过来的状态查询指令帧。

所述的FPGA接收并解析其他星载电子设备通过异步通信串口发送过来的状态查询指令帧,设置flag标志的值,具体为:

(1)FPGA根据异步通信串口交互的双方约定的物理层协议,接收对方星载电子设备通过异步通信串口发送过来的数据;

(2)解析所述数据,如果解析到状态查询指令帧,则将状态查询指令标志flag设置为有效,即设置为1;如果未解析到状态查询指令帧,则保持状态查询指令标志flag的值不变;

该状态查询指令标志flag的初始状态为无效,即flag的值为0。

所述FPGA再将该状态数据通过所述异步通信串口发送到所述其他星载电子设备,具体为:

(1)在FPGA内部开辟预设深度的FIFO;

(2)接收MCU写入的状态数据并存入FIFO,并更新FIFO满标志的值提供给MCU,如果FIFO已满,则FIFO满标志的值为1,如果FIFO未满,则FIFO满标志的值为0;

(3)FPGA根据异步通信串口交互的双方约定的物理层协议,将FIFO中存储的状态数据按字节依次发送给对方星载电子设备,直至FIFO为空,并实时更新FIFO满标志的值提供给MCU。

FIFO的深度小于全部状态数据的长度。

本发明与现有技术相比的优点在于:

(1)电子系统多设备间采用一主多从关系通信串口进行信息交互时,通常主机以轮询方式向从机发送“状态查询指令”,从机收到后向主机回复“状态数据”。当主机管理的从机设备数量较多时,其对每一台从机的响应时间有一定要求,该时间内如未收到响应,则切换至下一从机,而不会继续等待。星载电子设备受到工作条件、器件等级,可靠性要求的限制,一般使用的处理器运行速度较低,如高等级单片机80C32最高运行时钟仅30MHz,程序代码执行的速度有可能无法满足主机提出的快速响应要求,导致主机放弃从机数据。

(2)本发明提出的一种适用于星载电子设备的异步通信串口指令快速应答方法,通过FPGA配合识别指令,MCU定时填充数据至发送FIFO的方法,弥补了MCU工作时钟低的不足,响应速度快,可以满足主机的等待时间要求。

附图说明

图1为本发明的工作原理示意图;

图2为本发明的MCU及FPGA协同工作流程。

具体实施方式

本发明使用FPGA识别指令快速响应、MCU定时填充数据发送FIFO的方法,以满足主机的等待时间要求。其原理如图1所示。

硬件电路主要由MCU+FPGA组成,且二者协同工作,MCU型号为ATMEL公司的SC80C32E,时钟频率降额使用22.1184MHz,FPGA型号为ACTEL公司的A3P250。设置MCU两个外部中断源,外部中断0为FPGA串口物理层数据接收中断,外部中断1为FPGA产生的500us定时中断。FPGA内部实现一定深度的数据发送FIFO,串口物理层解析出主机查询指令后设置指令标志,MCU在500us定时中断服务函数中查询此标志,标志有效则向FIFO连续写入待发送数据,写满为止。

按波特率115200bps、每字节11位计算,串口物理层发送一个字节耗时95us,500us内只能发送5个字节,故FIFO深度不小于6即可实现数据连续发送。MCU全部数据发送完后,清除FPGA中的指令标志,本次响应结束。

本发明提出的一种适用于星载电子设备的异步通信串口指令快速应答方法,其工作流程如图2所示。

该应答方法基于MCU和FPGA组成的电路系统实现,且MCU和FPGA组成的电路系统在低工作时钟下运行;系统上电后MCU和FPGA同时运行,FPGA用于接收并解析其他星载电子设备通过异步通信串口发送过来的状态查询指令帧,并设置flag标志的值,MCU查询所述flag标志,并将MCU和FPGA组成的电路系统的状态数据发送到FPGA,FPGA再将该状态数据通过所述异步通信串口发送到所述其他星载电子设备,实现指令快速应答。

本发明所适应的情况为低工作时钟,一般是指运行时钟低于10MHz。

MCU的工作步骤如下:

(1)设置MCU两个外部中断源,第一外部中断源为FPGA串口物理层数据接收中断,第二外部中断源为FPGA产生的500us定时中断;

(2)FPGA产生500us定时中断后,进入中断服务程序ISR;

(3)在中断服务程序ISR中查询状态查询指令标志flag,若所述状态查询指令标志flag无效则退出中断服务程序ISR并返回执行步骤(2),若有效则执行步骤(4);

当状态查询指令标志flag为1时,状态查询指令标志flag有效,则FPGA收到并解析出其他星载电子设备通过异步通信串口发送过来的状态查询指令帧;

当状态查询指令标志flag为0时,状态查询指令标志flag无效,则FPGA未收到其他星载电子设备通过异步通信串口发送过来的状态查询指令帧。

(4)将所述MCU和FPGA组成的电路系统的状态数据发送到FPGA的FIFO中,判断需上报的所述MCU和FPGA组成的电路系统的状态数据是否已发送完毕,若发送完毕则清除FPGA中的flag标志,退出中断服务程序ISR并返回执行步骤(2),若未发送完毕则执行步骤(5);

所述清除FPGA中的flag标志是指将flag标志值置为0;

(5)根据FIFO满标志判断FPGA的FIFO是否已满,若FIFO满标志的值为1,则退出中断服务程序ISR并返回执行步骤(2),若FIFO满标志的值为0,则向FIFO写入一字节状态数据后执行步骤(4)。

FPGA接收并解析其他星载电子设备通过异步通信串口发送过来的状态查询指令帧,设置flag标志的值,具体为:

(1a)FPGA根据异步通信串口交互的双方约定的物理层协议,接收对方星载电子设备通过异步通信串口发送过来的数据;

(1b)解析所述数据,如果解析到状态查询指令帧,则将状态查询指令标志flag设置为有效,即设置为1;如果未解析到状态查询指令帧,则保持状态查询指令标志flag的值不变;

该状态查询指令标志flag的初始状态为无效,即flag的值为0。

FPGA再将该状态数据通过所述异步通信串口发送到所述其他星载电子设备,具体为:

(aa)在FPGA内部开辟预设深度的FIFO;

(bb)接收MCU写入的状态数据并存入FIFO,并更新FIFO满标志的值提供给MCU,如果FIFO已满,则FIFO满标志的值为1,如果FIFO未满,则FIFO满标志的值为0;

(cc)FPGA根据异步通信串口交互的双方约定的物理层协议,将FIFO中存储的状态数据按字节依次发送给对方星载电子设备,直至FIFO为空,并实时更新FIFO满标志的值提供给MCU。

本发明中,FIFO的深度远小于全部状态数据的长度。通常,受制于FPGA实际资源使用情况,FIFO的深度不能达到全部状态数据的长度,但同时为了实现数据的连续发送,可根据串口物理层协议及MCU的定时写入周期,计算FIFO需开辟的深度。按波特率115200bps、每字节11位计算,串口物理层发送一个字节耗时95us,MCU每个定时写入周期500us内FIFO只能发送5个字节,故FIFO深度不小于6即可实现数据连续发送。

本发明提出的适用于星载电子设备的异步通信串口指令快速应答方法,解决了一主多从串口通信系统中从机因工作时钟较低无法满足主机提出的快速响应要求的问题。通过FPGA配合识别指令,MCU定时填充数据至发送FIFO的方法,弥补了MCU工作时钟低的不足,响应速度快,可以满足主机的等待时间要求。

实施例:

按照本发明描述技术方案(硬件组成和软件应答方法)设计的实际系统中,从机回复主机的状态数据长度107字节,FIFO深度为6,MCU定时写入周期500us。使用示波器测试,从机响应时间最慢不大于1ms,完全满足主机3ms等待时间的使用要求。这里响应时间指主机发出的“状态查询指令”数据串末位到从机回复的“状态数据”数据串首位之间的时间间隔。

本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1