数据传输装置及方法
技术领域
本发明涉及物联网技术领域,具体涉及数据传输装置及方法。
背景技术
目前物联网通信已经成为一个大的发展方向,而嵌入式网络通信技术又是物联网的基础。其中,对于嵌入式设备而言,通常通过串口进行数据通信。然而随着网络技术的普及和应用的广泛,物联网通信的兴起,一些网络设备也需要接入到嵌入式***中。对于网络设备而言,通常通过网口进行数据通信的。那么,若要在同一嵌入式***中既需要接入嵌入式设备,又需要接入网络设备,就需要在原有嵌入式***的基础上添加新的电路和驱动软件,实现串口通信与网口通信的兼容。但是,这种方式会导致原有嵌入式***的电路结构发生改变,增加了电路设计的复杂性。
发明内容
有鉴于此,本发明实施例提供了一种数据传输装置及方法,以解决在同一嵌入式***中串口通信与网口通信兼容的问题。
根据第一方面,本发明实施例提供了一种数据传输装置,包括:
串口通信单元,具有至少一个串口;
网口通信单元,具有至少一个网口;
控制单元,分别与所述串口通信单元以及所述网口通信单元连接;其中,所述控制单元用于将所述至少一个串口接收到的第一串口数据转换为第一网口数据并从所述至少一个网口输出;且所述控制单元还用于将所述至少一个网口接收到的第二网口数据转换为第二串口数据并从所述至少一个串口输出。
本发明实施例提供的数据传输装置,在该装置中集成了串口通信单元与网口通信单元用于传输串口数据以及网口数据,且利用控制单元进行串口数据转网口数据,以及网口数据转串口数据,因此,通过该装置能够实现串口数据与网口数据的传输问题,后续将该数据传输装置应用至嵌入式***中时,不需要更改原有的电路和软件***,采用即插即用的策略即可较好地解决串口通信与网口通信的兼容性问题。
结合第一方面,在第一方面第一实施方式中,所述串口通信单元包括:
电平转换电路,分别与所述至少一个串口以及所述控制单元连接。
本发明实施例提供的数据传输装置,由于与串口通信的上位机以及控制单元之间的工作电压不同,因此,在串口通信单元中设置电平转换电路能够保证串口通信单元的正常工作需求。
结合第一方面,或第一方面第一实施方式,在第一方面第二实施方式中,所述网口通信单元包括:
时钟电路,与网卡芯片的时钟接口连接;
网卡芯片,与所述控制单元连接。
以太网外设电路,与所述网卡芯片连接;
本发明实施例提供的数据传输装置,在网口通信单元中采用以太网外设电路进行网口数据的传输,即采用的时直接内存访问的方式进行数据的传输,使得数据的传输不经过CPU而直接从内存存取数据,减轻了CPU资源占有率。
结合第一方面,在第一方面第三实施方式中,所述控制单元包括:
电源电路,用于向控制器提供工作电源;
所述控制器,分别与所述串口通信单元以及所述网口通信单元连接。
根据第二方面,本发明实施例还提供了一种数据传输方法,包括:
从串口通信单元的至少一个串口获取第一串口数据,和/或,从网口通信单元的至少一个网口获取第二网口数据;
将所述第一串口数据转换为第一网口数据从所述至少一个网口输出,和/或,将所述第二网口数据转换为第二串口数据从所述至少一个串口输出。
本发明实施例提供的数据传输方法,可以应用在数据传输装置中,通过串口数据转网口数据以及网口数据转串口数据,因此,通过该装置能够实现串口数据与网口数据的传输问题,后续将该方法应用在数据传输装置中,就不需要更改原有的电路和软件***,采用即插即用的策略即可较好地解决串口通信与网口通信的兼容性问题。
结合第二方面,在第二方面第一实施方式中,所述将所述第一串口数据转换为第一网口数据从所述至少一个网口输出,包括:
采用中断方式从所述至少一个串口接收所述第一串口数据;
按照第一预设协议对所述第一串口数据进行解析,得到所述第一网口数据;
通过所述至少一个网口输出所述第一网口数据。
结合第二方面第一实施方式,在第二方面第二实施方式中,所述通过所述至少一个网口输出所述第一网口数据,包括:
利用uIP协议栈通过所述至少一个网口输出所述第一网口数据。
本发明实施例提供的数据传输方法,基于uIP协议栈的运行,可以脱离操作***在裸板上运行。
结合第二方面,或第二方面第一实施方式,或第二方面第二实施方式,在第二方面第三实施方式中,所述将所述第二网口数据转换为第二串口数据从所述至少一个串口输出,包括:
采用查询方式从所述至少一个网口接收所述第二网口数据;
按照第二预设协议对所述第二网口数据进行解析,得到所述第二串口数据;
通过所述至少一个串口输出所述第二串口数据。
结合第二方面第三实施方式,在第二方面第四实施方式中,所述采用查询方式从所述至少一个网口接收所述第二网口数据,包括:
利用uIP协议栈采用查询方式从所述至少一个网口接收所述第二网口数据。
结合第二方面第四实施方式,在第二方面第五实施方式中,所述通过所述至少一个串口输出所述第二串口数据,包括:
采用直接内存访问方式通过所述至少一个串口输出所述第二串口数据。
本发明实施例提供的数据传输方法,采用直接内存访问方法输出第二串口数据,使得数据的传输不经过CPU而直接从内存存取数据,减轻了CPU资源占有率。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的数据传输装置的结构框图;
图2是根据本发明实施例的串口通信单元的结构示意图;
图3是根据本发明实施例的时钟电路的结构示意图;
图4是根据本发明实施例的以太网外设电路的结构示意图;
图5是根据本发明实施例的控制单元的结构示意图;
图6是根据本发明实施例的电源电路的结构示意图;
图7是根据本发明实施例的复位电路的结构示意图;
图8是根据本发明实施例的数据传输方法的流程图;
图9是根据本发明实施例的数据传输方法的逻辑框架图;
图10是根据本发明实施例的控制循环中的网口数据处理流程;
图11是根据本发明实施例的网口数据的接收的处理流程。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明实施例中所述的数据通信装置是用在电路***中,实现串口通信与网口通信的兼容。其中,数据通信装置既具有串口又具有网口,那么在需要解决串口通信与网口通信兼容性问题的电路***中,就可以将该数据通信装置的串口连接串口通信设备,网口连接网口通信设备,而不需要改变原有电路***的结构,实现即插即用。
本发明实施例提供一种数据通信装置,如图1所示,所述的数据通信装置包括串口通信单元10、网口通信单元20以及控制单元30。其中,控制单元30分别与串口通信单元10以及网口通信单元20连接,用于实现串口数据与网口数据之间的相互转换。
具体地,所述的串口通信单元10具有至少一个串口,各个串口均可以用于传输串口数据。例如,串口的数量可以是1个,2个,3个,或5个等等,在此对串口通信单元10所具有的串口数量并不做任何限制,可以根据实际情况进行相应的设置。
串口通信单元10在具有至少一个串口的基础上,还可以包括有其他辅助电路,例如,电平转换电路等等。关于串口通信单元10的具体结构将在下文中进行详细描述。
在本实施例中,以串口通信单元10具有5个串口为例,控制单元可以在对串口数据进行转换时,在数据包上附加上串口数据的来源,例如,可以增加与串口一一对应的标识。当某一串口接收到第一串口数据之后,控制单元30将第一串口数据转换为第一网口数据,并利用网口通信单元20的网口输出该第一网口数据。其中,控制单元30在将串口数据转换为网口数据时,可以先对串口数据进行解析,然后再转换为网口数据输出。具体的转换过程将在下文的数据传输方法中进行详细描述。
所述的网口通信单元20具有至少一个网口,各个网口均可以用于传输网口数据。例如,网口的数量可以是1个,2个或3个等等,在此对网口通信单元20所具有的网口数量并不做任何限制,可以根据实际情况进行相应的设置。
网口通信单元20在具有至少一个网口的基础上,还可以包括有其他辅助电路,例如,电源电路,插座电路等等。关于网口通信单元20的具体结构将在下文中进行详细描述。
在本实施例中,以网口通信单元20具有一个网口为例,当该网口接收到第二网口数据之后,控制单元30将第二网口数据转换为第二串口数据,并利用串口通信单元10的串口输出该第二串口数据。其中,控制单元30在将第二网口数据转换为第二串口数据时,可以先对第二网口数据进行解析,然后再转换为第二串口数据输出。具体的转换过程将在下文的数据传输方法中进行详细描述。
图1中所述的控制单元10用于实现串口数据与网口数据之间的相互转换,其可以采用可编程逻辑控制器件实现,也可以采用其他控制器实现,在此对控制单元10的具体形式并不做任何限制。在控制器的存储模块中存储有数据转换的程序,控制单元10基于存储的数据转换程序对接收到的串口数据或网口数据进行转换。具体的转换方式将在下文中进行详细描述。
本实施例提供的数据传输装置,在该装置中集成了串口通信单元与网口通信单元用于传输串口数据以及网口数据,且利用控制单元进行串口数据转网口数据,以及网口数据转串口数据,因此,通过该装置能够实现串口数据与网口数据的传输问题,后续将该数据传输装置应用至嵌入式***中时,不需要更改原有的电路和软件***,采用即插即用的策略即可较好地解决串口通信与网口通信的兼容性问题。
在本实施例的一些可选实施方式中,如图2所示,所述的串口通信单元包括电平转换电路以及一个串口。图2中的电平转换电路为MAX232为例,但是本发明的保护范围并不限于此,还可以为其他类型的电平转化电路,在此并不做任何限制,只需其能够实现与串口通信的上位机与控制单元10之间的正常通信即可。例如,与RS232串口通信的上位机典型工作电压是3V到12V,-3V到-12V,而控制单元10的工作电压是TTL电平,为了后续用户调试方便,与串口UART1连接有电平转换电路,用以和上位机进行通信。
需要说明的是,图2中电平转换电路MAX232上的连接的电容的型号可以根据实际情况进行相应的设置,图2仅仅是作为一种可选的实施方式,但是本发明的保护范围并不限于此。
在本实施例的另一些可选实施方式中,所述的网口通信单元包括时钟电路、网卡芯片以及以太网外设电路。其中,时钟电路用于向网卡芯片提供外部时钟,以太网外设电路与所述网卡芯片连接。
其中,所述时钟电路用与向网卡芯片提供时序信号。时钟电路可以采用晶振电路,或其他时钟芯片。在本实施例中,以时钟电路为外部晶振电路为例。如图3所示,采用25MHz的晶振作为外部时钟。
网卡芯片可以根据实际情况进行具体的选择,例如,可以选用DM9000A网卡芯片。该网卡芯片具有10M/1000M自适应速率,数据总线宽度设为8位,未采用中断处理方式,而采用轮询的方式。其中,所述的以太网外设的电路结构图可以采用图4所示的连接结构。网口通信单元20可以通过RJ45作为接口,用双绞线或其他网络设备连接。
在网口通信单元20中采用以太网外设电路进行网口数据的传输,即采用的时直接内存访问的方式进行数据的传输,使得数据的传输不经过CPU而直接从内存存取数据,减轻了CPU资源占有率。
作为本实施例的一种可选实施方式,如图5所示,所述的控制单元10可以采用单片机的最小***实现,所述的控制单元包括电源电路以及控制器。如图5所示,单片机最小***的工作频率为72MHz,内部包含512K的Flash,5个UART接口。
其中,电源电路用于向控制器提供工作电源。图6示出了电源电路的一个具体示意的结构图,该电源电路用于将外部5V电压转换为3.3V的电压。结合图5所示的控制单元,控制器的工作电压为2V-3.6V,利用该电源电路可以将外部电源电压转换为控制器的工作电压。图6中的稳压芯片U2用来降压,电容C1、C17、C2以及C18用来滤波,滤除输入电压波动对控制器的干扰。
图5中的控制单元还包括有复位电路。可选地,为了调试方便,本实施例中采用的复位电路如图7所示,采用上电自动复位与手动复位结合的方式。
本发明实施例还提供了一种数据传输方法,可以应用在上述实施例数据传输装置的控制单元中。具体地,如图8所示,所述的数据传输方法包括:
S11,从串口通信单元的至少一个串口获取第一串口数据,和/或,从网口通信单元的至少一个网口获取第二网口数据。
结合上述实施例中所述的数据传输装置,控制单元从串口通信单元的至少一个串口获取第一串口数据,和/或,从网口通信单元的至少一个网口获取第二网口数据。
S12,将第一串口数据转换为第一网口数据从至少一个网口输出,和/或,将第二网口数据转换为第二串口数据从至少一个串口输出。
控制单元在接收到第一串口数据之后,对第一串口数据进行解析并将其封装为第一网口数据从至少一个网口输出;和/或,控制单元在接收到第二网口数据之后,对第二网口数据进行解析并将其封装为第二串口数据从至少一个串口输出。
本实施例提供的数据传输方法,可以应用在数据传输装置中,通过串口数据转网口数据以及网口数据转串口数据,因此,通过该装置能够实现串口数据与网口数据的传输问题,后续将该方法应用在数据传输装置中,就不需要更改原有的电路和软件***,采用即插即用的策略即可较好地解决串口通信与网口通信的兼容性问题。
作为本实施例的一种可选实施方式,上述S11包括如下步骤:
(1)采用中断方式从至少一个串口接收第一串口数据。
例如,请参见图9,如图9所示,控制单元采用中断方式接收第一串口数据。
(2)按照第一预设协议对第一串口数据进行解析,得到第一网口数据。
在接收到第一串口数据之后按照第一预设协议对其进行解析,并将解析后的第一串口数据给到控制单元中的调度与管理模块。所述的第一预设协议为串口对应的通信协议,例如,当串口为RS232时,那么就利用RS232通信协议对第一串口数据进行解析。
(3)通过至少一个网口输出第一网口数据。
调度与管理模块对其进行网络数据的处理,并发送至网口进行发送。
可选地,控制单元利用uIP协议栈通过至少一个网口输出所述第一网口数据。基于uIP协议栈的运行,可以脱离操作***在裸板上运行。
在本实施例的另一些可选实施方式中,上述S12包括如下步骤:
(1)采用查询方式从至少一个网口接收第二网口数据。
控制单元采用查询方式从网口通信单元的至少一个网口接收第二网口数据,可选地,利用uIP协议栈采用查询方式从至少一个网口接收第二网口数据。
(2)按照第二预设协议对第二网口数据进行解析,得到第二串口数据。
控制单元在接收到第二网口数据之后,按照第二预设协议对第二网口数据进行解析,并利用图9中所述的调度与管理模块对解析后的数据进行串口数据的处理。
(3)通过至少一个串口输出第二串口数据。
调度与管理模块将第二网口数据处理成第二串口数据之后,通过串口通信单元的至少一个串口输出第二串口数据。
可选地,控制单元采用直接内存访问方式通过至少一个串口输出第二串口数据。其中,采用直接内存访问方法输出第二串口数据,使得数据的传输不经过CPU而直接从内存存取数据,减轻了CPU资源占有率。
在下文中,从软件实施角度对数据传输方法进行描述。所述的数据传输装置的控制单元中运行的软件分为三层,即驱动层、协议层和应用层。驱动层包含网络uIP的移植,五个串口的中断和DMA通信实现。协议层包含数据的解析、转化和组包。应用层主要处理信息和管理调度。
所述的软件移植uIP协议进行网络通信。如图9所示,图9示出了所述软件的整体逻辑框架。其中,应用功能入口:数据的流入或者程序运行的开始,分成main入口和中断入口两种,也就是所谓的嵌入式软件前后台架构。main里周期运行调度与管理,并接收网络数据,发送串口和网络数据,中断里面主要处理串口读取的数据,从而综合实现串口数据和网络数据的收发转换,即实现控制器读取网络的数据后转为串口数据发送,从串口读取的数据再通过网络发送。
具体地,初始化包括启动、时钟初始化、Flash存储初始化、DMA初始化、中断初始化、串口初始化、网络初始化等。这部分功能是程序自动完成。
配置参数可以由用户通过上位机网络助手界面操作填写,包括但不限于串口的串口号、波特率、数据位长度、停止位、奇偶校验位、数据长度;网络地址、端口号等。填写的方式和内容详见下文“协议设计”部分,即可完成配置。
(1)网络到串口
例:
com1:数据表示发给com1的数据;
com123456789:该数据原封不动发给com1口;
com223456789:该数据原封不动发给com2口;
如果数据包没有携带包头(com2等),自动从com1发出。
(2)串口到网络
串口收到的数据直接发送给网口,透传即可。(建议自带包头以便数据处理)。
(3)配置串口参数
(3.1)开启配置
其中,上位机下发协议如表1所示;下位机返回协议,无。
表1上位机下发协议
|
帧头 |
类型 |
Char |
长度 |
15字节 |
内容 |
usartConfigOpen |
例:usartConfigOpen
setUsart,com1,115200,8,1,None,end;
setUsart,com2,,9600,8,0,0,end;
停止位:0 1 2;
校验位:0 1 2。
(3.2)配置参数
其中,上位机下发协议如表2所示;下位机返回协议,无。
表2上位机下发协议
|
帧头 |
分隔符 |
数据 |
类型 |
Char |
Char |
Char |
长度 |
4字节 |
1字节 |
变长 |
内容 |
comX |
, |
波特率 |
例:com1,115200,8,1,None,end。
(4)网络参数配置
(4.1)开启配置
其中,上位机下发协议如表3所示。
表3上位机下发协议
|
帧头 |
类型 |
Char |
长度 |
13字节 |
内容 |
netConfigOpen |
例:netConfigOpen。
(4.2)配置参数
其中,上位机下发协议如表4所示;下位机返回协议,无。
表4上位机下发协议
|
帧头 |
分隔符 |
数据 |
类型 |
Char |
Char |
Char |
长度 |
3字节 |
1字节 |
变长 |
内容 |
net |
, |
配置信息 |
例:net,192.168.1.10,1000;或者:net,192.168.1.100,8080。
在配置完成之后,即可实现数据通信。其中,网络传输基于开源小型的uIP协议栈,通过移植到stm32在网络层和协议层通过TCP处理以太网数据。在物理层和数据链路层中,以太网控制器采用DM9000A,利用其10M/100M自适应PHY和MAC功能驱动设计包括初始化、数据包发送、数据包接收等程序。
如图10所示,图10示出了控制循环中的网口数据处理流程。处理以太网事件主要调用uip_process()函数,实现了对以太网数据包的分析与处理,本程序通过轮询主控循环来处理,创建两个定时器分别作为TCP和ARP的时钟,然后读取从DM9000A读取的以太网数据包,再调用uip_process()分析收到的数据。协议栈与应用层的接口函数为UIP_APPCALL(),它为回调函数,并将不同的状态和参数传递给应用层。具体的,网口数据处理包括如下步骤:
(101)判断是否为第一次进入;当第一次进入时,执行(102);否则,执行(104);
(102)创建一个0.5S的定时器;
(103)创建一个10S的定时器;
(104)从网络通信单元中接收一个网络数据包;
(105)判断接收到的网络数据包的长度是否大于0;当长度大于0时,执行(106);否则,执行(112);
(106)判断接收到的网络数据包是否为IP包;当网络数据包为IP包时,执行(107);否则,执行(108);
(107)进行IP解包处理,执行(110);
(108)判断接收到的网络数据包是否为ARP包;当网络数据包为ARP包时,执行(109);
(109)进行ARP解包处理,执行(110);
(110)判断是否需要发包;当需要发包时,执行(111);否则,执行(113);
(111)uIP协议栈组包;
(112)网卡发包,返回执行(101);
(113)判断0.5S定时器是否超时;当0.5S定时器超时时,执行(114);否则,执行(101);
(114)复位0.5S定时器;
(115)轮询处理每个TCP连接;
(116)判断是否需要发包;当需要发包时,执行(117);否则,执行(119);
(117)采用uIP协议栈组包;
(118)采用网卡发包;
(119)判断10S定时器是否超时;当10S定时器超时时,执行(120);否则,执行(101);
(120)复位10S定时器;
(121)更新ARP缓存表,返回执行(101)。
可选地,对于网口数据的接收可以采用图11所示的处理流程。具体地,包括如下步骤:
(201)清除接收数据长度;
(202)读取内存数据;
(203)计算内存数据位置;
(204)读取数据状态;
(205)判断是否接收到数据;当接收到数据时,执行206;否则,执行(215);
(206)检测数据总线宽度;
(207)判断数据总线宽度是否为8位;当数据总线宽度为8位时,执行(208);否则,执行(216);
(208)读取数据包状态;
(209)读取数据包长度;
(210)计算下一个数据包的存放位置;
(211)读取数据包数据;
(212)将包长汇报给TCP/IP上层;
(213)累计收包次数;
(214)返回数据包长度,结束;
(215)DM9000A软件复位;
(216)返回0,结束。
串口传输采用中断接收和DMA传输的设计,一共有五个串口可供使用。中断分配给串口1-5,优先级逐渐降低。触发中断后,首先判断帧头,然后接收数据到缓冲区。发送配合DMA,减少CPU的占用率。
控制单元负责调度以上三个部分并实现网络数据和串口数据的互相传输和转换。
作为本实施例的数据传输方法的一个典型应用场景,如使用上位机即普通PC端和嵌入式串口设备通信时候,使用步骤如下:
第1步,连接并运行。上位机通过网线和数据传输装置连接,数据传输装置通过串口与嵌入式设备连接;然后上电自动运行模块程序。
第2步,在上位机通过网络助手软件,参照协议填入串口和网络的通信配置参数。
第3步,按照通信协议发送和接收数据。
第4步,可在上位机界面查看发送和返回的数据。
本实施例提供的数据传输方法,为了适应嵌入式***资源和效率的要求,采用了轻量级、通用型、易用型的设计原则,尤其考虑将来在不同的***和软件环境中使用,对外接口明确,内部模块清晰,便于移植到不同的嵌入式环境中。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。