精华内容
下载资源
问答
  • 51串口通信 数据帧

    2014-11-01 07:36:19
    应用51 开发的 串口通信 带数据包格式
  • 异步同步通信数据帧格式

    千次阅读 2020-07-10 13:52:52
    1. 异步通信的特点及信息帧格式: 以起止式异步协议为例,下图显示的是起止式一帧数据的格式: 图1 起止式异步通信的特点是:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以"起始位"开始,以...
    串口扫盲六:异步通信方式
    </div>
    

    串行通信可以分为两种类型:同步通信、异步通信.

    1. 异步通信的特点及信息帧格式:

    以起止式异步协议为例,下图显示的是起止式一帧数据的格式:

    图1

    起止式异步通信的特点是:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以"起始位"开始,以"停止位"结束,字符之间没有固定的时间间隔要求.每一个字符的前面都有一位起始位(低电平,逻辑值),字符本身由5-7位数据位组成,接着字符后面是一位校验位(也可以没有校验位),最后是一位或一位半或二位停止位,停止位后面是不定长的空闲位.停止位和空闲位都规定为高电平(逻辑值1),这样就保证起始位开始处一定有一个下跳沿.

    从图中可看出,这种格式是靠起始位和停止位来实现字符的界定或同步的,故称为起止式协议.

    异步通信可以采用正逻辑或负逻辑,正负逻辑的表示如下表所示:

     

    逻辑0

    逻辑1

    正逻辑

    低电平

    高电平

    负逻辑

    高电平

    低电平

    异步通信的信息格式如下边的表所示:

    起始位

    逻辑0

    1位

    数据位

    逻辑0或1

    5位、6位、7位、8位

    校验位

    逻辑0或1

    1位或无

    停止位

    逻辑1

    1位,1.5位或2位

    空闲位

    逻辑1

    任意数量

    注:表中位数的本质含义是信号出现的时间,故可有分数位,如1.5.

    例:传送8位数据45H(0100,0101B),奇校验,1个停止位,则信号线上的波形象图2所示那样:异步通信的速率:若9600bps,每字符8位,1起始,1停止,无奇偶,则实际每字符传送10位,则960字符/秒.

    图2

    2. 异步通信的接收过程

    接收端以"接收时钟"和"波特率因子"决定一位的时间长度.下面以波特率因子等于16(接收时钟每16个时钟周期,使接收移位寄存器移位一次),正逻辑为例说明,如图3所示.

    图3

    1. 开始通信时,信号线为空闲(逻辑1),当检测到由1到0的跳变时,开始对"接收时钟"计数.
    2. 当计到8个时钟时,对输入信号进行检测,若仍为低电平,则确认这是"起始位"B,而不是干扰信号.
    3. 接收端检测到起始位后,隔16个接收时钟,对输入信号检测一次,把对应的值作为D0位数据.若为逻辑1, 作为数据位1;若为逻辑0,作为数据位0.
    4. 再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据.….,直到全部数据位都输入.
    5. 检测校验位P(如果有的话).
    6. 接收到规定的数据位个数和校验位后,通信接口电路希望收到停止位S(逻辑1),若此时未收到逻辑1,说明出现了错误,在状态寄存器中置"帧错误"标志.若没有错误,对全部数据位进行奇偶校验,无校验错时,把数据位从移位寄存器中送数据输入寄存器.若校验错,在状态寄存器中置奇偶错标志.
    7. 本幀信息全部接收完,把线路上出现的高电平作为空闲位.

    当信号再次变为低时,开始进入下一幀的检测.

    3. 异步通信的发送过程

    发送端以"发送时钟"和"波特率因子"决定一位的时间长度.

     

    1. 当初始化后,或者没有信息需要发送时,发送端输出逻辑1,即空闲位,空闲位可以有任意数量.
    2. 当需要发送时,发送端首先输出逻辑0,作为起始位.
    3. 接着,发送端首先发送D0位,直到各数据位发送完.
    4. 如果需要的话,发送端输出校验位.
    5. 最后,发送端输出停止位(逻辑1).
    6. 如果没有信息需要发送时,发送端输出逻辑1,即空闲位,空闲位可以有任意数量.如果还有信息需要发送,转入第(2)步.

    对于以上发送、接收过程应注意以下几点:

    1. 接收端总是在每个字符的头部(即起始位)进行一次重新定位,因此发送端可以在字符之间插入不等长的空闲位,不影响接收端的接收.
    2. 发送端的发送时钟和接收端的接收时钟,其频率允许有一定差异,当频率差异在一定范围内,不会引起接收端检测错位,能够正确接收.并且这种频率差异不会因多个字符的连续接收而造成误差累计(因为每个字符的开始(起始位处)接收方均重新定位).只有当发送时钟和接收时钟频率差异太大,引起接收端采样错位,才造成接收错误.
    3. 起始位,校验位,停止位,空闲位的信号,由"发送移位寄存器"自动插入.在接收方,"接收移位寄存器"接收到一帧完整信息(起始,数据,校验,停止)后,仅把数据的各位送至"数据输入寄存器",即CPU从"数据输入寄存器"中读得的信息,只是有效数字,不包含起始位,校验位,停止位信息.
    展开全文
  • 串口通信数据格式

    千次阅读 2020-09-17 12:21:38
    串口收发数据的单位:字节 (Byte) '', 1Byte = 8 bits , 串口收发数据格式一般为 :1bit 起始位(一般为0) + 8bits 数据位(一字节) +1bit 校验位(可有可无) + 1bit结束位(一般为1) 奇校验是指每帧数据中,包括...

    串行接口的定义:

    • 串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口)
    • 是指数据一位一位地顺序传送
    • 特点是通信线路简单,只要一对传输线就可以实现双向通信;成本低,适用于远距离通信,但传送速度较慢

     串口通信的定义:

    • 串口按位(bit)发送和接收字节。

    串口通讯的定义:

    • 串口通讯(Serial Communication), 是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。

    在串行通信中,数据在1位宽的单条线路上进行传输,一个字节的数据要分为8次,由低位到高位按顺序一位一位的进行传送。

    串口收发数据的单位:字节 (Byte) '',   1Byte = 8 bits , 串口收发数据格式一般为  :1bit 起始位(一般为0)   8bits 数据位(一字节)  1bit 校验位(可有可无)  + 1bit结束位(一般为1)

     

    • 奇校验是指每帧数据中,包括数据位和奇偶校验位的全部9个位中1的个数必须为奇数;
    • 偶校验是指每帧数据中,包括数据位和奇偶校验位的全部9个位中1的个数必须为偶数。
    展开全文
  • 51单片机串口通信帧数据接收

    千次阅读 2015-12-12 21:35:42
    首先定义一个数据帧格式,Header :{ 0xAA 0x55} type:{ 0x01 | 0x02 | 0x03 } length:{ N } body :{____n个字节的数据___ } 数据的格式就是上面的定义 Header 为帧头 标记一个数据帧的开始,type 为类型 用来...


    首先定义一个数据帧格式,Header :{ 0xAA 0x55} type:{ 0x01 | 0x02 | 0x03 } length:{  N } body :{____n个字节的数据___ }

    数据的格式就是上面的定义  Header 为帧头 标记一个数据帧的开始,type 为类型 用来识别数据的类型 ,Length为长度标记 用来识别是否收完一帧的数据;

    这次的目的是为了获取来自PC端串口传来的汉字字模数据 —— 一条长为32字节的数据,所以定义N = 32;类型 因为是第一个要用到的数据就先使用type=0x01

    现在确定的格式 一帧数据 大概是  

    unsinged char code test[36]={0xaa,0x55,0x01,0x20,0x01,0x0D,0x1D,0x19,0x01,0x3F,0x3F,0x03,0x03,0x03,0x07,0x26,0x6E,0x7C,0x38,0x00,0x98,
    					0x98,0x98,0x8C,0x8C,0x8E,0xEF,0xED,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x00};

    当一个数据发来单片机进入中断程序开始接收数据

    void mReceive(){
    	uart_flag =0;//接收标志
    <span style="white-space:pre">	</span>RI=0;//手动清寄存器
    <span style="white-space:pre">	</span>receive[count]=SBUF;
    	if(count==0&&receive[count]==0xaa){
    		count=1;
    	}
    	else if(count==1&&receive[count]==0x55){
    			count=2;
    	}	
    	else if(count>=2){
    		if(count-3==receive[3]){ //当已经接收到的长度是该数据帧的长度时接收完成
    			count=0;
    <span style="white-space:pre">			</span>uart_flag=1;
    		}else if (count>=37)//超长验证,如果数据接收一帧的长度还没有完成验证一整帧则接受失败 开始新的接收
    		{
    			count  = 0;
    		}else{
                           count+=1;
                         }
    	else {
    		count=0;
    	}	
    }

    第一张是LabView上的模拟显示第二张是proteus仿真接收到的数据然后显示的结果

    展开全文
  • 本文将为大家详细介绍串口经过转换后的CAN帧格式与注意事项。适用场景串口转CAN模块在什么时候需要用到呢?一是老产品面临升级,需要用到CAN总线通信,但硬件平台中的MCU没有集成CAN总线的控制器。二是选用的MCU已经...

    MCU没有CAN或CAN接口数量不够怎么办?目前市面上有串口转CAN的相关模块或设备,但大家知道串口转CAN是如何实现的吗?转换后的帧格式是如何的?本文将为大家详细介绍串口经过转换后的CAN帧格式与注意事项。

    适用场景

    串口转CAN模块在什么时候需要用到呢?一是老产品面临升级,需要用到CAN总线通信,但硬件平台中的MCU没有集成CAN总线的控制器。二是选用的MCU已经包含CAN总线接口,但数量上不能满足项目需求。若出现类似以上两种情况且MCU有闲置串口,则可以选用串口转CAN模块解决。

    20f9a353570201dde05a930ee344e784.png

    图1 应用行业

    使用方法

    该类模块可以很方便地嵌入到具有UART接口的设备中,在不需改变原有硬件结构的前提下使设备获得CAN-bus通讯接口,实现具有UART设备和CAN-bus网络之间的数据通讯。工业级的转换模块内部还包括实现带隔离的CAN和UART转换所必须的模拟和数字器件、光电耦合器、DC/DC变换器、CAN-bus接口等。

    144543a269b27b47a8e6c20c395c394d.png

    图2 产品架构

    转换说明

    CSM100系列模块提供3种协议转换方式:透明转换、透明带标示转换、自定义协议转换。下面以CSM100系列的模块简述模块的透明转换格式。

    该模式下,CSM100接收到一侧总线的数据就立即转换发送至另一总线侧。该模式下的模块数据转换效率最高,能承担较大流量的数据传输。串行帧转CAN帧时,模块将来自串口的数据直接打包,并插入预先配置的CAN帧信息、帧ID一同作为一帧数据发送到总线上。同理,来自CAN总线上的数据将按顺序拆分为字节流发送到串口上,字节流的前几个字节为该CAN帧的信息。

    ee2ec9e326d4e3f22990eeded6577e1f.png

    图3 转换方式

    说到这,大家肯定有个疑惑,CAN帧的信息及CAN帧ID是如何表示的呢?

    帧信息主要用来区分标准帧、扩展帧,长度为1个字节。在“自定义协议转换”中,标准帧固定为 0x00, 扩展帧固定为 0x80; 在“透明转换”“透明带标识转换” 中, 标准帧为 0x0_,扩展帧为 0x8_,其中“_” 代表每个帧中的数据域长度, 范围为 0~8。

    标准帧的帧ID拆分为2个字节表示,扩展帧的帧ID拆分为4个字节表示。如果实际配置时给帧ID预留的只有一个字节且帧类型为扩展帧,方向是CAN帧转串行帧,那么将只能得到帧ID的高8位。如果实际配置时给帧ID预留的只有一个字节且帧类型为扩展帧,方向是串行帧转CAN帧,那么将帧ID的高8位正常填充,其他三字节全补零。

    29c30cb5808a7351d574da8fadf804b9.png

    假设配置的转换成的CAN报文帧信息为“标准帧”,配置的帧ID1,ID0分别为“0x01,0x23”,串行帧的数据为01,02,03,04,05,06,07,08共8个字节,那么转换格式如图5。CAN报文的帧ID为0x0123(用户配置),帧信息:标准帧(用户配置),串行帧中的数据部分将不作任何修改地转换到CAN报文中。

    b57b125d499faeffa3e67b07eef10bbf.png

    图5 串行帧到CAN帧

    假设CAN报文中帧ID1为0x01,帧ID0为 0x23,数据为0x12,0x34,0x56,0x78,0xab,0xcd,0xef,0xff,则CAN报文和转换后的串行帧如图6。CAN报文的帧信息(0x08)转换到串行帧中的第1个字节(0x08),CAN报文中的ID:0x0123依次转换到串行帧中的第2个字节(0x01)及第3个字节(0x23)。CAN报文的数据域将不作任何修改地转换到串行帧中的数据部分。

    a8a63ca2cadce1e352d1dfd4f2fab29d.png

    图6 CAN帧到串行帧

    总结

    以上为串口转CAN透明格式下的转换方式,后续笔者将新增透明带标示转换、自定义协议转换以及moudbus转换的内容,欢迎持续关注。

    66a8742a1c81aaabc3f924fdaab3d011.png

    展开全文
  • 用于接收数据格式为五位头+文本格式的模块串口通信,可用于myrio,mydAQ等开发板。
  • 单片机串口通信帧协议设计 数据格式: 0 1 2 3 … n+2 n+3 n+4 0xaa n data[0] ...
  • 串口通信发送的数据是以ASCII码形式,对数据进行处理需要将ASCII码转换成数值,对数值转换成二进制,再根据帧格式对其拆帧。 流程; 1、接收串口发送的数据(串口中断服务函数) 2、将串口发送的数据转换为数值。 3、...
  • 为了提高串口数据通信的准确率、方便上层应用编程,...协议采用自定义报文格式封装串口数据帧的方式工作,利用报文应答机制保证传输正确性,该协议在线路故障出现时能有效检测并采取报文重发等措施保证数据准确传输。
  • 串口通信知识总结

    2020-06-29 15:07:03
      之前断断续续的学习了解了串口通信的相关知识,但由于没有集中地学习,导致对串口通信的... 串口通信数据格式3.1 一完整数据3.2 奇校验与偶校验3.3 起始位与停止位3.4 波特率四. 串口通信协议4.1 RS-2324.2 T
  • 一种串口完整帧数据接收的实现方式

    万次阅读 多人点赞 2018-08-23 10:21:28
    本人采用的STM32HAL库,部分函数为库函数提供,其中硬件初始化反初始化函数部分需要自己实现,这里不给出实现代码,数据帧接收实现方式基本通用于所有串口通信,以下是实现的代码。 附:如果你想使用字符串形式的...
  • 串口通信

    2019-12-21 23:01:21
    发送与接收 在51内部有一个全双工串行通信接口。SBUF位串行口数据缓冲...发送时,将帧格式写入SBUF,发送完成后,TI置1并发出中断信息 接收时,接收帧数据存入SBUF,接收完成后,RI置1发出中断 串行口控制 ...
  • 串口通信协议

    2014-05-08 20:33:28
    在网络通信中,“包”(Packet)和 “帧”(Frame)的概念相同,均指通信中的一个数据块。对于具体某种通信网络,一般使用术语“帧”。一种网络的帧格式可能与另一种网络不同,通常使用术语“包”来指一般意义的帧。...
  • STM32串口通信:USART

    2021-03-20 20:16:04
    串口通信一般是以帧格式传输数据,即一帧一帧传输,每帧包含有起始信号、数据信息、停止信息,可能还有校验信息。 2、串行通信的分类 (1)按照数据传送方向,分为: 单工:数据传输只支持数据在一个方向上传输...
  • Stm32串口通信(USART)

    2019-03-30 10:40:00
    Stm32串口通信(UART) 串口通信的分类 ...串口通信三种传递方式 ...在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(能省略),最后是停止位1。用这种格式表示...
  • 通用同步异步收发器,使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换 rs232 rs485 同步 有时钟信号 IIC SPI 异步 UART(异步串行通信) 有起始位,停止位,校验位 在同步通讯中,数据信号...
  • 3.1.2、同步通信数据格式 3.1.3、同步通信特点 3.2、异步通信 3.2.1、异步通信的原理 3.2.2、典型异步通信结构 3.2.3、异步通信其他的结构 3.2.4、CRC校验 3.2.5、异步通信特点 第四章、串口异步...
  • UART串口通信

    2016-12-27 15:05:06
    什么是串行通信? 将数据字节分成一位一位的形式在一条传输线上逐位地发送。 ...什么是异步通信?...异步通信是指通信的发送与...第一,数据单元——,它是双方约定好的数据格式; 第二,波特率,它决定了‘
  • 目录前言一、USART初始化串口的数据类型定义1.初始化结构体串口初始化过程二、轮询方式串口...示例-实现简单的帧格式通信(可变长数据)Modbus消息帧格式自定义的帧格式设定代码实现调试 前言 上一篇文章主要是讲了一
  • 串口通信(2)

    2019-07-08 21:09:55
    1.异步通信的特点及信息帧格式: 以起止式异步协议为例,下图显示的是起止式一帧数据的格式: 图1  起止式异步通信的特点是:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以...
  • 异步通信的特点及信息帧格式:      以起止式异步协议为例,下图显示的是起止式一帧数据的格式:         图1     起止式异步通信的特点是:一个字符一个字符地传输...
  • 一种网络的帧格式可能与另一种网络不同,通常使用术语"包"来指一般意义的帧.串行通信数据格式有面向字符型的数据格式,如单同步,双同步,外同步;也有面向比特型的数据格式,这以帧为单位传输,每帧由六个部分组成,分别...
  • PLC串口通信调试 1.0

    2016-02-28 12:40:12
    (1) 可以用3种数据格式输入要发送的和显示收、发的,各数据格式可以相互转换。 (2) 可以计算常用的校验码(异或、求和、CRC和LRC),生成PLC通信中常用的多种协议格式,适用范围广。 (3) 具有记忆功能,能...
  • LabVIEW上位机与串口通信

    千次阅读 2017-08-21 17:16:52
    定义通信格式及功能因为数据不算复杂,所以定义简单下位机帧格式:帧头(0xAA) 类型字节 数据低8位 数据高8位 保留字节1 保留字节2 校验字节 如果要传送的数据比较多/复杂,则可以参考ModuleBus协议!主要功能包括...
  • 51单片机串口通信

    2019-07-18 17:03:13
    1.通信方式分类 (1)并行通信 ...异步串行通信:所谓“异步”,指的是双方设备使用各自的时钟,以字符为单位传输,采用一种特殊的格式称为“”(如下图),且各字符之间的间隙不等。 一帧数据...
  • 下面设计的串口通信协议用于完成双机互联程序的文件传输功能,简称SPCP。设计思想基于枕传输方式,即在向串口发送数据时是一地发送。为了保证可靠传输,通过握手建立连接,在每一的传输中,采用发送/应答/...
  • C#串口通信

    2017-02-19 20:33:34
    本上位机采用Visual C# 2010编写,用于与单片机通信,发送并接收固定格式的数据包。 上位机每次点击“发送”按钮后将发送18字节给下位机,发送包的格式为: 包头:0xAA;命令号:0x01;长:0x0D;帧数据13...
  • 本文主讲串口通信协议。 串口的底层知识在这里就不提了。只要明白串口的硬件缓存允许收发一次大小都是一字节(比如0xAA),而由串口多次发送的数据的多个字节组成了一帧数据,这帧数据被缓存在了软件定义的一个数组...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 232
精华内容 92
关键字:

串口通信数据帧格式