专利名称:一种进行数据传输的方法、从设备和系统的制作方法
技术领域:
本发明涉及通信技术领域,尤其涉及一种进行数据传输的方法、从设备和系统。
背景技术:
嵌入式系统设备通常需要多种类型的接口技术与主设备进行通信,以实现其基本功能。例如,通过USB (Universal Serial BUS,通用串行总线)接口实现数据传输;通过UART (Universal Asynchronous Receiver/Transmitter,通用异步接收 / 发送装置)接口实现对嵌入式系统设备的系统管理(console);通过SPI (Serial Peripheral Interface,串行外设接口)接口实现嵌入式系统设备的程序更新等等。每种类型的接口在嵌入式系统设备外部的接口形式称为外部接口。针对每种类型的接口,其外部接口形式各不相同。例如USB接口的外部接口形式为USB座,UART接口的外部接口形式为DB9 (—种D型数据接口连接器)或者RJ45 (—种数据传输接口);SPI接口的外部接口形式为双排DIP (Dual In-line Package,双排直插式封装)插针。外部接口形式的不统一,导致了连接线缆的通用性较差。同时引出多个外部接口,这就占用了设备面板上较大的空间。
发明内容
本发明的目的是提供一种进行数据传输的方法、从设备和系统,以解决同时引出多个不同类型的外部接口导致的问题。本发明的目的是通过以下技术方案实现的一种进行数据传输的方法,包括对于下行数据包,通过从设备的外部接口接收下行数据包,所述下行数据包中包含按照预定数据格式封装的发送给所述从设备的至少一个内部功能模块的数据;按照所述预定数据格式,获取发送给各个内部功能模块的数据;将所述下行数据包中的数据分别发送给对应的内部功能模块;对于上行数据包,接收所述从设备的至少一个内部功能模块发送的数据;按照所述预定数据格式,将各个内部功能模块发送的数据组成上行数据包;通过所述从设备的外部接口发送所述上行数据包。一种进行数据传输的从设备,包括至少一个内部功能模块,还包括外部接口,用于传输下行数据和上行数据;下行数据包接收模块,用于通过所述外部接口接收下行数据包,所述下行数据包中包含按照预定数据格式封装的发送给所述从设备的至少一个内部功能模块的数据;下行数据解包模块,用于按照所述预定数据格式,获取发送给各个内部功能模块的数据;下行数据发送模块,用于将所述下行数据包中的数据分别发送给对应的内部功能模块;上行数据接收模块,用于接收所述从设备的至少一个内部功能模块发送的数据;
上行数据组包模块,用于按照所述预定数据格式,将各个内部功能模块发送的数据组成上行数据包;上行数据包发送模块,用于通过所述外部接口发送所述上行数据包。一种进行数据传输的系统,包括主设备,用于按照预定的数据格式,将发送给从设备的至少一个内部功能模块的数据组成下行数据包,并通过所述从设备的一个外部接口将所述下行数据包发送给所述从设备;从设备,用于通过所述外部接口接收所述下行数据包,按照所述预定数据格式,获取发送给各个内部功能模块的数据,将所述下行数据包中的数据分别发送给对应的内部功能模块;还用于接收至少一个内部功能模块发送的数据,按照所述预定数据格式,将各个内部功能模块发送的数据组成上行数据包,通过所述外部接口向所述主设备发送所述上行数 据包。本发明实施例中,从设备的各个内部功能模块通过同一个外部接口与主设备进行数据交互,不需要针对每个内部功能模块分别引出不同的外部接口。统一了外部接口的形式,从而提高了连接线缆的通用性。且避免了同时引出多个外部接口而占用设备面板的较大空间。
图I为本发明实施例提供的一个下行数据传输方法流程图;图2为本发明实施例提供的一个上行数据传输方法流程图;图3为本发明实施例提供的进行数据传输的从设备的结构示意图;图4为本发明实施例提供的进行数据传输的系统结构示意图;图5为本发明实施例提供的嵌入式设备结构示意图;图6为本发明实施例提供的FPGA与从设备中其他模块的连接关系示意图。
具体实施例方式本发明实施例提供的技术方案,对于主设备到从设备方向的下行数据主设备按照预定的数据格式,将发送给从设备的至少一个内部功能模块的数据组成下行数据包,并通过该从设备的外部接口将该下行数据包发送给该从设备。从设备的下行数据解包模块通过上述的外部接口接收上述的下行数据包,按照上述的预定数据格式,获取发送给各个内部功能模块的数据,从设备的下行数据发送模块将该下行数据包中的数据分别发送给对应的内部功能模块。对于从设备到主设备方向的上行数据从设备的上行数据接收模块接收至少一个内部功能模块发送的数据,从设备的上行数据组包模块按照上述的预定数据格式,将各个内部功能模块发送的数据组成上行数据包,并由从设备的上行数据发送模块通过上述的外部接口向上述的主设备发送该上行数据包。 其中,从设备可以但不仅限于嵌入式系统设备,如串口卡等等。主设备可以但不仅限于PC (个人计算机)等等。从设备的内部功能模块是指,用于实现从设备功能的模块。例如,USB控制器、UART控制器、SPI控制器、SPI模块等等。
本发明实施例中,从设备(如嵌入式系统设备)的各个内部功能模块通过同一个外部接口与主设备进行数据交互,不需要针对每个内部功能模块分别引出不同的外部接口。统一了外部接口的形式,从而提高了连接线缆的通用性。且避免了同时引出多个外部接口而占用设备面板的较大空间。本发明实施例中,上述的外部接口可以但不仅限于USB接口、UART接口、SPI接口、以太网接口等等数据传输接口。由于USB接口的体积小、通用性强,且传输速率高,因此,较佳地,使用USB接口作为上述的外部接口。下面将结合附图对本发明实施例提供的技术方案进行详细描述。本发明实施例提供的一种进行数据传输的方法,对于下行数据包,其实现方式如图I所示,具体包括如下操作步骤100、通过从设备的外部接口接收下行数据包。
其中,下行数据包中包含按照预定数据格式封装的发送给该从设备的至少一个内部功能模块的数据。步骤110、按照上述预定数据格式,获取发送给各个内部功能模块的数据。步骤120、将上述下行数据包中的数据分别发送给对应的内部功能模块。本发明实施例提供的一种进行数据传输的方法,对于上行数据包,其实现方式如图2所示,具体包括如下操作步骤200、接收上述从设备的至少一个内部功能模块发送的数据。步骤210、按照上述预定数据格式,将各个内部功能模块发送的数据组成上行数据包。步骤220、通过上述从设备的外部接口发送该上行数据包。数据包的数据格式是指数据包中的数据存储的格式。具体的,本发明实施例中所述的数据格式规定了各个内部功能模块的标识符与数据的对应关系。相应的,上述步骤110的具体实现方式可以是查找所述下行数据包中各个内部功能模块的标识符,根据所述预定的数据格式规定的各个内部功能模块的标识符与数据的对应关系获取发送给各个内部功能模块的数据。上述步骤210的具体实现方式可以是根据所述预定的数据格式规定的各个内部功能模块的标识符与数据的对应关系为各个内部功能模块发送的数据添加对应的标识符后组成上行数据包。对于下行数据包,将上述下行数据包中的数据分别发送给对应的内部功能模块,其具体实现方式可以是对于支持的数据协议与上述外部接口相同的第一类内部功能模块,将该下行数据包中与第一类内部功能模块对应的数据发送给第一类内部功能模块;对于支持的数据协议与上述外部接口不同的第二类内部功能模块,将该下行数据包中与第二类内部功能模块对应的数据转换为第二类内部功能模块支持的数据协议格式后,发送给第二类内部功能模块。如果下行数据包中包括多个第二类内部功能模块对应的数据,则获取各个第二类内部功能模块对应的数据,分别转换为各个第二类内部功能模块支持的数据协议格式后发送给各个第二类内部功能模块。例如,从设备的外部接口为USB接口,那么USB控制器就是第一类内部功能模块,如果下行数据包中有发送给USB控制器的数据,则将该数据发送给USB控制器。UART控制器、SPI控制器、SPI模块等就是第二类内部功能模块,如果下行数据包中有发送给UART控制器的数据,则将该数据转换为UART控制器支持的数据协议格式后发送给UART控制器;如果下行数据包中有发送给SPI控制器或SPI模块的数据,则将该数据转换为SPI控制器或SPI模块支持的数据协议格式后发送给SPI控制器或SPI模块。对于上行数据包,接收到第二类内部功能模块发送的数据之后,将第二类内部功能模块发送的数据转换为外部接口支持的数据协议格式。如果接收到多个第二类内部功能模块发送的数据,则分别将各个第二类内部功能模块发送的数据转换为外部接口支持的数据协议格式。对于下行数据包,较佳地,在获取发送给各个内部功能模块的数据之后,还可以将发送给各个内部功能模块的数据分别缓存在各个内部功能模块对应的下行存储空间。那么,在将下行数据包中的数据分别发送给对应的内部功能模块时,具体可以从各个内部功能模块对应的下行存储空间读取缓存的数据发送给对应的内部功能模块。 对于上行数据包,较佳地,在接收从设备的至少一个内部功能模块发送的数据之后,还可以将各个内部功能模块发送的数据分别缓存在各个内部功能模块对应的上行存储空间。那么,在将各个内部功能模块发送的数据组成上行数据包时,具体可以从各个内部功能模块对应的上行存储空间读取缓存数据,将读取到的缓存数据组成上行数据包。相应的,基于各个内部功能模块对应的下行/上行存储空间的状态控制数据的发送/接收。具体的监测各个内部功能模块对应的下行存储空间的状态;如果有内部功能模块对应的下行存储空间中的缓存数据饱和,停止从所述外部接口接收下行数据包;如果有内部功能模块对应的下行存储空间中没有缓存数据,停止从该下行存储空间读取缓存数据;如果有内部功能模块对应的下行存储空间中有缓存数据且未饱和,从该下行存储空间读取缓存数据;监测各个内部功能模块对应的上行存储空间的状态;如果所有内部功能模块对应的上行存储空间中均没有缓存数据,停止从各个上行存储空间读取数据进行组包,否则,从有缓存数据的上行存储空间读取数据进行组包。基于同样的发明构思,本发明实施例还提供一种进行数据传输的从设备,其结构如图3所示,具体实现结构如下至少一个内部功能模块38,各个内部功能模块38分别实现从设备的不同功能。例如,USB控制器实现从设备的数据传输功能,UART控制器实现对从设备的系统管理功能,SPI控制器或SPI模块用于实现嵌入式系统设备的程序更新功能等等。外部接口 31,用于传输下行数据和上行数据。下行数据包接收模块32,用于通过外部接口 31接收下行数据包。其中,下行数据包中包含按照预定数据格式封装的发送给该从设备的至少一个内部功能模块38的数据。下行数据解包模块33,用于按照上述预定数据格式,获取发送给各个内部功能模块38的数据。
下行数据发送模块34,用于将上述的下行数据包中的数据分别发送给对应的内部功能模块38 ;上行数据接收模块35,用于接收该从设备的至少一个内部功能模块38发送的数据;上行数据组包模块36,用于按照上述的预定数据格式,将各个内部功能模块38发送的数据组成上行数据包;上行数据包发送模块37,用于通过外部接口 31发送该上行数据包。较佳地,所述下行数据解包模块33具体用于查找所述下行数据包中各个内部功能模块的标识符,根据所述预定的数据格式规定的各个内部功能模块的标识符与数据的对应关系获取发送给各个内部功能模块的数据; 所述上行数据组包模块36具体用于根据所述预定的数据格式规定的各个内部功能模块的标识符与数据的对应关系为各个内部功能模块发送的数据添加对应的标识符后组成上行数据包。较佳地,下行数据发送模块34具体用于对于支持的数据协议与外部接口 31相同的第一类内部功能模块38,将上述的下行数据包中与第一类内部功能模块38对应的数据发送给第一类内部功能模块38。对于支持的数据协议与外部接口 31不同的第二类内部功能模块38,将上述的下行数据包中与第二类内部功能模块38对应的数据转换为第二类内部功能模块38支持的数据协议格式后,发送给第二类内部功能模块38。较佳地,对于第二类内部功能模块38发送的数据,上行数据接收模块35还用于将第二类内部功能模块38发送的数据转换为外部接口 31支持的数据协议格式。较佳地,下行数据解包模块33还用于,将发送给各个内部功能模块38的数据分别缓存在各个内部功能模块对应的下行存储空间。下行数据发送模块34具体用于,从各个内部功能模块对应的下行存储空间读取缓存的数据发送给对应的内部功能模块38。上行数据接收模块35还用于将各个内部功能模块38发送的数据分别缓存在各个内部功能模块38对应的上行存储空间。上行数据组包模块36具体用于从各个内部功能模块38对应的上行存储空间读取缓存数据,将读取到的缓存数据组成上行数据包。较佳地,所述从设备还可以包括状态监测模块,用于监测各个内部功能模块对应的下行存储空间的状态,如果有内部功能模块对应的下行存储空间中的缓存数据饱和,通知所述下行数据包接收模块32停止从所述外部接口接收下行数据包;如果有内部功能模块对应的下行存储空间中没有缓存数据,通知所述下行数据发送模块34停止从该下行存储空间读取缓存数据;如果有内部功能模块对应的下行存储空间中有缓存数据且未饱和,允许所述下行数据发送模块34从该下行存储空间读取缓存数据;所述状态监测模块还用于监测各个内部功能模块对应的上行存储空间的状态;如果所有内部功能模块对应的上行存储空间中均没有缓存数据,通知所述上行数据组包模块36停止从各个上行存储空间读取数据进行组包,否则,允许所述上行数据组包模块36从有缓存数据的上行存储空间读取数据进行组包。基于同样的发明构思,本发明实施例还提供一种进行数据传输的系统,其结构如图4所示,具体包括主设备41和从设备42。其中主设备41,用于按照预定的数据格式,将发送给从设备42的至少一个内部功能模块的数据组成下行数据包,并通过从设备42的外部接口将该下行数据包发送给从设备42。从设备42,用于通过该外部接口接收上述下行数据包,按照上述预定数据格式,获取发送给各个内部功能模块的数据,将该下行数据包中的数据分别发送给对应的内部功能模块。从设备42,还用于接收至少一个内部功能模块发送的数据,按照上述预定数据格式,将各个内部功能模块发送的数据组成上行数据包,通过上述外部接口向主设备41发送该上行数据包。较佳地,外部接口为USB接口,从设备42中包括以下至少一种内部功能模块USB控制器、UART控制器、SPI控制器、SPI模块。本发明实施例中,外部接口传输的数据包符合预定的数据格式。通过该预定的数据格式,将不同内部功能模块对应的数据在一个数据包中进行传输。本发明对数据格式的 具体形式不作限定。以包括USB控制器、UART控制器,SPI控制器(或SPI模块)的从设备为例,一种优选的数据格式如表I所不表I
数据格式__说明_ta55二
^^ 数据包头
OxFF
OxOO —_
OxFF
——^——数据字段I识别码
OxOO
OxOl —_
数据字段I数据字段I —
OxFF
-^——数据字段2识别码
0x000x02__
数据字段2数据字段2 —
OxFF
-^——数据字段3识别码
0x00
0x03 —_
数据字段3数据字段3 _
0x55
OxAAle , _
0x00数据包尾
OxPF —_其中,数据字段I、数据字段2、数据字段3分别为USB控制器对应的数据、UART控制器对应的数据和SPI控制器对应的数据。其中,如果既包括SPI控制器又包括SPI模块,则在表I所示的数据格式中,数据字段3与数据包尾之间还包括数据字段4识别码和数据字段4。数据字段4为SPI模块对应的数据。下面以嵌入式系统设备作为从设备,PC作为主设备为例,对本发明实施例进行详细描述。如图5所示,嵌入式系统设备包括USB接口 51,由FPGA (Field ProgrammableGate Array,现场可编程门阵列)实现的组包/解包模块52,存储器53,第一协议转换模块54,第二协议转换模块 55, CPU (Central Processing Unit,中央处理器)56, SPI 模块 57。其中,CPU56上带UART控制器561、SPI控制器562和USB控制器563。UART控制器561用于实现管理控制功能。以串口卡为例,UART控制器561可以对CPU56进行配置,对CPU56配置的内容包括CPU的启动模式、CPU外部存储器设置、外部串口工作模式及转发机制、通过CPU读写FPGA内部寄存器对FPGA配置等。CPU配置完成后, 需要将配置信息保存,以便系统掉电或者复位后,CPU内部的配置信息与掉电或者复位之前的信息一致。USB控制器563用于实现数据传输功能。以串口卡为例,USB控制器563可以实现与外部多个串口进行数据通信。具体的,将PC发送的数据保存在CPU的USB控制器563数据缓存区,然后下发至外部多个串口 ;以及,将外部多个串口发来的数据保存在CPU的USB控制器563数据缓存区,然后发送给FPGA。SPI控制器563用于实现程序更新。以串口卡为例,SPI控制器562可以根据PC发送的数据更新CPU外部存储器的程序。PC还可以通过SPI模块57进行读写操作。其中,第一协议转换模块54用于实现USB数据与UART数据之间的协议转换,可以但不仅限于由CP2104芯片实现,第二协议转换模块55用于实现USB数据与SPI数据之间的协议转换,可以但不仅限于由USBI02SPI芯片实现。其中,由FPGA实现的组包/解包模块52,存储器53,第一协议转换模块54,和第二协议转换模块55协同工作,可以利用USB接口 51同时实现USB接口功能,UART接口功能,和SPI接口功能。对于PC按照表I所示的数据格式发送的下行数据包FPGA通过USB接口接收该下行数据包。FPGA按照表I所示的数据格式对该下行数据包进行解包处理,将解包得到的数据分别存放在存储器中对应的下行存储空间。具体的,FPGA读取数据字段I识别码之后的数据字段I (假设是发送给USB控制器的数据),将数据字段I缓存在存储器中USB控制器对应的下行存储空间;FPGA读取数据字段2识别码之后的数据字段2 (假设是发送给UART控制器的数据),将数据字段2缓存在存储器中UART控制器对应的下行存储空间;FPGA读取数据字段3识别码之后的数据字段3 (假设是发送给SPI控制器的数据),将数据字段3缓存在存储器中SPI控制器对应的下行存储空间;FPGA读取数据字段4识别码之后的数据字段4 (假设是发送给SPI模块的数据),将数据字段4缓存在存储器中SPI模块对应的下行存储空间。应当指出的是,下行数据包中可能携带发送给上述所有内部功能模块的数据,也可能只携带发送给部分内部功能模块的数据。如果只携带发送给部分内部功能模块的数据,则相应的数据字段标识位之后的数据字段值为空。按照先进先出的顺序,FPGA从USB控制器对应的下行存储空间读取缓存数据,将读取到的缓存数据发送给USB控制器。按照先进先出的顺序,FPGA从UART控制器对应的下行存储空间读取缓存数据,将读取到的缓存数据发送给第一协议转换模块,由第一协议转换模块将缓存数据转换为UART数据后发送给UART控制器。
按照先进先出的顺序,FPGA从SPI控制器/SPI模块对应的下行存储空间读取缓存数据,将读取到的缓存数据发送给与SPI控制器/SPI模块连接的第二协议转换模块,由第二协议转换模块将缓存数据转换为SPI数据后发送给SPI控制器/SPI模块。应当指出的是,由于发送给不同内部功能模块的数据分别缓存在不同的下行存储空间,FPGA可以同时从各个下行存储空间读取缓存数据分别发送给各个内部功能模块,实现数据的并行传输。对于从设备的各个功能模块发送的数据FPGA接收USB控制器、UART控制器、SPI控制器、SPI模块中的至少一个内部功能模块发送的数据。具体的,UART控制器发出的数据首先经过第一协议转换模块转换为USB数据后到达FPGA。SPI控制器发出的数据首先经过与SPI控制器连接的第二协议转换模块转换为USB数据后到达FPGA。SPI模块发出的数据首先经过与SPI模块连接的第二协议转换模块转换为USB数据后到达FPGA。FPGA将接收到的数据分别缓存到存储器中对应的上行存储空间。具体的,将USB控制器发送的数据缓存到USB控制器对应的上行存储空间;将UART控制器发出的数据缓存到UART控制器对应的上行存储空间;将SPI控制器/SPI模块发出的数据缓存到SPI控制器/SPI模块对应的上行存储空间。FPGA按照先进先出的顺序,分别从各个内部功能模块对应的上行存储空间读取缓存数据,将读取到的缓存数据按照表I所示的数据格式进行组包处理,将组包处理得到的上行数据包通过USB接口发送给PC。应当指出的是,如果某个内部功能模块对应的上行存储空间中没有缓存数据,则在上行数据包中相应的数据字段为空。实现组包/解包功能的FPGA与从设备中其他模块的连接关系具体如图6所示。其中,FPGA的第一接口 61与USB接口 51连接,FPGA通过第一接口 61接收PC通过USB接口 51发送的下行数据包,或者FPGA通过第一接口 61将上行数据包发送给USB接口 51,进而通过USB接口 51发送给PC。较佳地,该第一接口 61支持USB2. O。FPGA的第二接口 62与USB控制器563连接,FPGA通过第二接口 62向USB控制器563发送数据,或者通过第二接口 62接收USB控制器563发送的数据。较佳地,该第二接口62 支持 USB1. I。FPGA的第三接口 63与第一协议转换模块54连接,FPGA通过第三接口 63将发送给UART控制器561的数据发送给第一协议转换模块54,或者UART控制器561发送的数据经过第一协议转换模块54进行数据协议转换后通过FPGA的第三接口 63发送给FPGA。较佳地,该第三接口 63支持USB1. I。
FPGA的第四接口 64与一个第二协议转换模块55连接,FPGA通过第四接口 55将发送给SPI控制器562的数据发送给这个第二协议转换模块55,或者,SPI控制器562发送的数据经过这个第二协议转换模块55进行数据协议转换后通过FPGA的第四接口 64发送给FPGA。较佳地,该第四接口 64支持USBI. I。FPGA的第五接口 65与一个第二协议转换模块55连接,FPGA通过第五接口 65将发送给SPI模块57的数据发送给这个第二协议转换模块55,或者,SPI模块57发送的数据经过这个第二协议转换模块55进行数据协议转换后通过FPGA的第五接口 65发送给FPGA。较佳地,该第五接口 65支持USB1. I。FPGA的第六接口 66与存储器53连接,FPGA通过第六接口 66将数据缓存在存储器53中对应的下行存储空间。 FPGA将下行数据包中发送给USB控制器的数据缓存在USB控制器对应的下行存储空间,以及将USB控制器发送的数据缓存在USB控制器对应的上行存储空间。下面给出一种较佳地实现方式 USB控制器对应的下行存储空间也可以称为USB发送数据缓冲区,USB控制器对应的上行存储空间也可以称为USB接收数据缓冲区。为了监控USB控制器对应的下行/上行存储空间的状态,进而控制对USB控制器对应的下行/上行存储空间的读写,FPGA中设置一个8位的USB控制字。USB控制字格式如表2所示。表2
bit 7 bit6bit5bit4bit3bit2bitlbitO
预留TxEmpty TxFull TxReady 预留RxEmpty RxFull RxReady如表2所示,RxReady(bitO)标志位为I表示USB接收数据缓存区中数据已经准备好,RxReady (bitO)标志位为O表示USB接收数据缓存区中数据未准备好;RxFull (bitl)标志位为I表示USB接收数据缓存区数据已满,RxFull (bitl)标志位为O表示USB接收数据缓存区数据未满;RxEmpty (bit2)标志位为I表示USB接收数据缓存区数据已读空,RxEmpty (bit2)标志位为O表示USB接收数据缓存区中数据未读空;TxReady (bit4)标志位为I表示USB发送数据缓存区中数据已经准备好,TxReady (bit4)标志位为O表示USB发送数据缓存区中数据未准备好;TxFull (bit5)标志位为I表示USB发送数据缓存区中数据已满,TxFull (bit5)标志位为O表示USB发送数据缓存区中数据未满;TxEmpty (bit6)标志位为I表示USB发送数据缓存区中数据已读空,TxEmpty (bit6)标志位为O表示USB发送数据缓存区中数据未读空;bit3和bit7为预留位。当FPGA通过USB接口接收到PC发送给USB控制器的数据时,TxReady标志位被置为I,此时CPU检测到TxReady标志位为1,开始从USB发送数据缓存区中读取数据,同时检测TxEmpty标志位;当TxEmpty标志位为I时,停止从USB发送数据缓存区读取数据;如果USB发送数据缓存区中数据量达到缓存区数据存储上限时,TxFull标志位被置为1,当CPU检测到TxFull标志位为I时,通知FPGA停止接收USB数据。其中,由USB控制器对CPU读取的数据进行处理。当FPGA接收到USB控制器发送给PC的数据时,USB控制器发送的数据被缓存至USB接收数据缓存区,RxReady标志位被置为1,此时FPGA检测到RxReady标志位为1,开始从USB接收数据缓存区读取数据进行组包,同时检测RxEmpty标志位;当RxEmpty标志位为
I时,停止从USB接收数据缓存区读取数据;如果USB接收数据缓存区中数据达到缓存区数据存储上限时,RxFull标志位被置为1,当FPGA检测到RxFull标志位为I时,通知CPU停止通过USB控制器发送数据。上述处理过程中,由CPU检测USB控制器对应的发送数据缓存区相应的标志位状态,由FPGA检测USB控制器对应的接收数据缓存区相应的标志位状态。应当指出的是,这仅仅是一种优选的实现方式。可选的,也可以由FPGA检测USB控制器对应的发送数据缓存区相应的标志位状态,并将标志位状态的变化告知CPU,由CPU决定是否从发送数据缓存区读取数据。以及,也可以由CPU检测USB控制器对应的接收数据缓存区相应的标志位状态,并将标志位状态的变化告知FPGA,由FPGA决定是否从接收数据缓存区读取数据。FPGA将下行数据包中发送给UART控制器的数据缓存在UART控制器对应的下行存储空间,以及将UART控制器发送的数据缓存在UART控制器对应的上行存储空间。下面给出一种较佳地实现方式UART控制器对应的下行存储空间也可以称为UART发送数据缓冲区,UART控制器对应的上行存储空间也可以称为UART接收数据缓冲区。为了监控UART控制器对应的下行/上行存储空间的状态,进而控制对UART控制器对应的下行/上行存储空间的读写,FPGA中设置一个8位的UART控制字。UART控制字格式如表3所示。表权利要求
1.一种进行数据传输的方法,其特征在于,包括 对于下行数据包,通过从设备的外部接口接收下行数据包,所述下行数据包中包含按照预定数据格式封装的发送给所述从设备的至少一个内部功能模块的数据; 按照所述预定数据格式,获取发送给各个内部功能模块的数据; 将所述下行数据包中的数据分别发送给对应的内部功能模块; 对于上行数据包,接收所述从设备的至少一个内部功能模块发送的数据; 按照所述预定数据格式,将各个内部功能模块发送的数据组成上行数据包; 通过所述从设备的外部接口发送所述上行数据包。
2.根据权利要求I所述的方法,其特征在于,按照所述预定数据格式,获取发送给各个内部功能模块的数据,包括 查找所述下行数据包中各个内部功能模块的标识符,根据所述预定的数据格式规定的各个内部功能模块的标识符与数据的对应关系获取发送给各个内部功能模块的数据; 按照所述预定数据格式,将各个内部功能模块发送的数据组成上行数据包,包括根据所述预定的数据格式规定的各个内部功能模块的标识符与数据的对应关系为各个内部功能模块发送的数据添加对应的标识符后组成上行数据包。
3.根据权利要求I所述的方法,其特征在于,将所述下行数据包中的数据分别发送给对应的内部功能模块,包括 对于支持的数据协议与所述外部接口相同的第一类内部功能模块,将所述下行数据包中与所述第一类内部功能模块对应的数据发送给所述第一类内部功能模块; 对于支持的数据协议与所述外部接口不同的第二类内部功能模块,将所述下行数据包中与所述第二类内部功能模块对应的数据转换为所述第二类内部功能模块支持的数据协议格式后,发送给所述第二类内部功能模块; 对于第二类内部功能模块发送的数据,接收所述数据之后,将各个内部功能模块发送的数据组成上行数据包之前,该方法包括 将所述第二类内部功能模块发送的数据转换为所述外部接口支持的数据协议格式。
4.根据权利要求I所述的方法,其特征在于,获取发送给各个内部功能模块的数据之后,该方法还包括将发送给各个内部功能模块的数据分别缓存在各个内部功能模块对应的下行存储空间; 将所述下行数据包中的数据分别发送给对应的内部功能模块,包括从各个内部功能模块对应的下行存储空间读取缓存的数据发送给对应的内部功能模块; 接收所述从设备的至少一个内部功能模块发送的数据之后,该方法还包括将各个内部功能模块发送的数据分别缓存在各个内部功能模块对应的上行存储空间; 将各个内部功能模块发送的数据组成上行数据包,具体包括从各个内部功能模块对应的上行存储空间读取缓存数据,将读取到的缓存数据组成上行数据包。
5.根据权利要求4所述的方法,其特征在于,该方法还包括 监测各个内部功能模块对应的下行存储空间的状态; 如果有内部功能模块对应的下行存储空间中的缓存数据饱和,停止从所述外部接口接收下行数据包; 如果有内部功能模块对应的下行存储空间中没有缓存数据,停止从该下行存储空间读取缓存数据; 如果有内部功能模块对应的下行存储空间中有缓存数据且未饱和,从该下行存储空间读取缓存数据; 监测各个内部功能模块对应的上行存储空间的状态; 如果所有内部功能模块对应的上行存储空间中均没有缓存数据,停止从各个上行存储空间读取数据进行组包,否则,从有缓存数据的上行存储空间读取数据进行组包。
6.根据权利要求I飞任一项所述的方法,其特征在于,所述外部接口为通用串行总线USB接口,所述从设备中包括以下至少一种内部功能模块USB控制器、通用异步接收/发送装置UART控制器、串行外设接口 SPI控制器、SPI模块。
7.一种进行数据传输的从设备,包括至少一个内部功能模块,其特征在于,还包括 外部接口,用于传输下行数据和上行数据; 下行数据包接收模块,用于通过所述外部接口接收下行数据包,所述下行数据包中包含按照预定数据格式封装的发送给所述从设备的至少一个内部功能模块的数据; 下行数据解包模块,用于按照所述预定数据格式,获取发送给各个内部功能模块的数据; 下行数据发送模块,用于将所述下行数据包中的数据分别发送给对应的内部功能模块; 上行数据接收模块,用于接收所述从设备的至少一个内部功能模块发送的数据; 上行数据组包模块,用于按照所述预定数据格式,将各个内部功能模块发送的数据组成上行数据包; 上行数据包发送模块,用于通过所述外部接口发送所述上行数据包。
8.根据权利要求7所述的从设备,其特征在于,所述下行数据解包模块具体用于查找所述下行数据包中各个内部功能模块的标识符,根据所述预定的数据格式规定的各个内部功能模块的标识符与数据的对应关系获取发送给各个内部功能模块的数据; 所述上行数据组包模块具体用于根据所述预定的数据格式规定的各个内部功能模块的标识符与数据的对应关系为各个内部功能模块发送的数据添加对应的标识符后组成上行数据包。
9.根据权利要求7所述的从设备,其特征在于,所述下行数据发送模块具体用于对于支持的数据协议与所述外部接口相同的第一类内部功能模块,将所述下行数据包中与所述第一类内部功能模块对应的数据发送给所述第一类内部功能模块; 对于支持的数据协议与所述外部接口不同的第二类内部功能模块,将所述下行数据包中与所述第二类内部功能模块对应的数据转换为所述第二类内部功能模块支持的数据协议格式后,发送给所述第二类内部功能模块; 对于第二类内部功能模块发送的数据,所述上行数据接收模块还用于 将所述第二类内部功能模块发送的数据转换为所述外部接口支持的数据协议格式。
10.根据权利要求7所述的从设备,其特征在于,所述下行数据解包模块还用于,将发送给各个内部功能模块的数据分别缓存在各个内部功能模块对应的下行存储空间; 所述下行数据发送模块具体用于,从各个内部功能模块对应的下行存储空间读取缓存的数据发送给对应的内部功能模块;所述上行数据接收模块还用于,将各个内部功能模块发送的数据分别缓存在各个内部功能模块对应的上行存储空间; 所述上行数据组包模块具体用于,从各个内部功能模块对应的上行存储空间读取缓存数据,将读取到的缓存数据组成上行数据包。
11.根据权利要求10所述的从设备,其特征在于,所述从设备还包括状态监测模块,用于监测各个内部功能模块对应的下行存储空间的状态,如果有内部功能模块对应的下行存储空间中的缓存数据饱和,通知所述下行数据包接收模块停止从所述外部接口接收下行数据包;如果有内部功能模块对应的下行存储空间中没有缓存数据,通知所述下行数据发送模块停止从该下行存储空间读取缓存数据;如果有内部功能模块对应的下行存储空间中有缓存数据且未饱和,允许所述下行数据发送模块从该下行存储空间读取缓存数据; 所述状态监测模块还用于监测各个内部功能模块对应的上行存储空间的状态;如果所有内部功能模块对应的上行存储空间中均没有缓存数据,通知所述上行数据组包模块停止从各个上行存储空间读取数据进行组包,否则,允许所述上行数据组包模块从有缓存数据的上行存储空间读取数据进行组包。
12.根据权利要求7 11任一项所述的从设备,其特征在于,所述外部接口为USB接口,所述从设备中包括以下至少一种内部功能模块=USB控制器、UART控制器、SPI控制器、SPI模块。
13.一种进行数据传输的系统,其特征在于,包括 主设备,用于按照预定的数据格式,将发送给从设备的至少一个内部功能模块的数据组成下行数据包,并通过所述从设备的一个外部接口将所述下行数据包发送给所述从设备; 从设备,用于通过所述外部接口接收所述下行数据包,按照所述预定数据格式,获取发送给各个内部功能模块的数据,将所述下行数据包中的数据分别发送给对应的内部功能模块;还用于接收至少一个内部功能模块发送的数据,按照所述预定数据格式,将各个内部功能模块发送的数据组成上行数据包,通过所述外部接口向所述主设备发送所述上行数据包。
14.根据权利要求13所述的系统,其特征在于,所述外部接口为USB接口,所述从设备中包括以下至少一种内部功能模块=USB控制器、UART控制器、SPI控制器、SPI模块。
全文摘要
本发明公开了一种进行数据传输的方法、从设备和系统。其方法包括通过从设备的外部接口接收下行数据包,其中包含按照预定数据格式封装的发送给从设备的至少一个内部功能模块的数据;按照该数据格式,获取发送给各个内部功能模块的数据;将该下行数据包中的数据分别发送给内部功能模块;或者,接收至少一个内部功能模块发送的数据;按照该数据格式组成上行数据包;通过上述外部接口发送该上行数据包。本发明实施例中,从设备的各个内部功能模块通过同一个外部接口与主设备进行数据交互,不需要针对每个内部功能模块分别引出不同的外部接口。提高了连接线缆的通用性,且避免了引出多个外部接口而占用设备面板的较大空间。
文档编号H04L12/951GK102868648SQ20121036531
公开日2013年1月9日 申请日期2012年9月27日 优先权日2012年9月27日
发明者饶一峰 申请人:瑞斯康达科技发展股份有限公司