精华内容
下载资源
问答
  • 2021-08-07 22:47:54

    前言

    最近串口用的多,感觉有必要简单列一下用过的通信协议帧,这样可以总结下来和大家交流一下,有需要的可以直接参考

    一、单片机串口简介

    单片机中的串口(UART)是一种单字节收发的通信方式一般三根线就够了,标准线序对接的话是九针DB9类型,常用的对三线(rx tx gnd | A B gnd)使用简单方便,常用于短距离,较少连接器件的通信。
    串口增加外部控制芯片会将串口变为RS232和RS485两种通信类型的电平,RS232的逻辑1和0分为对应+15V和-15V,RS485的逻辑1和0对应A B端口的电压差+2 ~ +6和-2 ~ -6。RS232不可以连接多个子设备,可实现全双工通信,RS485可实现多个器件的挂载,单双工通信。
    因为是单字节收发,所以就需要一个规定好的通信格式来实现解析与发送,这个就是通信协议。

    二、常用的通信协议类型

    1.没有格式

    没有格式有时候就是王道,许多器件厂商直接使用字符串命令式控制。比如

    /s1000 
    

    设置速度为1000

    /r0000
    

    回复出厂设置。
    这种有个好处就是在一些资源及性能一般的器件中可直接使用,不用队列,不用缓存,直接在中断中进行数据的读取与赋值,简单粗暴。switch case轻松解决。适用于简单短命令短数据场合。
    缺点就是通信数据不能太长,容易出现误操作(谁手残乱发送数据碰巧改了核心数据就完犊子了)。

    2.帧头帧尾+数据

    帧头数据长度数据校验位帧尾
    0XF50X40X01 0X02 0X03 0X040XC50X5F

    简单常用的就是这种带帧头帧尾或者校验位的格式。通常在单片机中进行数据的接收然后存放到缓存队列中,然后主循环中根据帧头帧尾对缓存队列数据进行提取,一帧一帧的进行赋值操作。
    校验的有很多,和校验、CRC等等,这里我觉得还可以实现加密,自己设置一个加密算法,校验位就用加密算法得出,别人拿不到加密算法只有通信协议也是不能驱动你的器件的。(骚操作,好多连校验位都没有,越简单越可靠)
    此种有点是简单可靠,上下位机容易根据通信格式进行数据的交互,适合较长数据的传输。

    3.帧头帧尾+数据+附加功能码

    帧头功能码数据长度数据校验位帧尾
    0XF50X010X40X01 0X02 0X03 0X040XC50X5F

    这种格式兼容第二种,可以处理不同类型的命令,比如读和写。
    功能码可以无限添加,比如使用两个功能码一个指示对哪个变量操作,另一个指示读还是写操作。这种应该是最广泛使用的了吧,工作量也不是很大,自己调试调试也很容易实现。

    4.帧头帧尾+数据+附加功能码+目标地址

    帧头地址功能码数据长度数据校验位帧尾
    0XF50XCC0X010X40X01 0X02 0X03 0X040XC50X5F

    这种加地址的就有意思了,具备了识别器件的能力。比如你随便拿了一个同类型不同地址的器件接入,你发送命令器件就不鸟你。这种适合用在485通信总线上,所有器件根据地址去识别是否去执行。
    优点是具备器件识别功能有命令执行唯一性,适合485通信。
    缺点是232使用的话有点鸡肋。目前我见过的大多是这种不管是485还是232通信(其实地址也算是一个功能码,问题不大)。

    5.帧头帧尾+数据+附加功能码+转发功能

    帧头源长度源地址目标长度目标地址功能码数据长度数据校验位帧尾
    0XF50X010XCC0X020XDD 0XBB0X010X40X01 0X02 0X03 0X040XC50X5F

    这个是我使用过的最厉害的串口通信协议了,通过地址长度及地址域实现判别是否是需要转发下一级还是进行操作命令。
    此条命令过程为:0XCC的器件发送命令帧给0XDD的器件,0XDD的器件发现自己不是最终目标,重新组帧发送给地址为0XBB的下一级器件,0XBB接收到命令后发现自己是最终目标因此执行命令。
    这种的通信协议优点是功能俱全,可实现转发。
    缺点就是解析帧的程序复杂,增加一个转发就会加一个重新组帧的时间,转发越多越费时间。(不过谁没事用串口串这么多子级呢,有病么,完全可以考虑使用其它通信方式了)
    这种应该是将串口适配了其它通信方式(比如can、tcp/ip等),这样程序处理得当的话应该可以实现不同通信方式的混搭,比如主板通过串口发送,下一级通过CAN总线发送给更多的器件,也许CAN总线发送完了子器件又有子器件用串口发送接收,总之来说具备了转发就具备了一定的通信兼容性。
    有点复杂串口还是用第4种方式就够了。

    6.MODBUS RTU

    这个很牛批,我没咋用过,简单说一下。这个单片机得用485通信了,牛就牛在是一种正规的统一标准,有现成的集成模块买过来就能用的那种,电气类工业控制中常用如PLC。
    Modbus-RTU模式是指当控制器设为在Modbus网络上以RTU(远程终端模式)模式通信,在消息中的每个8Bit包含两个4Bit的十六进制字符。Markdown将文本转换为 HTML1
    操作方式的话和4的差不多(但人家就是做成了认可的标准就是牛),多涉及一些寄存器的操作,寄存器一般都是按位操作,每一位都有每一位的功能,一下就扩展了很多用处。

    7.其它

    其它就是其它,可以混为一谈的一些方式,这些多半是上述几种的混搭型。有的有帧头,没有帧尾,有的有帧尾但用地址做帧头,有的不加校验,有的用固定长度实现帧尾的功能,有的奇葩还用地址做帧头,校验做帧尾还不固定长度。

    总结

    差不多了,一个串口基本的通信协议帧也就这些了,后续想到了再添加。不要一味的追求功能多,简单实用才是最可靠的。能不加通信协议就不加,最好。
    突然间想到了一个点子,单片机程序是不是也可将上述协议帧中的每一个功能位模块化,做到一种完全的兼容,比如我用到了帧头我就调用一个添加程序添加帧头,用到了功能码就专门添加一个功能码位放功能码,外部再做一个大封装,这样会很容易一个通信模板兼容所有通信协议。(也许也没必要,大多数都很简单,提取的数据也不多,何况我的C++还一塌糊涂,等我有实力了在考虑吧,不慌)

    参考文献


    1. Modbus通讯协议(二)—RTU. ↩︎

    更多相关内容
  • 异步同步通信数据帧格式

    千次阅读 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从"数据输入寄存器"中读得的信息,只是有效数字,不包含起始位,校验位,停止位信息.
    展开全文
  • 串行通信简介

    2022-04-10 14:58:26
    一、串行通信与并行通信 计算机与外界的数据交换称为通信通信分为并行通信串行通信两种基本方式。 并行通信 串行通信 并行通信:并行通信指各个数据位同时进行传送的数据通信方式,因此有多少个数据位,...

    一、串行通信与并行通信

    计算机与外界的数据交换称为通信,通信分为并行通信和串行通信两种基本方式。

    并行通信

    串行通信

    并行通信:并行通信指各个数据位同时进行传送的数据通信方式,因此有多少个数据位,就需要多少根数据线。并行数据的特点是传送速度快、效率高,但成本高,通常只适合30m距离内的数据传送。

    串行通信:串行通信指各个数据按传送位顺序进行传输,最少只需要两个传输线即可完成。其传输速度慢、效率低,但传输距离远,而且可以使用现有的通信通道(如电话线、各种网络等),在集散控制系统等远距离通信中使用很广。

    二、串行通信分类—异步通信和同步通信

    串行通信按照串行数据的时钟控制方式分为异步通信同步通信

    1.异步通信

    在异步通信中,数据通常以字符(或字节)为单位组成字符帧传送。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收,两个时钟源彼此独立,互不同步。

    发送端和接收端依靠什么来协调数据的发送和接收呢?也就是说,接收端怎么会知道发送端何时开始发送和何时发送结束呢?这个是由字符帧格式规定的。平时,发送线为高电平(逻辑1),每当接收端检测到传输线上发送过来低电平逻辑0(字符帧的起始位)时,就知道发送端已经开始发送,每当接收端接收到字符帧中的停止位时,就知道一帧字符信息已发送完毕。

    在异步通信中,字符帧格式和波特率是两个重要指标,由用户根据实际情况选定。如下是异步通信的字符帧格式。

     (1)字符帧

    字符帧格式也称为数据帧,由起始位数据位奇偶校验位停止位4部分构成。

    起始位:位于字符帧开头,只占1位,始终为逻辑0低电平,用于向接收设备表示发送端开始发送一帧信息。

    数据位:紧跟起始位之后,用户根据情况可以取5位、6位、7位和8位,低位在前高位在后。若所传数据位ASCII字符,则常取7位。

    奇偶校验位:位于数据位之后,仅占1位,用于表征串行通信中采用奇校验位还是偶校验,由用户根据需要决定。

    停止位:位于字符帧末尾,为逻辑高电平1,通常可取1位、1.5位或2位,用于向接收端表示一帧字符信息已发送完毕,也为发送下一帧字符做准备。

    (2)波特率

    波特率的定义为每秒钟传送二进制数码的位数(又称为比特数),单位是b/s。波特率是串行通信的重要指标,用于表征数据传输的速度。波特率越高,数据传输速度越快,和字符的实际传输速率不同。字符的实际传输速率是指每秒内所传字符帧的帧数,和字符帧格式有关。每位数据的传输时间定义为波特率的倒数。波特率还与信道的频带有关。波特率越高,信道频带越宽。所以,波特率也是衡量信道频宽的重要指标。通常,异步通信的波特率为50~9600b/s。波特率不同于发送时钟和接收时钟,常是时钟频率的1/16或1/64。

    异步通信的优点是不需要传送同步脉冲,字符帧长度也不受限制,故所需设备简单。缺点是字符帧中因包含起始位和停止位而降低了有效数据的传输速度。

    2.同步通信

    同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。此处的信息帧和异步通信中的字符帧不同,通常含有若干个数据字符,如下图所示。

     他们均由同步字符数据字符校验字符CRC三部分组成。

    同步字符:同步字符位于帧结构开头,用于确认数据字符的开始(接收端不断对传输线采样,并把采样到的字符和双方约定的同步字符比较,只有比较成功后才会把后面接收到的字符加以存储)。

    数据字符:数据字符在同步字符之后,个数不受限制,由所需传输的数据块长度决定。

    校验字符CRC:校验字符有1~2个,位于帧结构末尾,用于接收端对接收到的数据字符的正确性进行校验。

    同步通信的数据传输速率较高,通常可达56Mb/s或更高。同步通信的缺点是要求发送时钟和接收时钟保持严格同步,故发送时钟除应和发送波特率保持一致外,还要求把它同时传送到接收端去。

    三、串行通信的制式—半双工和全双工

    在串行通信中,数据是在两个站之间传输的。按照数据传输方向,串行通信可分为半双工全双工两种制式。

    1. 半双工制式

     在半双工制式下,A站和B站之间只有一个通信回路,故数据或者由A站发送被B站接收,或者由B站发送被A站接收。因此,A、B两站之间只需要一条信号线和一条接地线。

    2. 全双工制式

    在全双工制式下,A、B两站间有两个独立的通信回路,两站都可以同时发送和接收数据。因此,全双工方式下A、B两站之间至少需要三条传输线:一条用于发送,一条用于接收,一条用于信号地。

    四、常见串行通信接口

    通信标准引脚说明通信方式通信方向

    UART

    (通用异步收发器)

    TXD:发送端

    RXD:接收端

    GND:公共地

    异步通信全双工

    单总线

    (1-wire)

    DQ:发送/接收端异步通信半双工
    SPI

    SCK:同步时钟

    MISO:主机输入,从机输出

    MOMI:主机输出,从机输入

    同步通信全双工
    I2C

    SCL:同步时钟

    SDA:数据输入/输出端

    同步输出半双工

    展开全文
  • 通过数码管将51单片机从电脑上接收来的数据进行转换并显示出来! 通过数码管将51单片机从电脑上接收来的数据进行转换并显示出来!
  • 深入剖析串口通信数据格式

    万次阅读 多人点赞 2017-11-05 21:20:00
    串口是**串行接口...串口通信是指采用串行通信协议(serial communication)在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式。 串口按电气标准及协议来划分,包括**RS-232-C**、RS-422、RS485等。

    首先,打扰大家一下,现在人工智能非常火爆,薪资待遇都很高,许多朋友都想学,但是一般的教程都比较难懂。最近写了一个这方面的教程,非常适合小白入门,不仅通俗易懂而且还很风趣幽默。大家感兴趣的话可以点进去看一下。如果能够点击多个页面且停留3分钟以上,就是对我写作的最大支持!会给我带来更大的写作动力!点这里可以跳转到教程。

    串口

    串口是串行接口(serial port)的简称,也称为串行通信接口或COM接口。串口通信是指采用串行通信协议(serial communication)在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式。 串口按电气标准及协议来划分,包括RS-232-C、RS-422、RS485等。

    在串行通信中,数据在1位宽的单条线路上进行传输,一个字节的数据要分为8次,由低位到高位按顺序一位一位的进行传送。串行通信的数据是逐位传输的,发送方发送的每一位都具有固定的时间间隔,这就要求接收方也要按照发送方同样的时间间隔来接收每一位。不仅如此,接收方还必须能够确定一个信息组的开始和结束。常用的两种串行通信方式包括同步通信和异步通信。

    #TTL电平和RS232电平
    TTL电平:+5V等价于逻辑"1",0V等价于逻辑"0";

    RS232电平: 串口的一个标准,采用负逻辑。

    1. 在TXD和RXD上:逻辑"1" = -15V ~ -3V,逻辑"0" = +3V ~ +15V

    2. 在RTS、CTS、DSR、DTR和DCD等控制线上:信号有效(接通,ON状态,正电压,高电平)= +3V~+15V,信号无效(断开,OFF状态,负电压,低电平) = -3V~-15V

    #9针串口(DB9)
    这里写图片描述

    管脚功能说明如下:
    这里写图片描述
    #串行同步通信与串行异步通信
    (PS:本节中电平为TTL电平)

    同步通信(SYNC:synchronous data communication)是指在约定的通信速率下,发送端和接收端的时钟信号频率和相位始终保持一致(同步),这样就保证了通信双方在发送和接收数据时具有完全一致的定时关系。

    异步通信(ASYNC:asynchronous data communication),是以字符为单位进行传输的,字符之间没有固定的时间间隔要求,而每个字符中的各位则以固定的时间传送。 异步通信中,收发双方取得同步是通过在字符格式中设置起始位和停止位的方法来实现的。具体来说就是,在一个有效字符正式发送之前,发送器先发送一个起始位,然后发送有效字符位,在字符结束时再发送一个停止位,起始位至停止位构成一帧。停止位至下一个起始位之间是不定长的空闲位,并且规定起始位为低电平(逻辑值为0),停止位和空闲位都是高电平(逻辑值为1),这样就保证了起始位开始处一定会有一个下跳沿,由此就可以标志一个字符传输的起始。而根据起始位和停止位也就很容易的实现了字符的界定和同步。
    显然,采用异步通信时,发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,可以互不同步。
    #异步通信的数据格式
    (PS:本节电平为TTL电平)

    一个数据帧包括:1个起始位(低电平),8个数据位,1个校验位,1个停止位(高电平,表示数据帧结束),如下图所示。
    这里写图片描述

    1. 在信号线上共有两种状态,可分别用逻辑1(高电平)和逻辑0(低电平)来区分。在发送器空闲时,数据线应该保持在逻辑高电平状态

    2. 起始位(Start Bit):发送器是通过发送起始位而开始一个字符传送,起始位使数据线处于逻辑0状态,提示接受器数据传输即将开始;

    3. 数据位(Data Bits):起始位之后就是传送数据位。数据位一般为8位一个字节的数据(也有6位、7位的情况),标准的ASCII码是0127(7位),扩展的ASCII码是0255(8位),低位(LSB)在前,高位(MSB)在后

    4. 校验位(parity Bit):校验位一般用来判断接收的数据位有无错误,分为NONE(无校验位)/ODD(奇校验)/EVEN(偶校验)/MASK(标志位,校验位一直为1)/SPACE(空白,校验位一直为0),例如,如果数据是1011,那么对于偶校验,校验位为1,保证逻辑高的位数是偶数个,如果是奇校验,校验位为0,保证逻辑低的位数是奇数个。一般是奇偶校验,在使用中,该位常常取消;

    5. 停止位:停止位在最后,用以标志一个字符传送的结束,它对应于逻辑1状态

    6. 位时间:即每个位的时间宽度,起始位、数据位、校验位的位宽度是一致的,停止位有1位、1.5位、2位格式,一般为1位。
      #异步数据的数据发送过程
      发送数据的具体步骤如下:

    7. 初始化后或者没有数据需要发送时,发送端输出逻辑1,可以有任意数量的空闲位;

    8. 当需要发送数据时,发送端首先输出逻辑0,作为起始位;

    9. 接着开始输出数据位,发送端首先输出数据的最低位D0,然后是D1,最后是数据的最高位;

    10. 如果设有奇偶检验位,发送端输出检验位;

    11. 最后,发送端输出停止位(逻辑1);

    12. 如果没有信息需要发送,发送端输出逻辑1(空闲位),如果有信息需要发送,则转入步骤2;

    13. 如果是以232电平发送的,示波器上看到的发送端信号应是上述数据包取反后的结果(负逻辑)。
      #异步通信的数据接收过程
      在异步通信中,接收端以接收时钟和波特率因子决定每一位的时间长度。下面以波特率因子等于16(接收时钟每16个时钟周期使接收移位寄存器移位一次)为例来说明:

    14. 开始通信,信号线为空闲(逻辑1),当检测到由1到0的跳变时,开始对接收时钟计数;

    15. 接收端检测到起始位后,隔16个接收时钟对输入信号检测一次,把对应的值作为D0位数据;

    16. 再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据,直到全部数据位都输入;

    17. 检验奇偶检验位;

    18. 接收到规定的数据位个数和校验位之后,通信接口电路希望收到停止位(逻辑1),若此时未收到逻辑1,说明出现了错误,在状态寄存器中置“帧错误”标志;若没有错误,对全部数据位进行奇偶校验,无校验错时,把数据位从移位寄存器中取出送至数据输入寄存器,若校验错,在状态寄存器中置“奇偶错”标志;

    19. 本帧信息全部接收完,把线路上出现的高电平作为空闲位;

    20. 当信号再次变为低时,开始进入下一帧的检测。
      (PS1:接收时钟和发送时钟与波特率有如下关系:
      f = n × B 这里f 是发送时钟或接收时钟的频率; B 是数据传输的波特(Baud)率; n 称为波特率因子。设发送或接收时钟的周期为Tc,发送一个波形所需要的传输时间为Td,则: Tc = 1/f , Td = 1/B ,得到: Tc = Td /n,从而n代表发送一个波形需要几个时钟周期。 在实际串行通信中,波特率因子可以设定。在异步传送时,n = 1,16,64,常采用n = 16,即发送或接收时钟的频率要比数据传送的波特率高n倍。在同步通信时,波特率因子n必须等于1。
      **PS2:**波特率与比特率的关系:
      波特率代表1秒钟发送波形的个数,而比特率代表1秒钟发送比特的个数。在采用二进制传输的情况下,发送的波形一共有两种波形,即高电平和低电平,那么一个波形代表一个比特,因此波特率和比特率相等;在采用四进制传输的情况下,发送的波形一共有4种波形,此处假设发送的最高电平为3V,发送00的波形为0V,发送01的波形为1V,发送10的波形为2V,发送11的波形为3V,那么一个波形代表两个比特,因此比特率是波特率的两倍;同理,在采用八进制传输的情况下,比特率是波特率的三倍,以此类推。)

    #串口助手通过DB9串口发送数据剖析
    波特率115200bps,每个比特时间:1s/115200 = 1000000us/115200=8.68us。
    ##发送5C4E,偶校验
    1.串口调试助手

    这里写图片描述

    2.5C4E对应二进制:0101_1100_0100_1110,分别对2个字节加起始位、校验位、停止位(data的LSB先发):
          b |<–data–>| ps
    0101_1100:0_0011_1010_0_1

    b |<–data–>| ps
    0100_1110:0_0111_0010_0_1
    合起来为:0_0011_1010_0_1_0_0111_0010_0_1
    3.转换为负逻辑:1_1100_0101_1_0_1_1000_1101_1_0,波形如下图,可以看到数据流的1逻辑为-11V,0逻辑为+11V:
    这里写图片描述
    ##发送7B3D2A,无奇偶校验位
    1.串口调试助手
    这里写图片描述

    2.7B3D2A对应二进制:0111_1011_0011_1101_0010_1010,分别对3个字节加起始位、停止位(data的LSB先发):
           b |<–data–>| s
    0111_1011:0__11011110__1

    b |<–data–>| s
    0011_1101:0__10111100__1

    b |<–data–>| s
    0010_1010:0__01010100__1
    合起来为:0_1101_1110_1_0_1011_1100_1_0_0101_0100_1
    3.转换为负逻辑:1_0010_0001_0_1_0100_0011_0_1_1010_1011_0,波形如下图,可以看到数据流的1逻辑为-11V,0逻辑为+11V:
    这里写图片描述
    #参考文献
    https://wenku.baidu.com/view/83fc202b19e8b8f67d1cb93e.html
    https://wenku.baidu.com/view/681e210aba1aa8114431d9d4.html

    展开全文
  • STM32串口通信入门介绍
  • 关于串口通信,处理器与外部设备通信有两种方式:并行通信与串行通信 1、并行通信 传输原理:数据各个位同时传输。 优点:速度快 缺点:占用引脚资源多 2、串行通信 传输原理:数据按位顺...
  • 通俗易懂的UART协议帧格式

    千次阅读 多人点赞 2021-01-19 21:00:45
    今天的内容关于UART的帧格式,比较简单,玩过单片机的小伙伴应该都知道。 UART的英文全称是:Universal Asynchronous Receiver/Transmitter,意为通用异步收发传输器。 UART因为有两根线数据线TX和RX,可以以...
  • 《C语言在测量和控制中的应用资源第6章-计算机串行通信》由会员分享,可在线阅读,更多相关《C语言在测量和控制中的应用资源第6章-计算机串行通信(35页珍藏版)》请在装配图网上搜索。1、第6章 计算机串行通信,哈尔滨...
  • STM32串口通信详解

    千次阅读 多人点赞 2022-04-22 20:17:32
    串口通信协议,串口中断实验,用电脑端给单片机发送指令点亮LED灯
  • 调试过可以用的代码,含各进制及字符的转换,
  • 异步串行通信的数据格式如图所示。  图 异步串行通信的数据格式  异步通信数据的第一位是开始位,在通信线上没有数据传送时处于逻辑“1”状态。当发送设备要发送一个字符数据时,首先发出一个逻辑“0”信号...
  • USART——串口通信(概念讲解)

    千次阅读 2021-09-20 01:52:39
    串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式, 电子工程师在调试设备时也经常使用该通讯方式输出调试信息。 在计算机科学里,大部分...
  • 串口通信中比较重要的参数包括波特率、数据位、停止位及校验位,通讯双方需要约定一致的数据格式才能正常收发数据。串行通讯可以进一步分为单工、半双工和全双工三种。在串口通信中,常用的协议包括RS-232、RS-422和...
  • 异步通信的数据格式

    千次阅读 2021-02-24 21:47:41
     串口通信是指采用串行通信协议(serialcommunication)在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式。 1.串行通信  在串行通信中,数据在1位宽的单条线路上进行传输,一个字节的数据要分为8...
  • 【奥鹏】[吉林大学]吉大19秋学期《计算机接口技术》在线作业一试卷总分:100 得分:100第1题,串行通信主要用于( )A、近距离通信系统B、远程通信系统C、并行通信系统D、局域网通信系统正确答案:第2题,主机与外设传送...
  • 串口通信详解

    千次阅读 2021-10-09 13:23:56
    串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。...
  • 简单的帧格式 帧格式的组成:帧头 设备码 功能码 帧尾 任务 利用简单帧格式,当发送aa 01 01 55时,点亮LED灯,当发送aa 01 00 55时,熄灭LED灯。 代码实现 /* USER CODE BEGIN PV */ uint8_t RxBuffer[4];//接收...
  • 串口通信编程

    千次阅读 2021-07-18 20:23:45
    串口通信学习笔记
  • 异步串行通信

    千次阅读 2019-01-28 11:45:11
    异步串行通信
  • 有两种通信方式 并行通信串行通信 (1)并行通信 指利用多条数据传输线将一个数据的各位同时发送或接收。 优点: 速度快 缺点: 占用引脚资源多 (2)串行通信 指利用一条传输线一位位地顺序发送或接收 串行通信有...
  • 异步串行通信理解

    千次阅读 2020-06-08 14:13:13
    借鉴: 串口通信参数设置 https://blog.csdn.net/qq_35682844/article/details/73527057 串口通信协议有哪些 http://m.elecfans.com/article/628091.html 串口通信数据位长度对传输数据的影响 ...
  • 串行通信——异步串行通信

    千次阅读 2019-03-23 16:06:08
    I、串口通信简介 一、定义 二、意义 三、分类 II、异步串行通信详解 一、数据格式 1. 起始位 2. 数据位 3. 奇偶校验位 4. 停止位 二、通信制式 1. 单工 2. 半双工 3. 全双工 三、通信速率 I、串口...
  • 在介绍Modbus RTU数据帧格式之前,首先让我们先了解一下Modbus的通讯模式。 Modbus通讯模式 Modbus协议是典型的主-从通讯结构,链路中只能有一台主设备,可以有多台从设备。主设备向从设备发送请求指令,从设备对...
  • 串行通信接口SCI图解

    千次阅读 2021-08-20 15:52:59
    结合DSP的SCI章节,详细讲解SCI通信原理。 参考资料: TMS320F28xx技术参考手册:Serial Communications Interface (SCI) SCI模块总览 说明: SCI模块有两路时钟输入(图中红色箭头)。一路是工作时钟...
  • 串口通信中,由于实际上传输的是ASCII码,但是一般字符串控件显示出来的并不是其对应的ASCII码,关于字符串正常显示和十六进制显示,十六进制显示—每个字符显示为其十六进制的ASCII值,字符本身并不显示。...
  • 使用stm32串口发送一数据,具体程序如下,相关知识点请自行脑补。 1、串口发送字符串 /***************** 发送一个字节 **********************/ //myUSARTx:具体串口 //ch: 一个8位的字节 void Debug_SendByte...
  • STM32串口输出字符

    千次阅读 2021-08-21 14:50:38
    由于采用异步通信,所以通信双方(这里是 上位机 与 STM32)必须提前说明好 字符格式(一中的字符格式) 和 通信速率(波特率) 步骤 1、确定 IO 口并初始化 数据进入 USB 端口之后会进入 CH340
  • 单片机(AT89C51)的串行接口及串行通信是非常重要的一项技术,我们需要...正式进入串口通信前我们需要了解什么是通信? 计算机与外界信息交换称为通信。通信的基本方式可分为并行通信和串行通信(本次的主角): ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,670
精华内容 4,668
关键字:

串行通信字符帧格式