美文网首页嵌牛IT观察
单片机数据包的接收

单片机数据包的接收

作者: JS_Terry_M | 来源:发表于2019-11-15 10:14 被阅读0次

姓名:赵宗明

学号:19021211230

【嵌牛导读】:STM32    串口通信    数据包

【嵌牛鼻子】:利用电脑端发送数据包至单片机,单片机进行数据解析

【嵌牛提问】:串行接口是连接单片机和PC机的一种简单方式。单片机一个字节是如何收发的?一串数据是如何收发的?

【嵌牛正文】:

单片机数据包的接收以及解析的基础是明白单片机一个数据是如何接收的。查阅Datasheet我们得到如下串口传输时序:

串口数据传输时序

以上时序所说明的是串口发送一帧数据(一个字节)的时序图,时序图中串口发送的格式为:起始位(1bit)+数据位(8bit)+停止位(1bit)。
首先我们电脑端发送一个有效数据的数据格式为:‘空格’+ ‘元素号’+‘:’+‘数据’(例:“0:12 1:24 2:48 3:64”),格式如下所示

电脑端发送数据的格式

电脑串口将数据发送至单片机RX端,单片机该如何接收数据呢,再次查询单片机Datasheet,我们可以发现单片机串口中断这个功能,它每当接收一帧数据(8bit有效数据)就会进入一次中断,所以我们可以利用串口中断进行数据的解析。比如电脑端发送“空格+索引号+‘:’+‘1’+‘2’”。串口中断就会进入5次,我们就可以利用这4次中断分别提取有效数据的索引号和有效数据。我们可以利用状态机的方法来进行数据的解析,例如:
空格检测:第一次进入中断我们检测是否接受到了空格。检测到空格则下一帧数据我们检测数据所索引号,如果没接测到空格下一帧我们继续检测空格。
索引号提取:上一帧数据为空格时,这一帧直接将接收的数据赋值给提前定义好的数据索引号,并且下一帧准备检测冒号。
冒号检测:这一帧数据到来,检测所接收的数据是否为冒号,如果为冒号,则下一帧数据将提取有效数据。如果不是冒号,则将索引号置0 而且下一帧数据将重新从头开始检测空格。
数据提取:上一帧数据接收为冒号时,这一帧数据将接收的数据赋值给提前定义好的有效数据变量。
经过以上检测就会提取一组接收的有效数据。稳定而且不会出错。
一下为具体实现方法:

相关文章

  • 单片机数据包的接收

    姓名:赵宗明 学号:19021211230 【嵌牛导读】:STM32 串口通信 数据包 【嵌牛鼻子】:利用电脑...

  • iptables学习(2)

    端口 各主机之间通过TCP/IP传送接收数据包,目的主机把接收到的数据包传送给特定的进程就是通过端口来实现。一台拥...

  • 理解Linux中的软中断

    Linux 将中断处理过程分成了2个阶段: 上半部: 下半部: 比如以网卡接收到数据包为例:网卡接收到数据包后,会...

  • 网卡接收发送的数据包

    IFACE:LAN接口rxpck/s:每秒钟接收的数据包 txpck/s:每秒钟发送的数据包 rxbyt/s:每秒...

  • Stream_recvmsg

    stream recvmsg要检测sock状态为TCP_ESTABLISHED,接收数据时,可跨越多个数据包,接收...

  • 单片机数据包的发送

    姓名:赵宗明 学号:19021211230 【嵌牛导读】:STM32 串口通信 数据包 【嵌牛鼻子】:利用单片...

  • Linux网络 - 数据包在内核中接收和发送的过程(转)

    转载自:Linux网络 - 数据包的接收过程Linux网络 - 数据包的发送过程 0. 引言 本文将介绍在Linu...

  • 浏览器页面渲染机制

    发送 & 接收信息 数据是以“数据包”的形式通过互联网发送,而数据包以字节为单位。当你编写一些 HTML、CSS ...

  • 需确认的数据包

    设备往服务器发送数据包,服务器会发反馈一个数据包告诉设备已经接收到数据了。 数据包在收发的过程中会出现丢包,所以需...

  • Java网络编程 - UDP

    UDP传输 DatagramSocket和DatagramPacket 建立发送端和接收端。 建立数据包。 调用S...

网友评论

    本文标题:单片机数据包的接收

    本文链接:https://www.haomeiwen.com/subject/ipsjictx.html