无人机控制器中ARM和FPGA非相似余度通信方法与流程

文档序号:17640456发布日期:2019-05-11 00:38阅读:488来源:国知局
无人机控制器中ARM和FPGA非相似余度通信方法与流程

本发明涉及一种无人机通信与控制技术,特别是一种无人机控制器中arm和fpga非相似余度通信方法。



背景技术:

随着现代电子技术的高速发展,设计的电路越来越复杂,系统规模越来越大,通信系统及电路的设计和实现已经与功能日益强大的eda及系统仿真工具不可分割。基于arm与fpga结合的数字通信系统,可以很好地使arm处理器和fpga之间互相弥补彼此的不足,使其更适合于通信系统的设计。

fpga(现场可编程逻辑器件)是一种半定制电路,能够实现各种逻辑电路,设计灵活,逐步成为嵌入式系统技术发展的新方向,具有如下特点:随着fpga芯片规模越来越大,所含逻辑单元越来越多,可以实现的功能越来越强;fpga出厂前做过测试,设计人员只需要通过相关软硬件环境就可以实现芯片最终功能,避免很多潜在的风险;使用者可以在不更改外围电路的情况下,对fpga反复地编程、擦除,实现不同的功能;fpga具有非常高的速度,可以实现非常复杂的高速逻辑。

arm体系是一种广泛用于嵌入式系统设计的32位risc处理器架构。arm微处理器具有许多优点:体积小、低功耗、低成本、高性能;支持16位和32位双指令集,能很好的兼容8位/16位器件;大量使用寄存器,指令速度更快;大多数数据操作都在寄存器中完成;寻址方式灵活,执行效率高;指令长度固定。到目前为止,arm微处理器及技术的应用深入到工业控制、无线通讯、网络应用、消费类电子产品以及成像和安全等多个领域。

但是fpga在分析、控制、驱动应用处理等方面较为薄弱,而arm微处理器的信号处理能力和i/o口数量有限,针对以上特点,越来越多的复杂应用场合开始采用arm+fpga的综合设计方案,大幅度的减少了外部扩展器件的使用量,在综合设计成本不是很高的情况下获得较强大的功能,将是未来很长时间内电子设计的一个重要发展方向。

在arm+fpga综合设计方案中,arm与fpga需要进行实时通信,通信方式分为并行通信和串行通信两种。其中并行通信方式最大的缺点是要用大量的i/o口,这一点通常是arm处理器所不能满足的,因此在大多数情况下均使用串行通信的方式,减少i/o口的使用。

常用的串行通信方式有串口通信和spi通信,两种方式均可通过较为简单的电路设计实现全双工通信。通常在arm与fpga的通信中只使用单一的串口或者spi通信,但对于可靠性要求较高的飞控系统来说,保证飞控数据在传输时正确且无丢失是重中之重,当使用单一的通信方式时,若在传输过程中出现故障,则无法对飞行数据做进一步的分析。因此在使用到arm+fpga综合设计的飞控系统中,在arm与fpga之间使用串口和spi的双余度通信方式能够保证飞控数据传输的完整性,从而提高飞控系统的可靠性。



技术实现要素:

本发明的目的在于提供一种无人机控制器中arm和fpga非相似余度通信方法,可以实现arm和fpga之间的通信在串口和spi协议通信之间切换。

实现上述目的的技术方案为:一种无人机控制器中arm和fpga非相似双余度数据传输方法,arm采用串口或spi协议通信的方式与fpga进行通信,fpga采用串口方式向数据发送模块传输数据,包括:arm和fpga之间的数据同步化处理,fpga接收arm数据后判断数据在传输过程中是否发生故障,若发生故障则切换fpga和arm之间的数据传输方式;其中数据同步化处理包括初始化同步和进程同步。

采用上述防范,arm和fpga之间初始化同步的具体过程为:设定arm初始化完成标志位flag1、fpga初始化完成标志位flag2和同步完成标志位flag3;若arm和fpga初始化分别成功则flag1和flag2置为1,否则为0:将flag1和flag2相与的结果输出至flag3,若flag3的值为1则同步成功,否则同步失败。

采用上述方法,arm和fpga之间进行进程同步的具体过程为:设定fpga传输完成标志位spi_done和arm传输完成标志位uart_done;fpga传输一定帧数数据后执行空操作指令且spi_done置为1,arm传输一定帧数数据后urat_done置为1;当spi_done和urat_done的值均为1时arm和fpga执行下一次数据传输。

采用上述方法,arm和fpga之间初始采用串口方式进行数据的传输,且传输的数据中包括校验值,fpga采用累加和校验值判断和arm之间的通信是否发生故障,判断过程为:设定故障标志位wrong和最大循环次数n;fpga接收到arm的数据后判断校验值是否正确,若正确则判定为无故障,fpga和arm以原有的数据传输方式通信;fpga接收到arm的数据后判断校验值是否正确,若不正确则故障标志位wrong加1;若wrong累加至最大循环次数n,则fpga切换和arm之间的数据传输方式至spi协议通信。

本发明与现有技术相比,具有以下优点:(1)采用arm+fpga的综合设计方案,大幅度的减少了外部扩展器件的数量,在综合设计成本不高的情况下获得较强大的功能;(2)使用双余度的数据传输方式,解决了单一方式进行传输时,一旦数据发生故障便传输失败的问题,提高了数据在传输过程中的可靠性。

下面结合说明书附图对本发明作进一步描述。

附图说明

图1为本发明提供的通信整体框架图。

