精华内容
下载资源
问答
  • 单片机串行通信

    2020-08-07 12:11:42
    文章目录串行通信串行口控制器内部结构串行口控制寄存器工作方式0工作方式 1工作方式2工作方式 3 串行通信 计算机与外部设备的通信方式有两种,一是并通信、二是串行通信。...发送第一块数据,首先发送同步信号,保

    串行通信

    计算机与外部设备的通信方式有两种,一是并通信、二是串行通信。
    串行通信有:单工、半双工(常用)、全双工。速度可以用波特率度量,其单位为 位每秒——bps
    串行通信又可以分为两种:同步、异步。

    异步通信:以字符(或字节)为单位组成数据帧进行的传送称为异步通信。一帧数据可由:起始位、数据位、可编程校验位、停止位。

    同步通信:数据以块为单位连续进行的传送称为同步通信。在发送第一块数据时,首先发送同步信号,保证发送器和接收器之间的同步。之后发送的连续的数据块中,就不需要再发送同步信号了。

    串行口控制器

    内部结构

    C51 内部有一个可编程的全双工串行通信接口,也可以用作通用异步接收/发送器、同步位移寄存器。它可以设置不同的数据格式(8、10、11 位)、波特率,并通过 RXD(P3.0)和 TXD(P3.1)与外界通信。

    其接口由数据缓冲器 SBUF、串行控制寄存器 SCON、接收位移寄存器、发送控制器、接收控制器组成。并且,其还与定时器 T1 和单片机内部总线相关。

    两个 SBUF 在物理上相互独立,但具有共同的地址 99H,通过读写指令来区分 SBUF。

    发送控制器的作用是,在门电路和 T1 的配合下,将 SBUF 中的并行数据,转为串行数据,并自动添加起始位、可编程为、停止位。这一过程结束后,中断请求标志位 TI=1,用以通知 CPU 将 SBUF 中的数据输出到 TXD(P3.1)引脚。

    接收控制器的作用是,在接收移位寄存器、T1 的配合下,使来自 RXD 的串行数据,转换为并行数据,并自动消除起始位、可编程位、停止位。这一过程结束后,将 RI =1,通知 CPU 将 RXD 中接受的数据,保存到 SBUF 中。

    单片机在接收数据时,需要通过移位寄存器、接收控制器的双重缓冲。这样可以防止 CPU 因为及时将第一帧数据读走,而引起两帧数据重叠造成的 error。

    定时器 T1 的作用是产生用以收发过程中,节拍控制的通信时钟。下降沿将数据移位;上升沿对应数据位采样。

    串行口控制寄存器

    用于串行通信的两个 SFR 有:SCON、PCON
    SCON:SM0 SM1 SM2 REN TB8 RB8 TI RI
    TB8、RB8:发送、接收数据位第九位。
    REN:允许和禁止接收控制维。REN=1 时为允许接口接收数据。
    SM2:多机通信控制位。
    SM0、SM1:决定串行口通信工作方式。

    SM1SM0 工作方式 说明
    00 工作方式 0 8位同步位移寄存器
    01 工作方式 1 10位同步位移寄存器
    10 工作方式2 11位同步位移寄存器
    11 工作方式 3 11位同步位移寄存器

    PCON:SMOD(位7)
    SMOD——波特率选择位。

    C51 单片机的串行通信口以 T1 为波特率发生器。T1 溢出脉冲可以有两种分频——16/32分频。波特率的计算公式如下:
    =1t×2SMOD32=fosc12×(2nα)×2SMOD32 波特率=\frac{1}{t}\times\frac{2^{SMOD}}{32}=\frac{f_{osc}}{12\times(2^n-\alpha)}\times\frac{2^{SMOD}}{32}

    工作方式0

    不用于串行通信,而用于——扩展接口,具体电路如下:
    在这里插入图片描述
    此时:RXD 作为数据的发送/接收端口;TXD 作为时钟(十二分频晶振)的输出端。利用下面的代码,即可操纵流水灯:

    #include<reg51.h>
    void delay() {	                        //延时
        unsigned int i;
        for (i=0; i<20000; i++) {}
    }
    
    void main() { 
        unsigned char index, LED;            //定义LED指针和显示字模
        SCON = 0;           	             //设置串行模块工作在方式0
        while (1) {      
    	   LED=0x7f;
    	   for (index=0; index < 8; index++) {
    	        SBUF = LED;                  //控制L0灯点亮
    	        do {} while(!TI);            //通过TI查询判别数据是否输出结束
                LED = ((LED>>1)|0x80);       //左移1位,末位置1
    			TI=0;
    			delay();  
     	   }
        }
    }
    

    工作方式 1

    工作方式 1~ 3 都是用于串行通信的。工作方式 1 输出 10 位的数据,通常用于点对点通信,采用 3 线式连接。即 RXD 对 TXD、TXD 对 RXD、地对地。

    首先是设置通信时钟波特率:
    =1t×2SMOD32=fosc12×(2nα)×2SMOD32 波特率=\frac{1}{t}\times\frac{2^{SMOD}}{32}=\frac{f_{osc}}{12\times(2^n-\alpha)}\times\frac{2^{SMOD}}{32}
    之后,设置波特率发生器 T1。通过 TMOD(GATE C/T M1 M0)设置工作方式,通过 TH1 TL1 设置预设值;通过 PCON(SMOD,不可为寻址)设置波特率选择位。

    设置 SCON(RI TI REN SM0 SM1)设置工作方式等。

    数据经过 TXD(P3.1)发出,通过 RXD 和 接收移位寄存器缓冲输入。

    一般波特率发生器 T1 以工作方式 2 为主。也即:
    =1t×2SMOD32=fosc12×(28α)×2SMOD32 波特率=\frac{1}{t}\times\frac{2^{SMOD}}{32}=\frac{f_{osc}}{12\times(2^8-\alpha)}\times\frac{2^{SMOD}}{32}

    工作方式2

    特点:

    • TB8 RB8 可以自动添加到数据位中。TB8 的内容可以由用户设置,可以是藉由校验位,也可以是其他控制位。
    • 通信时钟频率是固定的,计算公式为:
      =2SMOD64×fosc 波特率=\frac{2^{SMOD}}{64}\times f_{osc}
    • 发送完成后,SBUF 为空时,TI 自动置 1;接受完成时(SBUF 为空),但 RI 的状态需要由 SM2 和 RB8 共同决定。若 SM2 = 1,那么 RB8 =1 时,才能使得 RI = 1;若 SM2 = 0,则无论 RB8 为何值,都可以使得 RI=1。

    一般用于双机通信。

    工作方式 3

    一般用于多机通信。结合了 工作方式 1可以设置波特率的优点,又结合了工作方式 2 可以通过 SM2 实现多机通信。

    主机发送数据时,需要向所有的单片机都发送数据。但是,在发送第一帧数据之前,需要将目标从机的地址数据发送给所有从机,称为地址信息。地址信息的第九位为 1,数据信息的第九位为 0。

    从机在收到地址信息后,由于 RB8=1,所以无论如何都可以触发 RI = 1,也就是触发中断。在中断程序中,从机对比信息地址以及自身的地址,若匹配,则使得 SM2 = 0。若不符合,则设置 SM2 = 1。

    由于数据信息的第九位为 0,那些地址不匹配(SM2=1)的从机,就会拒绝主机发出的数据信息。从而,实现主机到目标从机的信息传递。

    展开全文
  • 串行通信 UART

    千次阅读 2018-01-10 16:27:11
    数据通信方式 分为并行通信和串行通信。...进行异步通信的单片机的时钟相互独立,其频率可以不同,在通信时不需要有同步时钟信号。由于异步通信时逐帧进行传输,各位之间的时间间隔必须相同,所以保

    数据通信方式

    分为并行通信和串行通信。并行通信:利用多条数据线将各位同时发送,特点是传输块,适于短距离通信;串行通信:利用一条线路将数据一位一位的顺序发送,特点是线路简单成本低,适于远距离通信。

    串行通信数据传送方式

    串行通信分为同步和异步两种。
    进行异步通信的单片机的时钟相互独立,其频率可以不同,在通信时不需要有同步时钟信号。由于异步通信时逐帧进行传输,各位之间的时间间隔必须相同,所以保证两片单片机有相同的传输波特率。当传输波特率误差超过5%,就不能正常通信。帧与帧之间的时间间隔是任意的,间隙为高电平。由于异步通信每传送一帧有固定格式,双方按照约定格式来发送和接收,硬件结构比同步通信简单,还能利用校验位检测错误。单片机中广泛采用异步通信方式。
    同步通信要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此外传输数据的位之间的间距均为“位间隔”的整数倍,同时发送的字符间不留间隙,即保持位同步也保持字符同步。


    串行通信的传输方向

    1. 单双工:数据始终是A发送到B;
    2. 半双工:既能从A发送到B,也能从B发送到A,但任何时候不能在两个方向同时传送,即每次只能一个设备发送,另一个设备接收;
    3. 全双工:允许通信双方同时进行发送和接收。

    串行通信的传输速率

    是指数据传送的速度,用b/s或bps(比特/秒)表示,简称比特率。在二进制下,比特率与波特率数值相等,因而在单片机的通信中常称为波特率。

    数据通信协议

    通信双方约定的一些规则。

    异步通信数据格式:空闲位、起始位、奇偶校验位、停止位。

    异步串行通信协议

    1位起始位--8位数据位--1位校验位-1位停止位

    1. 起始位:先发一个逻辑“0”信号,表示传输的开始
    2. 数据位:紧接着起始位,从低位开始传动,发送速率靠时钟确定
    3. 停止位:数据位加上这一为使得“1”的位数为偶数(偶校验)或奇数(奇校验),以此来校验数据的正确性
    4. 停止位:一个字符数据的结束标
    5. 空闲位:处于逻辑“1”状态,表示当前线路没有数据传输。

    RS-232

    RS-232接线方式有全串口接线、3线接线(RXD、TXD、GND)
    RS-232能够可靠进行数据传输的最大距离为15米,传输速度一般可达到115200bps甚至更高,标准接口能够提供的传输速度主要有以下波特率:1200、2400、4800、9600 、19200 、38400 、57600 、115200 。

    UART原理

    通用异步收发器简称UART,用来传输串行数据。
    1. 发送时:CPU将并行数据写入UART,UART按照一定的格式在一根线上串行发送数据;
    2. 接收时:UART检测另一根线上的信号,收集串行数据放在缓冲区中,CPU即可读取UART获取这些数据。

    发送数据前UART之间要约定好波特率、数据传输格式。UART使用标准的TTL/CMOS逻辑电平来表示数据,为了增强数据的抗干扰能力,提高数据传输距离,通常将TTL/CMOS转换成RS-232逻辑电平。

    数据传输流程

    1. 平时数据处于“空闲”状态(1状态);
    2. 当要发送数据时,UART改变TXD数据线的状态(变为0状态)并维持1位时间(开始位),接收方检测到开始位后,一位一位检测数据线的状态得到传输的数据;
    3. UART一帧中可以有5、 6 、7 或者8位数据,发送方按位改变数据线的状态将数据发送出去,首先发送最低位;
    4. 如果用校验位,UART在发送完数据位后,还要发送1位校验位再发送停止位,数据线恢复到“空闲”状态(1状态)。

    UART驱动程序设计

    串口初始化   数据发送功能    数据接收功能

    初始化

    • 1、设置UART通道管脚
    • 2、设置波特率
    • 3、设置数据传输格式
    • 4、选择通道工作模式

    展开全文
  • 摘要:介绍USB接口在串行通信中的应用,讨论USB接口同RS-232接口的转换以及USB接口modem的简化设计,并给出了实际中的产品样图。 1USB接口简介USB即通用串行总线,可以实现热插拔,采用菊花链结构,最多可以同时...
  • linux串行通信信号 作为系统工程师,我数据中心花费大量时间来配置服务器和其他计算机设备。 我工具箱中保留的两个项目是RS-232串行USB转换器和标准DB-9串行电缆。 当您无法通过其他方式访问设备,这些可能是...

    linux串行通信信号

    作为系统工程师,我在数据中心花费大量时间来配置服务器和其他计算机设备。 我在工具箱中保留的两个项目是RS-232串行USB转换器和标准DB-9串行电缆。 当您无法通过其他方式访问设备时,这些可能是必不可少的。 您可能需要部署尚未为您的网络配置的新路由器。 您可能需要对通过SSH无法访问的防火墙设备进行故障排除。 特别是在“熄灯”环境中,新服务器可能具有需要初始化的管理卡。 串行连接提供了用于完成这些任务的控制台的直接路径。

    USB to Serial converter and Serial Cable

    (Alan Formy-Duval, CC BY-SA 4.0

    在此示例中,我将使用Netgate设备。 这些是不具有鼠标,键盘,监视器或其他GUI功能的防火墙。 它们通常被称为“无头”。

    Netgate Firewall Appliance

    (Alan Formy-Duval, CC BY-SA 4.0

    串行通讯

    要通过串行连接设备,您需要支持RS-232协议的硬件。 这通常是一个9针DB-9串行端口,通常标记为串行,通信或控制台。 大多数较旧的计算机至少有一台。 大多数服务器仍具有它们,但大多数笔记本电脑和台式机不再具有它们。

    DB-9 Console port

    (Alan Formy-Duval, CC BY-SA 4.0

    查找串口

    如果您的系统还没有串行端口,则需要使用我提到的转换器。 当您将PL2303转换器插入计算机上的USB端口时,Linux内核会将其注册为USB TTY设备。

    您可以使用几个命令来查询系统的串行端口配置。 这里有一些例子:

    # dmesg |grep tty
    [ 252464.891372 ] usb 6 - 1 : pl2303 converter now attached to ttyUSB0

    # setserial -g /dev/ttyUSB[0123]
    / dev / ttyUSB0, UART: 16654 , Port: 0x0000, IRQ: 0

    # ls /dev/serial/by-id/
    usb-Prolific_Technology_Inc._USB-Serial_Controller_D-if00-port0

    就我而言,它将转换器检测为pl2303转换器(或Prolific Technology USB串行控制器)。

    连接串行电缆

    将串行电缆连接在转换器和设备上的串行端口之间。

    Converter and Cable connected

    (Alan Formy-Duval, CC BY-SA 4.0

    用Tio登录

    多年来,我使用了不同的工具,例如Minicom和Screen。 Tio是一种更新和更简单的工具,被描述为“一个简单的TTY终端I / O应用程序”。 它在大多数Linux发行版,FreeBSD和OpenWRT以及Snap软件包中都可用。 我使用标准的打包工具将版本1.32安装到我的Red Hat Enterprise Linux 8.1服务器上:

    # dnf info tio
    # dnf install tio

    使用tio命令初始化连接。 根据我的经验,Tio不需要任何高级配置; 它开箱即用。 确保您具有正确的设备路径,如上所示:

    # tio /dev/ttyUSB0

    # tio /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller_D-if00-port0
    Log into Netgate Management interface with tio

    (Alan Formy-Duval, CC BY-SA 4.0

    Ctrl + t命令序列可与Tio进行交互。 例如, Ctrl + t +? 将列出可用的命令,然后按Ctrl + t + q退出Tio,并带您回到Linux命令提示符。

    结论

    这些天我们很少考虑甚至使用串行通信,但是它仍然很有用。 数据中心人员仍然需要熟悉它。

    数据中心可以位于远程,一旦进入,您将需要确保拥有所有适当的工具。 当然,除了一台好的Linux笔记本电脑外,我还建议您在必要时使用上述各项来管理那些启用了串行功能的设备。

    翻译自: https://opensource.com/article/20/5/tio-linux

    linux串行通信信号

    展开全文
  • 例:用8051单片机串行口外接CD4094扩展8...串行发送,能靠TI置位(发完一帧数据后)引起中断申请,中断服务程序中发送下一帧数据,或者通过查询TI的状态,只要TI为0就继续查询,TI为1就结束查询,发送下一帧数据。...

    例:

    8051

    单片机串行口外接

    CD4094

    扩展

    8

    位并行输出口,

    如图所示,

    8

    位并行口的各

    位都接一个发光二极管,要求发光管呈流水灯状态。

    串行口方式

    0

    的数据传送可采用中

    断方式,也可采用查询方式,无论哪种方式,都要借助于

    TI

    RI

    标志。串行发送时,能

    TI

    置位

    (

    发完一帧数据后

    )

    引起中断申请,

    在中断服务程序中发送下一帧数据,

    或者通过

    查询

    TI

    的状态,只要

    TI

    0

    就继续查询,

    TI

    1

    就结束查询,发送下一帧数据。在串行

    接收时,则由

    RI

    引起中断或对

    RI

    查询来确定何时接收下一帧数据。无论采用什么方式,

    在开始通信之前,

    都要先对控制寄存器

    SCON

    进行初始化。

    在方式

    0

    中将,

    00H

    SCON

    就能了。

    -----------------

    单片机串行口通信程序设计列子

    --------------------------

    ORG 2000H

    START: MOV SCON,#00H ;

    置串行口工作方式

    0

    MOV A,#80H ;

    最高位灯先亮

    CLR P1.0 ;

    关闭并行输出

    (

    避象传输过程中,各

    LED

    "

    暗红

    "

    现象

    )

    OUT0: MOV SBUF,A ;

    开始串行输出

    OUT1: JNB TI,OUT1 ;

    输出完否

    CLR TI ;

    完了,清

    TI

    标志,以备下次发送

    SETB P1.0 ;

    打开并行口输出

    ACALL DELAY ;

    延时一段时间

    RR A ;

    循环右移

    CLR P1.0 ;

    关闭并行输出

    JMP OUT0 ;

    循环

    说明:

    DELAY

    延时子程序能用前面我们讲

    P1

    口流水灯时用的延时子程序,

    这里就不给出

    展开全文
  • 1. 异步串行通信 异步串行通信是以字符为单位的间歇传输形式传送按字符进行包装为此数据位之外要增添起始位奇偶校验位和停止位构成一个通信帧下图为异步通信的帧格式 ; 几点说明 在串行通信中信息的两种状态分别...
  •  常用的标准51单片机内部仅含有一个可编程的全双工串行通信接口,具有UART的全部功能。该接口电路不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。当以此类型单片机构成分布式多级应用系统,...
  • 摘要:DSP与多个外设进行通信时,需要扩展异步串行通信接口。以TMS320C6711为例,采用ST16C554异步串行收发器,介绍了目前最先进的C6000系列DSP与多路RS232、RS485/422设备通信的设计方案,并给出了软硬件实现实例...
  • 摘要:介绍一种基于编/解码器的PC机与多单片机之间的串行通信方法,并对智能卡的设计进行了说明。该编/解码器通信方案,软好地解决了多机系统中作为...在进行数据传输,一般先由上位机发出地址帧对指定的下位机寻
  • 串行通信的基本原理

    2021-02-03 17:53:15
    应用程序要使用串口进行通信,必须使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。串口通信程序的流程如下图: 二、串口信号线的接法一个完整的RS-232C接口有22根线,...
  •  对于异步串行通信,只有通信双方波特率相同,才能实现数据的正确传输与接收;而一些系统总是希望能实现对各种波特率的兼容。通常的实现方法是,要求对方首先发出规定的字符或数据,系统收到该字符或数据后,...
  • 本文介绍了C++ Builder中如何利用串行通信控件进行串行通信编程。 一、引言 目前,用计算机进行数据传输,常用的是串行通信方式。用C++ Builder来编写串行通信程序,可以调用Windows API函数,也可以...
  • DSP与多个外设进行通信时,需要扩展异步串行通信接口。以TMS320C6711为例,采用ST16C554异步串行收发器,介绍了目前最先进的C6000系列DSP与多路RS232、RS485/422设备通信的设计方案,并给出了软硬件实现实例。
  • 串行通信是将数据字节分成一位一位的形式一条传输线上逐个地传送。 串行通信的特点:传输线少,长距离传送成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。 串行通信的基本概念: 1....
  • 单片机应用系统中,经常需要通过RS-232串行口与微机进行通信。Microsoft推出的ActiveX技术提供了另外一种实现串行通信的方法。这种方法不仅相对较为简单,而且非常实用。尤其是Visual C++这种可视化面向对象的编程...
  • 在计算机中,总线通信控制主要解决...在进行异步串行通信时,没有同步时钟,也不需要在数据传送中传送同步信号。为了确认被传送字符,约定字符格式为:  1个起始位(低电平)、5~8个数据位(如ASCLL码为7位)、1个奇
  • 随着计算机应用的日益普及,与计算机进行信息交互的终端也越来越多,其中串行通信是终端与计算机之间的主要通信方式。通常情况下,接收方必须知道发送方的发送速率,帧结构,并采用相同的速率及帧结构进行接收,才能...
  •  目前,许多厂商都提供通用的串行通信芯片,其传输方式分为同步方式和异步方式。其中,异步芯片大多与INTEL的8250芯片兼容;而同步方式,由于一般涉及到所支持的传输协议(BSC、HDLC、SDLC等),所以当用户要求应用...
  • 主要作用是使矿山井下作业人员能较方便的进行双向无线通信,并辅助实时人员跟踪,便于企业合理的调度和管理,特别是矿难发生原有线通信系统损害的情况下,对救援受困人员起很大的作用。 ZigBee是一种新兴的...
  • 目前大多数数字信号处理器(DSP)芯片上未提代通用异步串行收发器(UART),只提供2~3个同步串行接口,其与微机及其它设备进行串行通信时,必须DSP上扩展异步串行接口。
  • DSP实际运行中不能用外接的端口进行控制,需要用DSP自带的串行通信模块来解决这一问题。本文以DSP控制永磁同步电机为例,介绍整个控制系统中串行通信的实现。  1 永磁同步电机控制系统  同步发电机为了实现...
  • 51串行通信

    2016-09-15 13:51:19
    多微机系统以及现代测控系统中信息的交换多采用串行通信。 ① 并行通信:通常是将数据字节的各位用多条数据线同时进行传送。 特点:控制简单、传输速度快,但传输线多,长距离传送成本高。 ② 串行通信:将...
  •  关键词:Windows95 单片机AT89C51 RS-232接口 RS-485接口 串行通信 以单片机为基础的数据采集和实时控制系统中,通过计算机中的RS-232接口进行计算机与单片机之间的命令和数据传送,就可以利用计算机对生产...
  • 1、串行通信 2、常见的4种串行通信标准 3、对74LS164芯片的介绍 74LS164:串行转并行芯片,内部是1个8位的移位寄存器组成,由8...4、用KEIL4进行软件仿真,按正常步骤建立工程,然后下图位置按照下图设置即可。
  • Visual C++的编程中,既可以用Windows API函数进行串行通信编程,也可以利用环境自带的控件进行编程。利用 API函数编写实际应用程序,往往要考虑多线程的问题,这样编出来的程序不但十分庞大,而且结构比较...
  • 串行通信接口的设备生产现场仍大量存在,当这些设备较多,计算机监控系统如何与这些 串口设备连接是工程设计人员需要考虑的问题。文章首先介绍了监控系统与串行通信设备的 直接连接和间接集中管理两种常用连接...
  • 51单处机 串行通信原理及实现

    千次阅读 2019-06-17 16:25:51
    计算机通信是将计算机和通信技术的相结合,完成云计算机与外部设备或计算机与计算机之间的信息交换。...串行通信是将数据字节分成一位一位的形式一条传输线上逐个地传送。 串行通信的特点:传输线少,长距离传...
  • 对于异步串行通信 ,只有通信双方波特率相同 , 才能实现数据的正确传输与接收 ;而一些系统总是希望能 实现对各种波特率的兼容。 通常的实现方法是 ,要求对方 首先发出规定的字符或数据 ,系统收到该字符或数据后 ,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 629
精华内容 251
关键字:

在进行串行通信时