导航:首页 > 操作系统 > 单片机数据包

单片机数据包

发布时间:2023-04-14 01:07:41

单片机串口发送数据包的问题

我来回答你的问题:
1。串口,即串行通迅(异步心通迅)本来就是一位一位的将数据串行发出,所以你的数据(10字节)肯定是一位一位的发,发完第一字--》第二字节--》。。。第10字节。注意发送某一字节时不能停顿,当然串口会自动完成,不需要人工干扰;发完一个字节后中途肯定是可以停顿的,否则我1ms不发送串口就不工作???肯定不会的了。
2。接收端用状态机来做最方便,编者顺手,读者称心。收到一字节后,自动进入中断,定义一下step来指示接收到了哪一个“阶段”,如:地址检验阶段,然后step++,退出中的,下次再进中断时,就进入了下一个“阶段”了,就是你的“数据长度”,然后step++,退出中断(如果数据如:ID,址址不对就直接返回STEP=0)。。。。。直到接收完整个数据帧;接收完一字节数据肯定是要退出中断去做其它事情的,要不就成了轮循的接收方式,而不叫中断方式了;
以下为我用PIC的USART做的一段状态机接收接收程序:
ISR_USART_RX;串口接收中断
MOVFW
RX_STEP
;the
counter
of
RX
ADDWF
PCL,F
GOTO
ISR_RX_PREAMBLE
;同步头检验
GOTO
ISR_RX_ID_H
;ID_H检验,不对就置RX_STEP=0
GOTO
ISR_RX_ID_L
;ID_L检验,不对就置RX_STEP=0
GOTO
ISR_RX_DATA
;数据
GOTO
ISR_RX_CHECK
;检验
希望楼主能满意我的回答。

② 单片机接收数据中,假如起始位和结束位为0x7e,如何把这串不定长的数据包接收到一个数组中,并得到包长度

提供个思路,你自己写写看吧。
设定一个数组用来存放数据包,如:unsigned char DataArray[100]; 定义的长度要足够,确定没有超过这个长度的数据包。再定义一个标志变量Flag,比如初值为0。
在串口接收中断中将接收到的单个字节存入数组,当然还要先定义一个全局变量,用来指示当前存到哪一个数组元素,如定义Counti,初值为0,存入数据为:DataArray[Counti] = SBUF; 接下来重要的是要判别接收到的内容,if((DataArray[Counti] == 0x7e) && (Flag == 0)),这里是首次收到0x7e,表示开始接收数据包,该if条件下,将Flag置为1;elseif ((DataArray[Counti] == 0x7e) && (Flag == 1)),这里是第二次收到0x7e,表示数据包接收结束,将Flag置为0,这时候的Counti+1就是数据包长度(包括起始位和结束位)。最后将数据存入数组,然后Counti++; 指向下一单元。

③ 51单片机接入以太网的几种方案

1、MAC+PHY方案

所谓的TCP/IP协议栈是一系列网络协议的统称,不仅包括我们熟知的TCP协议和IP协议。

还有网络层的ICMP(Internet控制报文)协议、IGMP(Internet组管理)协议、ARP(地址解析)协议,传输层的UDP(用户数据包)协议,应用层的HTTP(超文本传输)协议、DNS(域名解析)协议、FTP(文件传送)协议、SMTP(简单邮件管理)协议等等。

传统的以太网接入方案由MCU+MAC+PHY再加入网络接口实现以太网的物理连接,通过在主控芯片中植入TCP/IP协议代码实现通信及上层应用。

应用这种软件TCP/IP协议栈方式实现的比较成熟方案有ENC28J60,CS8900A,DM9000,当然也有像STM32F107这类(内部自带MAC)+PHY等方案。

2、硬件协议栈芯片方案

由MCU+硬件协议栈芯片(内含MAC和PHY)直接加网络接口,便可方便的实现单片机联网,所有的处理TCP/IP协议的工作都是通过这位MCU的“小秘书”——硬件协议栈芯片来完成。

以太网芯片的内核由传输层的TCP、UDP、ICMP、IGMP等协议、网络层的IP、ARP、PPPoE等协议以及链路层的MAC构成,再加上物理层的PHY和外围的寄存器、内存、SPI接口组成了这一整套硬件化的以太网解决方案。

这套硬件TCP/IP协议栈代替了以往的MCU来处理这些中断请求,即MCU只需要处理面向用户的应用层数据即可,传输层、网络层、链路层及物理层全部由外围WIZnet的芯片完成。

这套方案从硬件开销和软件开发两个方面来简化前面所述的五层网络模型,简化产品开发方案。这样一来,工程师们就不必再面对繁琐的通信协议代码,只需要了解简单的寄存器功能以及Socket编程便能完成产品开发工作的的网络功能开发部分。

(3)单片机数据包扩展阅读

以太网协议:

一个标准的以太网物理传输帧由七部分组成。

PR SD DA SA TYPE DATA FCS

同步位 分隔位 目的地址 源地址 类型字段 数据段 帧校验序列 7 1 6 6 2 46~1500 4

除了数据段的长度不定外,其他部分的长度固定不变。数据段为46~1500字节。以太网规定整个传输包的最大长度不能超过1514字节(14字节为DA、SA、TYPE),最小不能小于60字节。

除去DA、SA、TYPE14字节,还必须传输46字节的数据,当数据段的数据不足46字节时需填充,填充字符的个数不包括在长度字段里;超过1500字节时,需拆成多个帧传送。

事实上,发送数据时,PR、SD、FCS及填充字段这几个数据段由以太网控制器自动产生;而接收数据时,PR、SD被跳过,控制器一旦检测到有效的前序字段(即PR、SD),就认为接收数据开始。

④ 单片机模拟usb键盘原理


1.基本原理:单片机模拟USB键盘是通过将丛镇单片机的I/O口接入一个USB接口,利用单片机编写程序来控制USB接口实现键盘功能。
2.硬件组成:单片机模拟USB键盘需余郑空要一个USB接口,一个单片机主控芯片和一些按键,还有一些电路电阻和其他元件协同完成键盘的功能。
3.程序编写:需要编写一个程序,使单片机可以识别接入的USB接口,然后使用单片机的I/O口控制按键,使I/O口发出的信号以USB的标准格式输出到USB接口,从而实现USB键盘的功能。
4.应用竖瞎场景:单片机模拟USB键盘可以应用于智能家居、自动化控制、游戏机、模拟终端等场景。

阅读全文

与单片机数据包相关的资料

热点内容
卡拉解压视频大全 浏览:923
android手机系统源码 浏览:885
易语言递归算法 浏览:284
中国有出什么加密币吗 浏览:530
加密程序不小心删除 浏览:415
清除空文件夹的代码 浏览:608
相册视频水印怎么去掉的app 浏览:616
鸡啄米c编程入门 浏览:826
iphone手机视频如何加密或隐藏 浏览:289
车床一个轴的编程 浏览:6
任何APP都借不了款怎么办 浏览:362
linux刷新命令 浏览:518
解压配音的小视频 浏览:652
phptable页 浏览:813
人工智能怎么摆脱算法 浏览:72
思科显示配置命令 浏览:411
网上为什么对程序员这么多评论 浏览:84
app续费怎么算 浏览:775
安卓手机怎么把相册传到苹果 浏览:261
高中信息技术算法教案 浏览:245