图2为初始化同步流程图和进程同步流程图,其中(a)为初始化同步流程示意图;(b)为进程同步流程示意图。

图3为故障判断流程图。

具体是实施方式

一种无人机控制器中arm和fpga非相似余度通信方法,包括以下步骤:

步骤1,用c语言对arm进行串口程序编程和spi程序编程;

步骤2,用veriloghdl语言对fpga进行编程;

步骤3,系统上电,对arm和fpga之间的数据进行同步化处理;

步骤4,arm和fpga之间进行数据传输,且fpga接收arm数据后判断数据在传输过程中是否发生故障,若发生故障则切换fpga和arm之间的数据传输方式;

步骤5,fpga将数据传送至数据发送模块发送至地面。

实现上述方法的硬件系统主要包括mpu6050模块、以stm32f767igt6为主控单元的arm开发板和以ep4ce6f22c8n为主控单元的fpga开发板。其整体框架图如图1所示。整个系统采用22.2v直流电压供电,在fpga开发板上通过电源转换模块后输出5v电压至mpu6050模块和arm开发板。其中mpu6050模块通过i2c接口连接至arm模块,arm模块和fpga模块之间通过串口、spi接口和相关控制信号线进行连接,fpga模块和地面站之间通过使用串口通信的数传模块连接。

串口通信在硬件设计上较为简单,使用一对传输线即可实现数据的双向传输,通用可编程收发波特率最高可达到27mbps,数据字长度可通过编程设置为7位、8位或9位,且其程序设计较为简单。spi通信采用四线制进行数据的全双工同步传输,在传输过程中需要主控芯片提供时钟信号,当以较快的速率进行数据传输时,其数据容易发生异常,且对pcb布局布线要求较高,程序设计上较串口通信也稍复杂。因此,本例中采用以串口通信为主,spi通信作为辅助方式,形成非相似双余度数据传输结构,以提高系统的可靠性。

mpu6050采样频率设置为50hz,即1s内进行50次俯仰角、滚转角和偏航角的获取,程序中此欧拉角数据都定义为float类型,即每个数据为4字节,根据计算得出stm32f767igt6中每秒需要传输4800位二进制数据。

步骤1中,用c语言对arm模块进行串口程序编程时,使用keil5编译软件,通过寄存器方式分别进行串口时钟使能、串口波特率配置和串口控制配置等操作。步骤2中,用veriloghdl语言对fpga模块进行串口程序编程时,使用quartusii编译软件。对arm和fpga编程时,首先都通过50mhz的clk时钟信号的分频来产生波特率值,其分频公式如下:

cclk=fclk/baudrate(1)

其中,cclk为分频系数,fclk为时钟频率,baudrate为波特率。每当计数器达到分频系数值时,发送一位数据。在串口程序中,fclk取值115200,则根据公式(1)得出,分频系数cclk为434。

步骤1中,用c语言对arm模块进行spi程序编程时,同样使用keil5编译软件,通过寄存器方式分别进行spi时钟使能、工作模式设置和使能spi等操作;在spi工作频率设置时,通过对其所在的外设总线工作频率分频得到,其频率公式如下:

fclk=fapb2/cclk(2)

其中,fclk为spi工作频率,fapb2为spi所在的外设总线2的工作频率,cclk为分频系数。本例中fapb2=216mhz,将其进行256分频,即cclk=256,根据公式(2)可得,spi的工作频率fclk约为84khz。用veriloghdl语言对fpga模块进行spi程序编程时,spi时钟相位和极性应与keil5中配置的一致,时钟信号的频率设置为25mhz,高于keil5中所设置的时钟频率,以便能够完全捕捉到arm模块传输的时钟信号。另外,在fpga模块中进行spi程序编写时,先使用2级d触发器将spi通信方式中的sclk、mosi和miso进行信号同步,同步成功后,在采集到的sclk上升沿接收数据,下降沿发送数据。

结合图2,步骤3包括初始化同步和进程同步。

初始化同步采用软件同步方式进行,具体过程为:

步骤3.1.1,设定arm初始化完成标志位flag1、fpga初始化完成标志位flag2和同步完成标志位flag3;

步骤3.1.2,若串口和spi初始化成功则分别将flag1和flag2置1,否则置0;

步骤3.1.3,将flag1和flag2相与的结果输出至flag3,若flag3的值为1,则说明同步成功,可进行下一步操作,否则输出“同步失败”。

进程同步的具体过程为:

步骤3.2.1,设定fpga传输完成标志位spi_done和arm传输完成标志位uart_done;

步骤3.2.2,fpga传输一定帧数数据后执行空操作指令且spi_done置为1,

步骤3.2.3,arm传输一定帧数数据后urat_done置为1;

步骤3.2.4,当spi_done和urat_done的值均为1时arm和fpga执行下一次数据传输。

步骤4中,在整个非相似双余度数据传输任务中,默认采用串口方式传输,传输的数据中包括校验值。结合图3,步骤4中fpga采用累加和校验值判断和arm之间的通信是否发生故障的具体过程为:

步骤4.1,设定故障标志位wrong和最大循环次数n,将“eb90”作为数据传输的开始;

步骤4.2,fpga接收到数据后,并判断校验值是否正确;

步骤4.3,若判断校验值正确则说明传输过程中无故障产生,串口打开并转步骤4.6;若wrong的值为n,则转步骤4.5;

步骤4.4,若判断校验值不正确,则wrong加1并转步骤4.2;步骤4.5,切断串口,并切换至spi协议通信方式;

步骤4.6,传输至数据发送模块传输至地面。

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