单片机串口数据处理框架

单片机串口数据处理框架,第1张

    串口通信具有广泛的应用,一方面串口配置简单,仅需3根线(tx、rx、gnd)即可实现通信,另一方面串口具备全双工通信的能力。因此串口开发是单片机开发中一个重要的能力。
    串口通信的难点在于,每条通信命令的长度可能不一致,何时判断数据包是否接收完整,每包数据如何校验,在单片机开发中均占用很大的工作量。

    由于单片机往往同时对接多个串口通信,可以将所有的通信统一处理,收到一包数据后再通知相应的线程进行处理。

     writeptr 和 readptr 分别记录串口缓冲区内数据写入和读取的指针(标号)。一般将缓冲区构建为环形缓冲, writeptr==readptr 认为缓冲区空, writeptr==readptr + 1 认为缓冲区满。 ctrl 字段用来控制是否开始计时数据接收超时,在超时时间内没接收到一个字节的数据,重新累计数据包超时时间, timeout 字段则是具体的超时时间。 discart 字段用来丢弃不完整的数据包,如果数据包在规定的时间内均没有收到完整数据,则将该数据包丢弃。
系统初始化时,对每个字段进行赋值:

    串口数据的接收既可以采用中断的方式,也可以采用DMA的方式。尽管中断方式会影响CPU使用效率,但从实际使用效果上来看,一般不是时间要求非常高的应用,中断的影响非常小。

    每收到一包数据,将 timeout 置零,并将 ctrl 置一,开始计算数据包是否超时。由于缓冲区是环形的, UartCtrl[UART_VIDEO]writeptr 字段增加时需要注意对边界的处理。
    通过定时器中不断检测相应的字段,来决定是否通知线程处理收到的数据包,或者丢弃不完整的数据包。

    串口数据包往往具有比较简单数据结构,如包头、包尾、长度、校验等字段,通过对每包数据相应字段的检验,判断数据包是否完整及合法。不同的传感器的通信格式一般都比较类似,因此可以采用以下的流程进行检验。最后既可以将合格的数据包复制到另外的缓存进行处理,也可以在该函数中直接处理以节省空间。

    处理完一包数据以后,若发现剩余长度大于0,认为环形缓存中还有待处理的数据包,重新进入该函数进行处理。

    串口数据的处理在单片机开发中占有很大比重的工作量,通过上述数据结构和相应处理函数,可以将不同的传感器的数据用同样的方式处理,有效提高开发效率。其他总线的数据处理,也可以采用类似的方式进行。

单片机串口窗口指的是通过串口通信方式,将单片机与计算机进行连接,以便进行数据传输和交互。在使用串口窗口时,需要先通过编程实现单片机的串口通信功能,然后在计算机上打开串口窗口软件,并设置好对应的串口参数(如波特率、数据位、校验位等),从而实现串口通信的开启。一般情况下,串口窗口可以根据需要自行设置窗口大小、字体大小、接收区和发送区等,方便进行数据发送、接收和监视等 *** 作。

51单片机中的串口通信是通过P3口的两个引脚(即P30和P31)实现的,其中P30口为串口接收引脚(RXD),P31口为串口发送引脚(TXD)。在51单片机中,串口通信的端口是固定的,即P30口和P31口。这两个引脚通过串口通信电路与串口通信芯片相连,实现串口通信功能。需要注意的是,在使用51单片机进行串口通信时,需要根据具体的通信协议和波特率等参数进行相关的配置,并在程序中编写相应的串口通信代码,才能实现数据的发送和接收。

我这里有简单搭建思路给你参考。
1、在Ubuntu上我选择MySQL数据库。
2、后台语言选择我用nodejs你也可以选择java或者Python什么的(这主要用于把数据存入数据库用)
3、单片机与Ubuntu数据传输方式,我选择网络通讯。
这样连接思路就是,单片机通过串口把数据发到网络模块,网络模块与Ubuntu服务器用无线网络连接。
重点来了。Ubuntu系统的后台程序 使用WEBsocket监听一个端口,等待单片机的网络模块发来的数据。 这样完成数据传输链。

可以呀,这个函数在单片机中是通过串口发送数据。配置好串口就可以了。
比如
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
SCON=0x50;

单片机可以实现与计算机的发送和接收。首先,要正确配置单片机的串口,包括波特率、使用时钟源、COM口、数据位位数、奇偶校验位、停止位位数等,同时要保证计算机的配置和单片机的一致。然后,把要发送的数据送到发送缓存,只能一个字节一个字节的发送。启动单片机发送,就可以完成发送 *** 作。如果打开接收中断,计算机发送数据过来的时候,就会进入到接收中断,单片机进入接收数据状态。
这里要注意的是,单片机是TTL电平,而计算机是232电平,所以在硬件电路连接上要有电平转换芯片,常用的有MAX232等。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/13239626.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-25
下一篇 2023-06-25

发表评论

登录后才能评论

评论列表(0条)

保存