一种串口通信方法与装置制造方法及图纸

技术编号:7662587 阅读:140 留言:0更新日期:2012-08-09 07:09
本发明专利技术公开了一种串口通信方法与装置,该串口通信装置包括:应用程序模块、串口芯片驱动模块以及串口通信控制模块,其中:串口芯片驱动模块,用于提供发送接口,当所述发送接口被应用程序模块调用时,将用户缓冲区中的数据拷贝到发送硬件缓冲区;接收来自串口通信控制模块发送的的中断信号,并当接收到中断信号时,将接收硬件缓冲区中的数据拷贝到用户缓冲区;串口通信控制模块,用于接收数据,将接收到的数据存储在接收硬件缓冲区中,并向所述串口芯片驱动模块发送中断信号;将发送硬件缓冲区的数据发送出去。在本发明专利技术中,简化了串口通信装置的结构,提高了串口通信速度。

【技术实现步骤摘要】

本专利技术涉及通信
,尤其涉及一种串口通信方法与装置
技术介绍
串口通信作为一种方便,简单的数据交换手段,在嵌入式通信和调试中得到广泛的应用。由于以往串口一般用在速度要求不是很高的场合,因此,在现有的串口通信实现中,并没有过多的考虑串口通信的效率。参见图1,在现有的串口通信实现方式中,采用了多层次的结构。其中,串口设备作 为一个tty设备来实现,对应用程序来说,串口是一个tty设备,应用程序可以像操作一个普通文件一样来操作串口,保留了串口简单易用的优势。但是,现有的串口通信实现方式无法满足高速通信的要求。
技术实现思路
本专利技术的目的在于提供一种串口通信方法与装置,以简化串口通信装置的结构了,提高串口通信的速度,为此,本专利技术采用如下技术方案一种串口通信装置,包括应用程序模块、串口芯片驱动模块以及串口通信控制模块,其中串口芯片驱动模块,用于提供发送接口,当所述发送接口被应用程序模块调用时,将用户缓冲区中的数据拷贝到发送硬件缓冲区;接收来自串口通信控制模块发送的中断信号,并当接收到中断信号时,将接收硬件缓冲区中的数据拷贝到用户缓冲区;串口通信控制模块,用于接收数据,将接收到的数据存储在接收硬件缓冲区中,并向所述串口芯片驱动模块发送中断信号;将发送硬件缓冲区的数据发送出去。本专利技术实施例还提供一种利用上述的串口通信装置实现的串口通信方法,该方法包括应用程序模块通过调用所述串口芯片驱动模块的发送接口,由所述串口芯片驱动模块将用户缓冲区中的用户数据拷贝到发送硬件缓冲区,并由所述串口通信控制模块发送所述发送硬件缓冲区中的用户数据;当所述串口通信装置接收数据时,串口通信控制模块将接收到的数据存储到接收硬件缓冲区,并向所述串口芯片驱动模块发送中断信号,由所述串口芯片驱动模块将接收硬件缓冲区中的数据拷贝到用户缓冲区。本专利技术的上述实施例,串口通信装置包括应用程序模块、串口芯片驱动模块以及串口通信控制模块;在数据发送方向,应用程序模块通过调用所述串口芯片驱动模块的发送接口,由所述串口芯片驱动模块将用户缓冲区中的用户数据拷贝到发送硬件缓冲区,并由所述串口通信控制模块发送所述发送硬件缓冲区中的用户数据;在数据接收方向,串口通信控制模块将接收到的数据存储到接收硬件缓冲区,并向所述串口芯片驱动模块发送中断信号,由所述串口芯片驱动模块将接收硬件缓冲区中的数据拷贝到用户缓冲区,简化了串口通信装置的结构,提高了串口通信的速度。附图说明图I为现有串口通信实现方式中的软件层次结构示意图;图2为本专利技术实施例提供的串口通信装置的结构示意图;图3为现有技术中的串口通信数据传输流程示意图;图4A为本专利技术实施例提供的串口通信数据发送流程示意图;图4B为本专利技术实施例提供的串口通信数据接收流程示意图; 图5为本专利技术实施例提供缓冲区设置方式的示意图;图6为本专利技术实施例提供的数据接收过程中缓冲区数组指针指向示意图;图7为本专利技术实施例提供的一种数据帧的结构示意图;图8为本专利技术实施例提供的数据帧在缓冲区中的分布情况示意图;图9为本专利技术实施例提供的数据帧接收流程示意图。具体实施例方式下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。参见图2,为本专利技术实施例提供的一种串口通信装置的结构示意图,包括应用程序丰旲块I、串口芯片驱动I旲块2以及串口通彳目控制I旲块3。其中串口芯片驱动模块2,用于提供发送接口,当发送接口被应用程序模块I调用时,将用户缓冲区中的数据拷贝到发送硬件缓冲区;此外,串口芯片驱动模块2还可以用于接收来自串口通信控制模块发送的中断信号,并当接收到中断信号时,将接收硬件缓冲区中的数据拷贝到用户缓冲区;串口通信控制模块3,用于接收数据,将接收到的数据存储在接收硬件缓冲区中,并向所述串口芯片驱动模块发送中断信号;此外,串口通信控制模块3还可以用于将发送硬件缓冲区的数据发送出去。具体的,考虑到软件的层次越多,通信的开销越大。在本专利技术实施例中,对现有串口通信层次结构进行了简化。即在本专利技术实施例提供的串口通信装置中,软件层次包括应用程序模块I和串口芯片驱动模块2,减少了数据收发过程中,数据和/或地址拷贝造成的软件开销。进一步的,在现有串口通信实现方式中,串口芯片驱动中设计有驱动缓冲区。在数据接收流程中,需要将数据从接收硬件缓冲区拷贝到驱动缓冲区,然后由串口芯片驱动将数据从自身的缓冲区拷贝到用户缓冲区。数据发送流程则反之。其数据传输流程可以参见图3。由于内存拷贝是一个很费时间的操作,为了减少拷贝的次数,提高数据传输的效率,在本专利技术实施例提供的技术方案中,应用程序模块I采用函数直接调用的方式通过串口芯片驱动2发送数据;串口芯片驱动模块2通过回调的方式提交接收到的数据。具体的,在数据发送流程中,应用程序模块I直接调用驱动的发送接口(以Tx(ints32SrcId, int s32DstId, int s32Len, void*pvoidTxBuf)为例),由串口芯片驱动模块 2将用户缓冲区中的数据拷贝到发送硬件缓冲区中,并置发送硬件缓冲区的状态为“可以发送”,由串口通信控制模块3将发送硬件缓冲区中的用户数据发送出去。即发送数据流程中,不需要将数据拷贝到驱动缓冲区,减少了拷贝的次数,其流程示意图可以如图4A所示。相应地,在数据接收流程中,当串口通信控制模块3接收到数据时,向驱动发送中断信号。驱动接收到中断信号后,调用应用程序的回调函数(如callbackO)。该回调函数调用串口芯片驱动模块2的接收接口(如Rx(ints32SrcId,int s32DstId,int s32Len,void*pvoidRxBuf)),由串口芯片驱动模块2将接收到的数据直接从接收硬件缓冲区拷贝到用户缓冲区。应用程序模块I使用回调函数获取并处理用户缓冲区中的数据,其数据发送流程示意图可以如图4B所示。通过以上描述可以得知,在本专利技术实施例提供的技术方案中,在数据发送/接收流程设计中,串口芯片驱动模块需要设计由用户缓冲区向发送硬件缓冲区拷贝数据的发送接口,以及由接收硬件缓冲区向用户缓冲区拷贝数据的接收接口。由于在数据收发过程中,串口芯片驱动模块将待发送数据从用户缓冲区拷贝到发送硬件缓冲区,或将串口通信装置接收到的数据从接收硬件缓冲区拷贝到用户缓冲区,而不需要驱动内部的数据拷贝,减少了拷贝次数,提高了串口通信速率。下面结合附图对本专利技术实施例中的缓冲区的设置方式进行详细说明。参见图5,在本专利技术实施例中,串口通信装置中设置有n个接收硬件缓冲区,以及分别对应各接收硬件缓冲区的n个备份缓冲区,并对应接收硬件缓冲区和备份缓冲区分别设置有接收硬件缓冲区指针数组和备份缓冲区指针数组,其中,接收硬件缓冲区指针数组中各元素分别指向对应的接收硬件缓冲区,备份缓冲区指针数组中各元素分别指向对应的备份缓冲区。如,接收硬件缓冲区数组的元素0指向接收硬件缓冲区0,接收硬件缓冲区数组的元素I指向接收硬件缓冲区1,以此类推。备份缓冲区数组的元素0指向备份缓冲区0,备份缓冲区数组的元素I指向备份缓冲区1,以此类推。参见图6当串本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:钱红燕张力
申请(专利权)人:上海创远仪器技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利