【技术实现步骤摘要】
一种利用时间碎片进行串口数据传输的方法
[0001]本专利技术涉及一种利用时间碎片进行串口数据传输的方法。
技术介绍
[0002]串口数据传输是嵌入式数据传输中一种非常普遍的方式,现有的串口通信方法,大多采用的是等待发送、不断查询的方式,如图1所示,先创建一个缓冲区,指针变量P0指向发送缓冲区,把需要发送的数据写入缓冲区,并且统计需要发送的数据长度写入L0中,当L0不等于0时,随即启动数据发送,P0指向下一个待发送数据的地址,当串口空闲时,将待发送的第一个数据写入数据寄存器,L0减1,系统进入下一个数据发送的死循环,一直到串口处于空闲状态时,再发送下一个数据,以此循环,直到全部数据发送完成之后,才退出数据发送,执行下一段程序代码。在此过程中,无法对缓冲区执行写数据,必须等待数据全部发送完成之后才能重新对缓冲区填充新的数据。整个过程中,程序有一段时间会处于等待发送状态,执行任务单一且效率低、实时性差,尤其是在频繁利用串口进行日志传输的场景中,缺点更加突出。
技术实现思路
[0003]针对上述问题,本专利技术提供一种利用时间碎片进行串口数据传输的方法,设计环形缓冲区且缓冲区分块化,采用串口发送中断方式将数据发送出去的方法,在数据发送的同时,也可执行写数据或系统其它任务,从而显著地提高了程序的执行效率,避免了程序无效的等待时间,尤其适合高速、频繁进行日志传输的操作、系统实时性要求较高的多任务场景。
[0004]为实现上述技术目的,达到上述技术效果,本专利技术通过以下技术方案实现:
[0005 ...
【技术保护点】
【技术特征摘要】
1.一种利用时间碎片进行串口数据传输的方法,其特征在于,包括下述步骤:S1、创建环形内存缓冲区并分块化:创建环形内存缓冲区A,将环形内存缓冲区平均分成N块,每块缓冲区按照顺序编号分别为A
x
,每块缓冲区创建一个长度变量L
x
统计该块需要发送的数据长度,每块缓冲区均创建一个指针P
x
指向该块的起始地址,X=1、2....N,设当前发送的是第A
C
块缓冲区的数据,第A
C
块中还有L0个数据需要发送,当前发送数据的地址为发送指针P0指向的地址;S2、当需要进行数据发送时,具体包括如下步骤:S201、当发送第A
C
块中第一个数据时:201
‑
1、判断第A
C
块中待发送数据长度是否大于0,若是则进入步骤201
‑
2,若否则结束;201
‑
2、发送指针P0指向A
C
块的首地址P
c
,发送计数器L0=L
c
;201
‑
3、将发送指针P0指向的数据写入发送数据寄存器发送出去;201
‑
4、更新L0为(L0‑
1),更新P0为(P0+1),打开串口的发送中断,之后进入步骤S202利用串口发送中断发送剩余数据;S202、当发送第A
C
块中剩余数据时:202
‑
1、判断发送计数器L0是否等于0,若不等于0,则进入步骤202
‑
2,否则关闭串口的发送中断;202
‑
2、将发送指针P0指向的数据写入发送数据寄存器发送出去;202
‑
3、更新L0为(L0‑
1),更新P0为(P0+1);202
‑
4、进...
【专利技术属性】
技术研发人员:谢华,李春,檀葱,乔岩,孙飞,
申请(专利权)人:北京锐星远畅科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。