一种具有传输优先级的串口复用器实现方法

文档序号:6502497阅读:129来源:国知局
一种具有传输优先级的串口复用器实现方法
【专利摘要】本发明公开了一种具有传输优先级的串口复用器实现方法,可以将多个串口(称为扩展串口)数据复用到一个串口(称为主串口)上进行传输。所述方法包括:通过添加帧头帧尾的方式区分各扩展串口;可将扩展串口中的一个设置成高传输优先级,或将全部扩展串口都设置成低传输优先级,高传输优先级扩展串口优先占用主串口进行数据传输。每个扩展串口都有一个接收数据缓存区和发送数据缓存区,用来缓存串口数据,由单片机控制各缓存区内的数据分时传输。本发明解决了实际应用中设备串口资源少的问题,同时还可以设置扩展串口传输优先级,具有高传输优先级串口的数据传输延迟最小。本发明具有通讯速率快、误码率低、配置灵活、简单实用、成本低等优点。
【专利说明】-种具有传输优先级的串口复用器实现方法

【技术领域】
[0001] 本发明涉及一种具有传输优先级的串口复用器的实现方法,属于通信【技术领域】。

【背景技术】
[0002] 串行接口作为一种简单可靠的通讯接口,在数据通信设备中得到了广泛的应用, 主要的串行接口标准有RS232、RS422、RS485等。无线通信电台或通用的通信设备上一般只 有一个或两个串口,但在实际应用中,常常需要在一个电台上同时传输多个传感器、仪器仪 表等设备的数据,例如,无人机上的机载电台,除了传输飞控数据外,通常还需要传输各种 飞行状态数据,但如果将每一路数据都单独使用一个电台进行传输,将浪费信道资源,造成 通信数据链系统的复杂。因此,将多个串口数据复用到一个串口上通过一个电台进行传输 就很必要。
[0003] 目前在工业和通信设备中使用的串口复用器有两种:一种传输可靠、性能较高,但 成本较高,而且体积较大,对于成本敏感或空间有限的应用不适合;另一种成本虽低,但存 在诸多问题,如用户不能灵活配置、支持的通讯波特率较低、当串口复用器中各个串口的通 讯波特率不同时误码率会大大增加等。同时,这两种串口复用器各个扩展串口的传输优先 级相同,不适用于对传输延迟要求比较小的信号与其它信号一起传输。因此,现有的串口复 用器的应用范围受到限制。


【发明内容】

[0004] 本发明的目的是提供一种低成本、高性能的串口复用器实现方法,在降低成本的 同时解决现有串口复用器存在的通讯速率低、误码率高、配置不灵活、不具备传输优先级等 问题。
[0005] 本发明具体实现方法包括:
[0006] 1.串口复用器共有一个主串口和五个扩展串口,通过内部单片机来控制各串口 数据的收发和完成相关数据的处理。同时,可对各串口的通讯波特率、各扩展串口的优先 级、一次可发送最大数据的帧长、低优先级串口对应传输数据的帧头帧尾、缓存区大小等参 数进行灵活配置。串口数据的传输按以下规则进行:
[0007] 1. 1.当低优先级的扩展串口向主串口发送数据时,先将该扩展串口接收到的用 户设备数据保存到对应的接收数据缓存区中;当单片机处于空闲状态时轮询各缓存区,如 果发现该接收数据缓存区中有数据等待发送,则将需要发送的数据添加帧头帧尾后发送给 主串口。
[0008] 1. 2.当高优先级的扩展串口向主串口发送数据时,如果当前有低优先级扩展串 口在向主串口传输数据,单片机先结束当前串口的数据传输,并向主串口发送该扩展串口 对应的帧尾数据后,再将高优先级的扩展串口数据优先发送给主串口。
[0009] 1. 3.当主串口向低优先级的扩展串口发送数据时,先将该数据去掉帧头帧尾后 保存到对应的发送数据缓存区中。单片机处于空闲状态时轮询各缓存区,如果发现该发送 数据缓存区中有数据等待发送,则将该缓存区内的数据发送给相应的扩展串口。
[0010] 1. 4.当主串口向高优先级的扩展串口发送数据时,单片机直接将其数据发送给 对应的高优先级扩展串口。
[0011] 2.可以设置扩展串口中的一个为高优先级,其余扩展串口都设置为低优先级,以 实现对重要数据的优先传输。也可将所有扩展串口都设置为低优先级,各扩展串口按序平 等占用主串口进行数据传输。
[0012] 3.扩展串口中,优先级高的串口数据不添加帧头帧尾,直接通过主串口传输,以 减少传输延迟。其它优先级低的扩展串口在数据传输过程中分别加入两字节的帧头和两字 节的帧尾,以区分不同的扩展串口和标识该数据帧传输结束。
[0013] 4.上电后串口复用器处于默认传输模式,当扩展串口 3接收到用户输入的配置 指令后,串口复用器将进入配置模式,可对串口复用器参数进行配置。用户输入退出指令 后,返回到传输模式。

