导航:首页 > 操作系统 > 单片机中帧的用法

单片机中帧的用法

发布时间:2023-02-26 19:42:09

⑴ 51单片机的串行口有几种工作方式它们的帧格式是如何规定的

串行口分四种工作方式,由SM0、SM1二位决定,其定义如下:
SM0、SM1 工作方式 功能描述 波特率
0 0 方式0 8位移位寄存器 Fosc/12
0 1 方式1 10位UART 可变
1 0 方式2 11位UART Fosc/64或fosc/32
1 1 方式3 11位UART 可变
(1)方式0:串行口的工作方式0为移位寄存器I/O方式,可外接移位寄存器,一扩展I/O口,也可外接同步I/O设备。
发送操作:当执行一条“MOV SBUF,A”指令时,启动发送操作,由TXD输出移位脉冲,由RXD串行SBUF中的数据。发送完8位数据后自动置TI=1.请求中断。要继续发送时,TI必须有指令清零。
接收操作:REN是串行口接收允许控制位。REN=0时禁止接收;REN=1时允许接收。当软件将REN置“1”时,即开始从RXD端口以fosc/12波特率输入数据,当接收到8位数据时,将中断标志RI置“1”。再次接收数据之前,必须用软件将RI清0。
(2)方式1:串行口位10位通用异步接口。发送或接收一帧数据信息为10位,包括1位起始位“0”、8位数据位、1位停止位“1”。
发送数据:数据从TXD端口输出,当数据写入发送缓冲器SBUF时,就启动发送器发送。发送完一帧数据后,置中断标志TI=1,申请中断,通知CPU可以发送下一个数据了。
接收数据:首先使REN=1(允许接收数据),串行口从RXD接收数据,当采样到1至0跳变时,确认是起始位“0”,就开始接收一帧数据,当接收完一帧数据时,置中断标志RI=1,申请中断,通知CPU从SBUF取走接收到的数据
(3)方式2:串行口为11位异步通信接口。发送或接收一帧信息包括1位起始位“0”、8位数据位、1位可编程位、1位停止位“1”。
发送数据:发送前,先根据通信协议由软件设置TB8为“奇偶校验位”或“数据标识位”,然后将要发送的数据写入SBUF,即能启动发送器。发送过程是由执行任何一条以SBUF为目的寄存器的指令而启动的,把8位数据装入SBUF,同时还把TB8装到发送移位寄存器的第9位上,然后从TXD(P3.1)端口输出一帧数据。
接收数据:先置REN=1,使串行口为允许接收状态,同时还要将RI清“0”。然后再根据SM2的状态和所接收到的RB8的状态决定此串行口在信息到来后是否置R1=1,并申请中断,通知CPU接收数据。当SM2=0时,不管RB8为“0”还是为“1”,都置RI=1,此串行口将接收发送来的信息。当SM2=1时,且RB8=1,表示在多机通信情况下,接收的信息为“地址帧”, 此时置RI=1, 串行口将接收发来的地址。当SM2=1时,且RB8=0,表示在多机通信情况下,接收的信息为“数据帧”, 但不是发给本从机的,此时RI不置为“1”,因而SBUF中接收的数据帧将丢失。
(4)方式3:为波特率可变的11位异步通信方式,除了波特率有所区别之外,其余方式都与方式2相同。

⑵ msp430单片机编程,如何解析帧,请详细描述下。

据我了解TI公司有一个msp430和cc2420组合实现zigbee协议的解决方案,看问题的样子应该是Zigbee协议吧,你的问题有点模糊,不过我就说下zigbee协议吧,请参照图示

其中前导序列和帧首届定符是用来解决通信同步的,用于物理层的帧检测,不包含数据信息,由硬件完成,在你收到的数据中是不包含这两部分的。

帧长度(PHY头)计算的是MAC协议数据单元的总字节数,包括帧控制域、数据序列号、地址信息、负载帧、帧检查序列(即CRC检测结果序列),PHY头是真正接收到的第一个字节的数据,用于接收端确定接收到的有效数据长度。

帧控制域含两个字节,包括帧类型,源地址模式和目的地址模式等等。

