精华内容
下载资源
问答
  •  对于异步串行通信,只有在通信双方波特率相同时,才能实现数据的正确传输与接收;而一些系统总是希望能实现对各种波特率的兼容。通常的实现方法是,要求对方首先发出规定的字符或数据,系统收到该字符或数据后,...
  • STM32串口通信相关知识 一、串行通信接口背景知识 处理器与外部设备通信的两种方式:并行通信和串行通信 并行通信 传输原理:数据各个位同时传输。 优点:速度快 缺点:占用引脚资源多 串行通信 传输原理:...

    STM32串口通信相关知识

    一、串行通信接口背景知识

    处理器与外部设备通信的两种方式:并行通信和串行通信

    并行通信

    传输原理:数据各个位同时传输。

    优点:速度快

    缺点:占用引脚资源多

    串行通信

    传输原理:数据按位顺序传输。

    优点:占用引脚资源少

    缺点:速度相对较慢

    串行通信按照数据传送方向分为:

    (a)单工:数据传输只支持数据在一个方向上传输

    (b)半双工:允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信

    (c)全双工:允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。

    串行通信的通信方式

    (1)同步通信:带时钟同步信号传输。比如,SPI、IIC通信接口。

    (2)异步通信:不带时钟同步信号。比如,UART(通用异步收发器)、单总线。

    异步通信UART包含三点知识:

    (1) 物理层(电气层:接口决定):

    通信接口(RS232,RS485,RS422,TTL)

    (2) 数据格式(数据层:芯片决定)

    包括起始位,停止位,校验位,数据位等

    (3) 通信协议(协议层:程序决定)

     

    二、STM32串口通信过程和数据格式

     

     

    三、串口通信框图和波特率计算方法

     

    RX接收串口输入的数据,并把它传到接收移位寄存器,再把它传到接收数据寄存器,之后CPU通过总线去读取它。CPU通过总线写入发送数据寄存器,并把它传到发送移位寄存器,之后TX把数据发送出去。

    发送移位寄存器和接收移位寄存器的发送和接收是由波特率所控制的。从发送控制和接收控器分别有两个箭头指向了发送移位寄存器和接收移位寄存器。

    而发送控制和接收器控制的时钟是由图中左下角产生的,图中右下角产生分数分频系数USARTDIV

    波特率计算公式

    控制寄存器1(USART_CR1)的位15

     

    展开全文
  • 对于异步串行通信 ,只有在通信双方波特率相同时 , 才能实现数据的正确传输与接收 ;而一些系统总是希望能 实现对各种波特率的兼容。 通常的实现方法是 ,要求对方 首先发出规定的字符或数据 ,系统收到该字符或数据后 ,...
  • USB串口的特殊波特率通信是指波特率为非标准数值的任意波特率。由于这些波特率是非标的,所以从硬件到软件都有特殊要求和方法才可以实现。本文以最新2015款的波仕USB232ET转换器为例从硬件和软件两方面来介绍如何...

    USB串口的特殊波特率通信是指波特率为非标准数值的任意波特率。由于这些波特率是非标的,所以从硬件到软件都有特殊要求和方法才可以实现。本文以最新2015款的波仕USB232ET转换器为例从硬件和软件两方面来介绍如何实现USB串口的特殊波特率通信。

    USB串口转换器是实现USB与RS-232/RS-485/RS-422串口设备相互通讯的一种协议转换装置。一般的USB串口转换器支持的波特率为标准值300、600、1200、2400、4800、9600、14400、19200、28800、38400、57600、115200、230400。USB串口的特殊波特率通信是指300到230400之间但是不同于以上数字的任意波特率的串口通信。由于这些波特率是非标的,所以从硬件到软件都有特殊要求和方法才可以实现。本文以波仕USB232ET转换器为例来进行硬件和软件介绍。

    要实现USB串口的特殊波特率的通信,必须满足2个条件:1、USB-串口转换器本身支持特殊波特率;2、必须有支持特殊波特率的通信软件。另外如果软件只有应用程序(EXE可执行文件),那也就只能够进行通信的演示,因为所有的接收与发送数据都必须位于应用程序的界面内,无法提供给用户。如果用户要将这些接收或者发送的数据嵌入到用户自己的程序中,那么就必须有支持特殊波特率的通信软件的源代码。

    波仕USB232ET提供一个USB2.0口,一个隔离的RS232/RS485/RS422串口,一个可以对外提供5V供电的插座等。光电隔离USB/串口转换器支持串口波特率范围300-230400bps的任意值,RS-232、RS-485、RS-422通用,可以虚拟成为本地COM串口(COM1-COM256)、配套提供通信源代码。接计算机时,USB232ET需要安装驱动程序。USB232ET支持Windows 8/7/XP/Vista/ME、Linux/Android等操作系统。

    1、安装好驱动程序后,会在计算机中出现一个新的有线网口。将计算机的此网口的IP地址改为192.168.0.10.(最后一位10~254均可),子网掩码255.255.255.0 。

    2、如果要查看或修改参数则运行Config.exe程序(界面如下左图),Test.exe用于测试以太网口与串口之间的数据收发(界面如下右图) :

    c79d54edaee53d804b010325a06be073.png

    844d1019ec27d21e4e3eb3041399b9f4.png

    这里可以看到USB232ET的串口波特率可以设置为任意值,包括标准波特率以及各种特殊波特率。用户可以修改。设置完毕后USB232ET就可以使用Test.exe软件进行串口通信了。波仕电子随产品赠送Test的源代码,这样用户可以嵌入到自己的串口通信软件中。

    展开全文
  • 1 并行与串行通信 机器的通信方式有两种,分别是并行通信串行通信。 并行通信:并行通信是指多比特数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会...

    1 并行与串行通信

    机器的通信方式有两种,分别是并行通信与串行通信。

    并行通信:并行通信是指多比特数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,数据也就容易出错。

    串行通信:串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。

    拿汽车通道来说,并行通信就是多车道,多辆车一起行驶,而串行通信就是单车道,只能一辆一辆车通过。

    以下是两者之间特性的对比:

    2 异步与同步串行通信

    串行通信有两种,分别是异步串行通信与同步串行通信。

    异步串行通信:异步串行通信是指通信双方以一个字符(包括特定附加位)作为数据传输单位且发送方传送字符的间隔时间不一定,具有不规则数据段传送特性的串行数据传输。

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

    两种串行通信不同就只有时间,在发送字符时,异步可以是不同时间间隔发送,但同步只能以固定的时间间隔发送。

    3 单工、半双工与全双工串行通信

    串行通信制式有单工串行通信,半双工串行通信,全双工串行通信三种。

    单工串行通信:单工串行通信信道是单向信道,发送端和接收端的身份是固定的,发送端只能发送信息,不能接收信息;接收端只能接收信息,不能发送信息,数据信号仅从一端传送到另一端,即信息流是单方向的。

    半双工串行通信:半双工串行数据传输指数据可以在一个信号载体的两个方向上传输,但是不能同时传输。例如,在一个局域网上使用具有半双工传输的技术,一个工作站可以在线上发送数据,然后立即在线上接收数据,这些数据来自数据刚刚传输的方向。像全双工传输一样,半双工包含一个双向线路(线路可以在两个方向上传递数据)。

    全双工串行通信:全双工串行通信是指在同一时刻信息可以进行双向传输,和打电话一样,说的同时也能听,边说边听。这种发射机和接收机分别在两个不同的频率上(两个频率差有一定要求)能同时进行工作的双工机也称为异频双工机。

    三种通信制式很容易理解,对照上图看,单工串行通信不就是单方面通信,只能发出指令或接收指令。半双工串行通信就是能接收又能发送,但是不能同时进行。全双工串行通信就最厉害,可以同时发送和接收指令。

    4 比特率与波特率

    衡量通讯性能的一个非常重要的参数就是通讯速率,通常以比特率(Bitrate) 来表示,即每秒钟传输的二进制位数,单位为比特每秒(bit/s)

    容易与比特率混淆的概念是 “波特率”(Baudrate),它表示每秒钟传输了多少个码元。而码元是通讯信号调制的概念,通讯中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元

    如常见的通讯传输中,用0V 表示数字0,5V 表示数字1,那么一个码元可以表示两种状态0 和1,所以一个码元等于一个二进制比特位,此时波特率的大小与比特率一致;如果在通讯传输中,有0V、2V、4V 以及6V 分别表示二进制数00、01、10、11,那么每个码元可以表示四种状态,即两个二进制比特位,所以码元数是二进制比特位数的一半,这个时候的波特率为比特率的一半。

    因为很多常见的通讯中一个码元都是表示两种状态,人们常常直接以波特率来表示比特率,虽然严格来说没什么错误,但希望我们还是了解它们的区别。

    5 TTL与RS-232电平标准

    根据通讯使用的电平标准不同,串口通讯可分为TTL 标准及RS-232 标准,电平标准如下表:

    可见RS-232使用负逻辑电平,规定(-3V ~ -25V)为逻辑“1”,规定(+3V ~ +25V)为逻辑“0”,(-3V ~ +3V)是未定义的过渡区。

    我们知道常见的电子电路中常使用TTL 的电平标准,理想状态下,使用5V 表示二进制逻辑“1”,使用0V 表示逻辑“0”;而为了增加串口通讯的远距离传输及抗干扰能力,它使用-15V 表示逻辑“1”,+15V 表示逻辑“0”。

    6 RS-232信号线与DB9接口

    在最初的应用中,RS-232 串口标准常用于计算机、路由与调制调解器(MODEN,俗称“猫”)之间的通讯 ,在这种通讯系统中,设备被分为数据终端设备DTE(计算机、路由)和数据通讯设备DCE(调制调解器)。我们以这种通讯模型讲解它们的信号线连接方式及各个信号线的作用。

    在旧式的台式计算机中一般会有RS-232 标准的COM口(也称DB9 接口)。

    我们看到接线口以针式引出信号线的称为公头,以孔式引出信号线的称为母头。在计算机中一般引出公头接口,而在调制调解器设备中引出的一般为母头,使用上图中的串口线即可把它与计算机连接起来。通讯时,串口线中传输的信号就是使用前面讲解的RS-232 标准调制的。

    对于调制解调方面的内容,有兴趣可以查找高频电子线路与通信方面的相关资料,这里不再赘述。

    DB9 接口中的公头及母头的各个引脚的标准信号线接法:

    每个口的具体作用如下表:

    上表中的是计算机端的DB9 公头标准接法,由于两个通讯设备之间的收发信号(RXD与TXD)应交叉相连,所以调制调解器端的DB9 母头的收发信号接法一般与公头的相反,两个设备之间连接时,只要使用“直通型”的串口线连接起来即可。

    串口线中的RTS、CTS、DSR、DTR 及DCD 信号,使用逻辑 “1” 表示信号有效,逻辑“0”表示信号无效。例如,当计算机端控制DTR 信号线表示为逻辑“1” 时,它是为了告知远端的调制调解器,本机已准备好接收数据,“0” 则表示还没准备就绪。

    在目前的其它工业控制使用的串口通信中,一般只使用RXD、TXD 以及GND 三条信号线,直接传输数据信号,而RTS、CTS、DSR、DTR 及DCD 信号都被裁剪掉了,这主要是考虑到近程通信与远程通信问题。

    7 数据包

    串口通讯的数据包由发送设备通过自身的TXD 接口传输到接收设备的RXD 接口。在串口通讯协议中,规定了数据包的内容,它由起始位、主体数据、校验位以及停止位组成,通讯双方的数据包格式要约定一致才能正常收发数据。

    在串行异步通讯中,由于没有时钟信号(如前面讲解的DB9
    接口中是没有时钟信号的),所以两个通讯设备之间需要约定好波特率,即每个码元的长度,以便对信号进行解码,上图中用虚线分开的每一格就是代表一个码元。常见的波特率为4800、9600、115200 等。

    串口通讯的一个数据包从起始信号开始,直到停止信号结束。数据包的起始信号由一个逻辑“0” 的数据位表示,而数据包的停止信号可由0.5、1、1.5 或2 个逻辑“1” 的数据位表示,只要双方约定一致即可。

    在数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效数据的长度常被约定为5、6、7 或8 位长。

    在串行通讯所发送数据的最后一位,用来粗略的检验数据在传输过程中是否有出错。校验一般有以下几种:

    • 奇校验:让主体数据加上校验位中的“1”的个数保持为奇数。
    • 偶校验:让主体数据加上校验位中的“1”的个数保持为偶数。
    • 0 校验:无论主体数据是什么,校验位保持为0。
    • 1 校验:无论主体数据是什么,校验位保持为1。
    展开全文
  • 在STM32printf重定向实验中,使用printf向串口输出信息时,输出数据会出现乱码现象或者数据缺失现象,如...理应输出122位数据,当波特率为115200时,输出为2位,并且乱码。 解决方法:将波特率调低,以9600为例 如图
    
    

     在STM32printf重定向实验中,使用printf向串口输出信息时,输出数据会出现乱码现象或者数据缺失现象,如图:

    理应输出122位数据,当波特率为115200时,输出为2位,并且乱码。

    解决方法:将波特率调低,以9600为例

    如图

    展开全文
  • 异步通信还要设置波特率?_深入理解同步/异步通信   上一篇我们解释了串口通信中同步通信和异步通信的区别,详见上篇链接。其中我们分析同步/异步通信最重要的不同点就是是否同步时钟,可能就有很多小伙伴不理解,...
  • 好用简洁的串口模拟通信软件,可以收发串口数据,设置收发格式等
  • //串口方式1,10位异步收发(8位数据),波特率可变(由定时器1的溢出率控制) EA=1;//开启全局中断允许 ES=1;//开启串口中断允许 } */ //下面这段初始化是由stc-isp上自带的波特率计算器实现的。到时候直接在...
  • 详细的代码注释,wince系统下串口通信收发程序,实现串口调试助手功能,可通过设置嵌入式设备串口号及波特率等参数接收下位机发送数据以及给下位机发送数据指令,另增加wince下对话框背景图片的增加
  • 发现PA9,PA10是STM32的USART1通信口,而USART是不需要设置波特率的,但是在使用的时候,我们设置了波特率,是因为我们把它当做UART来用了,USART的名称叫做通用同步异步收发器,是可以同步和异步通信的,在异步通信...
  • 一、模块题目 ... 计算机的串行通信接口是RS-232的标准接口,而单片机的UART接口则是TTL电平,两者的电气规范不一致,所以要完成两者之间的数据通信,就需要借助接口芯片在两者之间进行电平转换,常用
  • 串行通信中,收发双方对发送或接收的数据速率要有一定的约定,我们通过软件对MCS—51串行口编程可约定四种工作方式。其中,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率...
  • 串口通信中定时器1与波特率的关系

    千次阅读 2009-12-24 18:41:00
    今天看了看有关串口通信中定时器1与波特率的关系,想讨论一下T1定时器的初值问题,定时器的初值越大,数据传送频率就越大,相同时间传送的数据就越多,定时器的溢出率就越高,波特率就越大。具体解释如下: 1:对于...
  • Qt实现串口通信示例 前言:以下串口通信示例并不完全属于原创,参考了现有网上前辈们的资源,最后结合部分个人的思想,所以下述博客会将实现的原理及代码的案例进行公开。 这里我们先上效果图: 一、串口通信...
  • 波特率计算

    2018-09-23 09:30:20
    串行通信中,收发双方对发送或接收的数据速率要有一定的约定。在串行通信中,收发双方对发送或接收的数据速率要有一定的约定
  • 本文将从通信原理的角度,解析RS232串口通信过程中的每个环节,包括硬件和软件,在信源和信宿之间,实现离散的字符串的传送。 目录: 一. 什么是RS232通信 二. RS232实现离散字符串通信的基本需求框架 三. RS232...
  • Linux下串口收发通信

    万次阅读 多人点赞 2018-09-19 01:47:15
    串口通信流程:打开串口ttySn--->初始化串口--->读写(read、write)--->关闭串口 最合适的指导书:https://www.ibm.com/developerworks/cn/linux/l-serials/ 串口设置 最基本的设置串口...
  • 什么是波特率波特率怎么计算

    万次阅读 多人点赞 2020-06-04 11:08:34
     ☆简而言之,串口传输的波特率即为每秒钟传输二进制的位数。  ☆脱离枯燥乏味的文字描述,我们用波形和数字来看看波特率是什么吧☟。  ☆说明:系统时钟50M,波特率115200。   基础知识: 因 果 系统...
  • 一、分数波特率的产生 一、接收器和发送器的波特率在USARTDIV的整数和小数寄存器中的值应设置成相同。...因此,不要在通信进行中改变波特率寄存器的数值。如何从USART_BRR寄存器值得到USARTDIV 例1:  如果 DIV_Mant
  • 功能:PLC STEP7 自由口通信 串口0 接收与发送数据 串口波特率:9600 校验位:NONE 数据位:8 停止位:1 发送: $100. 开Q0.3 $101. 关Q0.3 $102. 开Q0.4 给I0.0信号,其将从串口0发出数据
  • 在8051系列单片机如:89S51、89C51 这些单片机上,用11.0592M晶振实现115200波特率通信,几乎是不可能的。 如果换了STC单片机,例如在STC12C5A60S2实现115200的高速通信就相当简单了。 因为,STC12单片机有独立...
  • 51单片机串行波特率计算

    千次阅读 2019-06-19 21:48:58
    在这种方式下,数据从 RXD 端串行输出或输入,同步信号从 TXD 端输出,波特率固定不变,为振荡率的 1/12 。该方式是以 8 位数据为一帧,没有起始位和停止位,先发送或接收最低位。 常用于串行口外接移位寄存器,以...
  • 为何串口通信中接收端采样时钟频率是传输的波特率的16倍? 增强抗干扰是原因之一 标准UART可以选16倍采样,也可以选64倍采样,个人觉得应该是方便分频设计. 标准UART的RXD前端有一个"1到0跳变检测器",当其连续接受到8...
  • 本次将探讨串口收发字符串的最后一部分,所谓调控,不过是我取得一个名字罢了。因为FPGA要通过串口发送数据给HMI,而我们的数据并不是人为自定义随意发送,我们最终的目的是将整个系统(如电机伺服控制系统)中的...
  • CAN总线采用的是异步串行通信,也就是没有单独的时钟线来保证各个收发器之间时钟的一致,每个收发器是按事先设置的波特率来对总线上的电平进行分位。因此波特率设置准确对CAN总线的稳定通信来说非常重要。  CAN总线...
  • 串口通信中比较重要的参数包括波特率、数据位、停止位及校验位,通讯双方需要约定一致的数据格式才能正常收发数据。串行通讯可以进一步分为单工、半双工和全双工三种。在串口通信中,常用的协议包括RS-232、RS-422和...
  • keil c 单片机串口通信多字节收发

    热门讨论 2009-05-03 09:15:44
    串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配: a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,460
精华内容 3,384
关键字:

串行通信收发双方波特率