【专利附图】

【附图说明】
[0014] 图1为本发明所提出的串口复用器实现方法的一种实施例框图
[0015] 图2为主函数程序流程图
[0016] 图3为主串口中断处理函数内状态转移图
[0017] 图4为扩展串口 1、2、4、5接收中断处理函数流程图
[0018] 图5为扩展串口 3接收中断处理函数内状态转移图

【具体实施方式】
[0019] 以下将结合附图对本发明实施方式作进一步地详细说明。
[0020] 本发明的实施例框图如图1所示,该串口复用器主要包括单片机(1)、光电隔离器 (2)、电平转换器(3)、主串口(4)、光电隔离器组(5)、电平转换器组(6)、各扩展串口(7)。主 串口(4)用于与通讯设备上的串口相连,各扩展串口(7)用于与各子设备上的串口相连。为 适用多个串口标准,本实施例中的5个扩展串口( 7 )分为3个RS232串行接口和2个RS422/ RS485串行接口。单片机(1)主要实现串口数据的收发和串口复用功能,其中各通用异步 收发器(8、9)接收到数据后将产生串口接收中断,经中断控制器(15)后交由中央处理单元 (14)处理,中央处理单元(14)控制各通用异步收发器(8、9)数据的收发和各扩展串口(7) 在主串口(4)上的传输切换。为防止数据丢失,在单片机(1)内部为每个扩展串口(7)开辟 了一个发送数据缓存区(10)和一个接收数据缓存区(11),用于缓存暂不传输的低优先级 数据。单片机(1)内的时钟分频器(12)用来为各通用异步收发器(8、9)提供时钟,以配置 各串口通讯波特率。EEPROM (Electrically Erasable Programmable Read-Only Memory, 电可擦可编程只读存储器)(13)用来保存用户配置数据。电平转换器(3)和电平转换器组 (6)实现TTL电平与RS232、RS422串口电平的转换功能。光电隔离器(2)和光电隔离器组 (5)分别接在单片机(1)与电平转换器(3)、电平转换器组(6)之间,用于屏蔽外界干扰。
[0021] 单片机内部共具有六个通用异步收发器外设,包括五个与扩展串口相连的通用异 步收发器(8)和一个与主串口相连的通用异步收发器(9),各通用异步收发器(8、9)支持高 速通讯波特率设置,具有数据接收中断功能,且中断优先级可设置。各通用异步收发器(8、 9)的数据接收采用中断方式,每个通用异步收发器(8、9)都有一个接收中断函数,当串口接 收到数据时,对应的通用异步收发器(8、9)将产生接收中断,经中央处理单元(14)响应后, 将进入该接收中断处理函数,对接收数据进行处理。通用异步收发器(8、9)的数据发送采 用状态查询方式。
[0022] 各扩展串口(7)的传输优先级使用0和1来标识,0代表高优先级,1代表低优先 级。在实际应用中,既可以将扩展串口中一个设置为高优先级〇,其余扩展串口设置为低优 先级1,也可以将所有扩展串口(7)都设置为同一优先级1。高优先级的扩展串口(7)在占 用主串口(4)进行数据传输时具有优先权,其传输延迟最小。
[0023] 为区分各个扩展串口(7)所对应的数据,单片机(1)为每个低优先级的扩展串口 分配了两字节帧头和两字节帧尾,分别添加在串口数据传输的开始和结束。主串口(4)接收 到数据后,通过帧头辨别后续数据所对应的扩展串口(7),通过帧尾断定数据传输的结束。 另外,用户也可以设置串口复用器使用转义字符,即如果在扩展串口数据中存在与两字节 帧尾相同的数据,程序会自动在这两字节数据前加入转义字符(0x00),以告知接收端后面 的两字节数据非帧尾,从而避免对接收数据的误判断。对于高优先级扩展串口(7)的数据, 为减少传输延迟,不添加帧头帧尾,直接进行传输。
[0024] 程序设计主要分为两部分:主函数设计和各串口接收中断处理函数设计。
[0025] 图2为主函数程序流程图。图中X代表扩展串口 1、2、3、4或5。在串口复用器上 电时,首先进行系统初始化,读取EEPR0M(13)中的数据,完成对串口复用器的配置。在单片 机(1)空闲时,将依次查询各扩展串口的发送数据缓存区(10)和接收数据缓存区(11 ),若 有数据需要发送,则按图2所示进行数据发送,其中低优先级扩展串口(7)发送主串口(4) 的数据需要添加帧头帧尾;每次发送完一帧数据,中央处理单元(14)都要查询一次是否有 高优先级数据等待传输,若有,则先将高优先级数据缓存区内的数据发送给主串口(4)。
[0026] 图3为主串口(4)接收中断处理函数内状态转移图。在主串口接收中断处理函数 中,需要对接收到的数据进行辨别,本发明采用状态机的方式进行处理,其状态主要包括空 闲状态、各扩展串口帧头字节2等待状态、各扩展串口数据传输状态和各扩展串口帧尾字 节2等待状态。图3中使用串口 X和串口 y分别代表五个扩展串口(7)中的任意两个。当 主串口接收状态处于空闲状态时,若接收到的数据不是各个扩展串口的帧头字节1,且当前 设置了某个扩展串口优先级为高优先级,则认为该数据为高优先级扩展串口数据,直接将 数据发送给该扩展串口;若接收到的数据为某个扩展串口的帧头字节1,则跳转到该扩展 串口等待帧头字节2状态。在等待帧头字节2状态,若接收到的数据为该扩展串口帧头字 节2,则跳转到该扩展串口的数据传输状态;若接收到的数据为另一个扩展串口的帧头字 节1,则跳转到所对应的扩展串口的等待帧头字节2状态;若接收到的数据不是各扩展串口 的帧头字节1,则返回到空闲状态。在扩展串口的数据传输状态,若接收到的数据为该扩展 串口的帧尾字节1,则跳转到等待帧尾字节2状态;若接收到的数据长度超过了最大帧长, 则认为数据在传输过程中出现了误码,直接跳转回空闲状态;接收到的其它数据则认为该 扩展串口数据,将其保存到对应的发送数据缓存区(10)中。在等待帧尾字节2状态,若接 收到的数据为该扩展串口的帧尾字节2,则跳转到空闲状态;否则跳转回数据传输状态。
[0027] 图4为扩展串口 1、2、4、5接收中断处理函数流程图。在中央处理单元(14)响应 该接收中断后,首先将串口接收到的数据保存到对应的接收数据缓存区(11)中,然后判断 该扩展串口优先级是否设置成了高优先级,若设置成高优先级,则将程序中的高优先级数 据等待传输标志置为1,以告知主函数有高优先级的数据等待发送。如果当前有其它扩展串 口正在占用主串口发送数据,则将全局变量count置为最大值(在扩展串口向主串口发送 数据时,全局变量count用来对发送的数据进行计数,以保证每次发送的数据长度不超过 用户所设置的每帧最大可发送数据长度),以结束该扩展串口的数据传输。
[0028] 图5为扩展串口 3接收中断处理函数内状态转移图。由于扩展串口 3用作正常数 据传输接口的同时,也用作串口复用器的配置接口。当用户在该串口输入一个字符" + "时, 状态机将由空闲状态跳转至中间状态P1,若用户输入的第二个字符仍为" + ",状态机继而 跳转至中间状态P2。若在P1或P2状态中,有任何非" + "字符输入,状态机将跳转回空闲 状态。当用户连续输入第三个" + "后,状态机将进入配置模式状态,串口复用器进入配置模 式,在此模式下,用户可通过指令对各参数进行设置并保存到EEPR0M (13)中,直到用户输 入退出指令后,串口复用器才返回正常传输模式,扩展串口 3跳转回空闲状态。可设置的参 数有:各串口通讯波特率、各接收数据缓存区和个发送数据缓存区的大小、各扩展串口一次 可发送数据的最大帧长、扩展串口传输优先级、各扩展串口的帧头帧尾等。在空闲状态时, 扩展串口 3接收中断处理函数采用与图4相同的方式对接收到的数据进行处理。
[0029] 主串口接收中断函数处理的任务较多,占用时间会比较长。为了保证在主串口接 收中断函数处理过程中,不影响其它扩展串口接收数据,避免数据丢失,在程序中设置主串 口中断优先级为最低,可被其它扩展串口的接收中断所嵌套。
[0030] 本发明具有以下优点:
[0031] 1.本发明可设置串口传输优先级,既能实现多串口数据传输的功能,又能保证关 键信号对延迟的要求。
[0032] 2.本发明为每个扩展串口各分配一个接收缓存区和发送缓存区,对接收到的串 口数据先进行缓存,一方面降低了在高速通讯时的误码率,提高了通讯速率;另一方面,充 分利用单片机资源,节省了成本和体积。
[0033] 3.本发明能够根据实际需要对各参数进行设置,拓宽了应用范围。与同类串口复 用器相比简单实用,成本低。
[0034] 最后应说明的是:以上所述仅为本发明的较佳实施例,而非对其限制,凡在本发明 的精神和原则之内,所作的任何修改、等同替换、改进等,均包含在本发明的保护范围之内。
【权利要求】
1. 一种串口复用器实现方法,其特征在于,所述方法包括: 串口复用器共有一个主串口和五个扩展串口,通过内部单片机来控制各串口数据的收 发和完成相关数据的处理。同时,可对各串口的通讯波特率、各扩展串口的优先级、一次可 发送最大数据的帧长、低优先级串口对应传输数据的帧头帧尾、缓存区大小等参数进行灵 活配置。串口数据的传输按以下规则进行: 1. 1.当低优先级的扩展串口向主串口发送数据时,先将该扩展串口接收到的用户设 备数据保存到对应的接收数据缓存区中;当单片机处于空闲状态时轮询各缓存区,如果发 现该接收数据缓存区中有数据等待发送,则将需要发送的数据添加帧头帧尾后发送给主串 □。 1. 2.当高优先级的扩展串口向主串口发送数据时,如果当前有低优先级扩展串口在 向主串口传输数据,单片机先结束当前串口的数据传输,并向主串口发送该扩展串口对应 的帧尾数据后,再将高优先级的扩展串口数据优先发送给主串口。 1. 3.当主串口向低优先级的扩展串口发送数据时,先将该数据去掉帧头帧尾后保存 到对应的发送数据缓存区中。单片机处于空闲状态时轮询各缓存区,如果发现该发送数据 缓存区中有数据等待发送,则将该缓存区内的数据发送给相应的扩展串口。 1. 4.当主串口向高优先级的扩展串口发送数据时,单片机直接将其数据发送给对应 的高优先级扩展串口。
2. 根据权利要求1所述的串口复用器实现方法,其特征在于,可以设置扩展串口中的 一个为高优先级,其余扩展串口都设置为低优先级,以实现对重要数据的优先传输。也可将 所有扩展串口都设置为低优先级,各扩展串口按序平等占用主串口进行数据传输。
3. 根据权利要求1所述的串口复用器实现方法,其特征在于,扩展串口中,优先级高的 串口数据不添加帧头帧尾,直接通过主串口传输,以减少传输延迟。其它优先级低的扩展串 口在数据传输过程中分别加入两字节的帧头和两字节的帧尾,以区分不同的扩展串口和标 识该数据帧传输结束。
4. 根据权利要求1所述的串口复用器实现方法,其特征在于,上电后串口复用器处于 默认传输模式,当扩展串口 3接收到用户输入的配置指令后,串口复用器将进入配置模式, 可对串口复用器参数进行配置。用户输入退出指令后,返回到传输模式。
【文档编号】G06F13/40GK104142901SQ201310165131
【公开日】2014年11月12日 申请日期:2013年5月7日 优先权日:2013年5月7日
【发明者】何苏勤, 吕咸亮, 王小庆, 熊俊, 张金剑, 路延 申请人:北京化工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1