数据序列号就是标识当前数据帧的一个代号,用来保证通信质量的,比如如果接收到的数据序列号等于上一个帧的数据序列号,则认为是多余的帧,应当删除。

地址信息用来标识发送方和接收方的硬件地址,如果如果接收到的数据所标识的接收方的地址和当前接收数据的硬件地址不符则丢弃数据。这个地址有精简地址和IEEE地址两种,前者两个字节,后者8个字节。

负载帧是真正的要传达的数据

帧检查序列一般在发送方经过CRC多项式计算并由硬件写在帧的末尾两个字节,在接收方,由硬件计算接收数据的CRC并和接收到的CRC值对比,相同则任务数据在传输过程中是正常的,否则丢弃当前数据,这个工作一般也是由硬件完成所以反映在数据的最后两个字节的内容一般由接收信号强度平均值和链路质量LQI值所代替。

以上是对Zigbee物理层的一个简单说明,TI公司的MSP430一般配合CC2420来完成Zigbee协议,在这个解决方案中只有CRC校验值的插入与检测是完全由硬件负责完成的,其他部分需要由软件实现,因此也就提供了更大的自由空间,比如根据系统的复杂程度定义自己的协议内容,可以不完全遵照标准协议。

我看你提出的问题好像就不是标准协议,下面只是对你的协议的一个猜测,HEAD1和HEAD2可能是帧控制域信息,LEN的长度可能只计算数据内容长度,TYPE可能是用来标识帧类型,比如说命令帧,ACK确认帧,或者是数据帧,广播帧等。CRC校验值应该是RSSI和LQI即信号强度和链路质量。因为除了CRC校验外都是由硬件实现的,所以完全可以定义出以上的协议。

一点拙见供参考

⑶ 什么叫单片机输出与接收时的以字符构成的帧

所谓帧就是一串特定格式的数据,而数据当然是由字符构成的。
你要知道,在实际通讯过程中,数据是会被干扰,被篡改的,并且可能是点对多点通讯,所以,为了应对这种情况,必须用一定的格式把有效数据保护起来,防止单片机的程序被非法数据冲乱。只有接收到格式合法的数据帧,单片机才会去处理,否则直接丢弃。
典型的帧格式包括:帧头+站号+有效数据长+有效数据+校验+帧尾。

⑷ 51单片机的串口接收一帧数据有几位

发送的位数跟工作方式有关。51单片机的发送和接受,只有10位和11位两种。

先说单片机串口的工作方式:
单片机串口的工作方式共4种,方式0--方式3.
方式0:用移位脉冲。RXD做输入/输出,TXD进行移位。收发的数据为八位。
方式1:传送一帧信息为10位,即1位起始位(0),8位数据位(低位在先)和1位停止位(1)。数据位由TXD发送,由RXD接收
方式1:一帧信息也是10位;即 1位起始位,8位数据位(先低位),1位停止位。在起始位到达移位寄存器的最左位时,它使控制电路进行最后一次移位。
方式2和方式3:发送(通过TXD)和接收(通过RXD)一帧信息都是 11位: 1位起始位(0), 8位数据位(低位在先),1位可编程位(即第9位数据)和1位停止位(1)。
可见:不论单片机串口接收还是发送一帧数据是多少位,实际有效位数据位都是8位,其余位是为了奇偶校验、做起始位或终止位用的。
以前所述有误,特修正。

阅读全文

与单片机中帧的用法相关的资料

热点内容
gis服务器里文件如何处理 浏览:829
sec加密数字资产 浏览:930
winrar命令行压缩 浏览:790
java成员变量默认 浏览:491
解压神器喷泉视频 浏览:91
现代的语文书是哪里编译 浏览:108
知乎教孩子学编程 浏览:520
vivo加密的应用怎么解开 浏览:918
波形分析算法 浏览:528
php论坛实训报告 浏览:406
java日期字符串转换成日期 浏览:137
linuxsftp连接 浏览:936
光伏日发电量算法 浏览:127
小肚皮app怎么才有vip 浏览:618
php全角转换半角 浏览:929
java字符序列 浏览:541
杭州编译分布式存储区块链 浏览:577
材料压缩曲线 浏览:249
linux命令排序 浏览:151
手机热点加密为啥连接不上电脑 浏览:981