精华内容
下载资源
问答
  • 能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。与之前一样,首先我们来...
  • 单片机的串行口及应用 通信方式: ​ 1.并行通信:数据的各位同时进行传送。速度快、效率高、成本高 ​ 2.串行通信:数据一位一位地按顺序进行传送。减少传输线、降低通信成本 按照数据传送方向: 单工、半双工、全...

    单片机的串行口及应用

    通信方式:

    ​ 1.并行通信:数据的各位同时进行传送。速度快、效率高、成本高

    ​ 2.串行通信:数据一位一位地按顺序进行传送。减少传输线、降低通信成本

    按照数据传送方向: 单工、半双工、全双工。一般情况下多数串行口工作在半双工,原因:用法简单。

    波特率: 每秒传送二进制属马的位数,单位pbs (位/秒),衡量的是数据的传输速率,常用的波特率有2400bps、4800bps、9600bps…等。接收端和发送端的比特率分别设置时,必须保证两者相同。

    串行通信的两种基本通信方式:

    1.异步通信;

    ​ 以字符(或字节)为单位组成的数据帧进行传送。一帧数据由 起始位、数据位、可编程校验位和停止位组成。
    在这里插入图片描述
    组成:起始位、数据位、可编程位、停止位。

    同步通信

    数据以块为单位连续进行的传送,在传送数据前首先通过同步信号保证发送和接收端同步(该同步信号一般由硬件实现)。然后连续传送整块数据。特点有同步时钟线。

    7.2 MCS-51 的串行口控制器

    串行口的内部结构

    MSC-51 内部有一个可编程的全算公共串行通信接口,可以作为通用异步就收/发送器(UART),也可作为同步移位寄存器,他的数据帧格式可分为 8位、10位、11位3 种。可设置多种不同的波特率。通过引脚RXD(P3.0)、TXD(P3.1)与外界进行通信。结构如图;
    在这里插入图片描述
    虚线框内部是串行口结构,包括 两个数据缓存器 SBUF 串行控制寄存器 SCON 发送和接受引脚。两个SBUF(发送/接收)在物理上是相互独立的,但是公用一个地址(99H),通过读写指令来区分到底是对那个SBUF进行操作。

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

    接收控制器的作用是在 接收移位寄存器 和 定时器T1 的配合下将来自 RXD引脚 的串行数据转换为并行数据并自动过滤掉 起始位、可编程位、停止位。这一过程结束可是接收中断请求标志位RI 自动置1,用于通知CPU已将数据存入SBUF(收)。

    整体来看:发送的数据从SBUF(发)直接发出。接收的数据要先经过接收移位寄存器后才到达SBUF(收),接收完数据到SBUF(收)后接收端可通过接收移位寄存器立即接收下一帧数据。因此发送端为单缓冲结构,发送端为算换从结构,好处是避免在第二帧接受的数据到来时,CPU 未来得及接受地一帧数据而引起两针数据重叠错误。

    定时器T1的作用是产生用以接受过程中节拍控制的时钟信号(方波脉冲)。

    串行口控制寄存器

    两个:串行口控制寄存器SCON、电源控制俱存其PCON

    SCON串行口寄存器(98H)
    在这里插入图片描述
    SM2、TB8、RB8 主要用于多机通信.

    SM0 SM1 方式 功能说明
    0 0 0 8位同步移位寄存器方式
    0 1 1 10位数据异步通信方式
    1 0 2 11位数据异步通信方式
    1 1 3 11位数据异步通信方式

    PCON电源控制寄存器(不可位寻址)
    在这里插入图片描述
    通信波特率的计算

    51单片机以定时器1作为波特率信号发生器,其溢出脉冲经过分频单元后送到手法控制器中,分频单元如图:

    波特率的计算公式:通讯时钟波特率 = fosc/(12*(2^n - a)) * 2^SMOD/32

    晶振频率 fosc 一定后波特率大小取决于 T1 的工作方式 你和计数初值 a,也取决于波特率选择为SMOD。

    7.3串行口工作方式0及其应用(8位同步移位寄存器方式)

    SM0 SM1 = 00 时为串口工作方式0状态,
    在这里插入图片描述
    ​ 串口方式0逻辑示意图

    数据帧8位为一帧,先传输低位,后传输高位。无起始位和停止位,都有P3.0引脚出入。通信固定频率为12分频晶振,出供给内部收发逻辑外还通过引脚P3.1输出,作为芯片接口的移位时钟信号。

    工作方式 0 并不用于串行通信,而是通过串并转换用于扩展单片机I/O口。方式0通常与移位寄存器芯片配合使用。

    实例1 二级管循环显示

    /*

    */

    7.4串行工作方式1及其应用(10位数据异步通信方式 )

    SM0 SM1 = 10 时为串行口工作方式1状态,与方式0相比方式1发生了如下变化

    1.通信时钟波特率是可变的,由软件设定为不同速率,其值为:

    ​ fosc/(12*(2^n - a)) * 2^SMOD/32

    因此,串行口工作方式一 初始化时要设置 TMOD(CATE、C/T、M1、M0)、PCON(SMOD),并确定计数器初值a。
    在这里插入图片描述
    2.发送数据由TXD(P3.1)接收数据RXD(P3.2).需经过接收移位寄存器换从输入,初始化时需设置SCON(RI,TI、REN、SM1,SM0).

    数据帧由十位组成,1位起始位 1位终止位 八位数据位。主要用于点对点串行通信

    7.5串行工作方式2及其应用(11位数据异步通信方式 )

    SM0 SM1 = 10 时为串行口工作方式2;

    1.与方式1相比,数据帧有11为组成,1位起始位、8位数据位、1位可编程位、1位停止位。在发送时 TB8 的值可以自动被添加到数据真的第 9 位并随数据帧一起发送。接收时 数据帧的第 9 位可自动被送入 RB8 中第九位数据可有用户安排,可以做为奇偶校验位也可做其他控制位。

    2.通信时钟频率是固定的,可由 SMOD 设置为 1/32或1/64晶振频率。即 2^SMOD/64 * fosc 。初始化时仅需要设置PCON。

    3.发送完成后(SBUF发 为空),TI自动置1 ;但接收完成后(SBUF收 为空),RI的状态要由 SM2 和 RB8 共同决定。若SM2 = 1,仅当 RB8 = 1 时接受逻辑单元才能使 RI置 1。 若此时RB8 = 0 则接收逻辑单元也无法使RI 置1.。 反之若 SM2 = 0 无论 RB8 为何值,接收逻辑单元都能使 RI 置 1.

    7.6 串行工作方式3及其应用(11位数据异步通信方式)

    SM0、SM1 = 11 时串行口工作在方式 3。与方式2相比 方式 3 的波特率是可变的。(其余都与方式 2 相同)

    fosc/(12 * (2^n - a)) * 2^ SMOD /64

    方式3 主要用于要求进行错误校验或者 主从式 系统通信的场合。 每个从机都有各自独立的地址00H、11H等,从机初始化都设置为串口方式 2 或 3,并使 SM2 = REN = 1(多机通信、允许接收),开放串口中断。主机向某从机发送命令时先发送目标从机的地址给所有从机,之后再发送数据或命令信息。主机发送的地址信息的第 9 位为 1 。数据或命令信息的第九位 为 0 .

    从机接受到地址信息后。从机接收到的第九位都为 1 ,都能激活中断。在中断函数里比对 本机地址与发来的地址对比相符使本机 SM2 为0 . 不相等继续保持为1。

    展开全文
  • 单片机C语言编程串行口通讯第7章 MCS-51单片机串行口 第7章 MCS-51单片机串行口 目 录 7.1 串行通信基本知识 7.2 串行口结构及控制 7.3 串行口工作方式 7.4 串行口应用举例 7.5 单片机与PC机通信的接口电路 本章要点...

    单片机C语言编程串行口通讯

    第7章 MCS-51单片机串行口 第7章 MCS-51单片机串行口 目 录 7.1 串行通信基本知识 7.2 串行口结构及控制 7.3 串行口工作方式 7.4 串行口应用举例 7.5 单片机与PC机通信的接口电路 本章要点 本章主要讲述MCS-51单片机串行口的结构、工作原理以及应用。 主要内容包括串行通信基本知识、MCS-51单片机串行口结构、串行口工作方式以及单片机与PC机通信的接口电路。 7.1 串行通信基本知识 主要内容 7.1.1 数据通信 7.1.2 异步通信和同步通信 7.1.3 波特率 7.1.4 通信方向 7.1.5 串行通信接口种类 7.1.1 数据通信 计算机与外界的信息交换称为通信。基本的通信方法有并行通信和串行通信两种。 1.并行通信 单位信息(通常指一个字节)的各位数据同时传送的通信方法称为并行通信。 2.串行通信 单位信息的各位数据被分时一位一位依次顺序传送的通信方式称为串行通信。 7.1.1 数据通信 1.异步通信 异步通信中,传送的数据可以是一个字符代码或一个字节数据,数据以帧的形式一帧一帧传送。 2.同步通信 在同步通信中,每一数据块发送开始时,先发送一个或两个同步字符,使发送与接收取得同步,然后再顺序发送数据。数据块的各个字符间取消起始位和停止位,所以通信速度得以提高 。 7.1.3 波特率 在串行通信中,对数据传送速度有一定要求。波特率表示每秒传送的位数,单位为b/s(记作波特)。 例如:数据传送速率为每秒钟10个字符,若每个字符的一帧为11位,则传送波持率为: 11b/字符×10字符/s=110b/s 异步通信的传送速率一般在50~19 200b/s之间 。 7.1.4 通信方向 单工方式:一对传输线只允许单方向传送数据; 半双工方式:一对传输线允许向两个方向中的任一方向传送数据,但不能同时进行; 全双工方式:用两对传输线连接在发送器和接收器上,发送和接收能同时进行。 7.1.5 串行通信接口种类 根据串行通信格式及约定(如同步方式、通信速率、数据块格式等)不同,形成了许多串行通信接口标准,如常见的:UART(串行异步通信接口)、 USB(通用串行总线接口)、 I2C(集成电路间的串行总线)、 SPI(串行外设总线)、 485总线、CAN总线接口等。 7.2 串行口结构及控制 主要内容 7.2.1 MCS-51串行口结构 7.2.2 与串行口有关的特殊功能寄存器 7.2.3 波特率设计 7.2.1 MCS-51串行口结构 7.2.2 与串行口有关的特殊功能寄存器 1.控制状态寄存器SCON 用于定义串行通信口的工作方式和反映串行口状态,其字节地址为98H,复位值为0000 0000B,可位寻址格式为: SM0和SM1(SCON.7、SCON.6):串行口工作方式选择位。 TB8(SCON.3):发送数据的第9位。 RB8(SCON.2):接收数据的第9位。 TI(SCON.1):发送中断标志。 RI(SCON.0):接收中断标志。 2.电源控制寄存器PCON 电源控制寄存器PCON (地址为87H)中只有SMOD位与串行口工作有关。 7.2.3 波特率设计 方式0和方式2的波特率是固定的,方式1和方式3的波特率是由定时器T1的溢出率来决定的。在增强型单片机中,也可以使用T2作波特率发生器。 1.方式0的波特率 固定为振荡频率的1/12。并不受PCON寄存器中SMOD位的影响。 方式0的波特率=fosc/12 7.2.3 波特率设计 2.方式2的波特率 接收与发送的移位时钟由振荡频率fosc的第二节拍P2时钟(fosc/2)给出,所以,方式2波特率取决于PCON中SMOD位的值:当SMOD=0时,波特率为fosc的1/64;若SMOD=1,则波特率为fosc的1/32。即 方式2的波特率= 2SMOD×fosc/64 7.2.3 波特率设计 3.方式1和方式3的波特率 (1)T1作波特率发生器 在最典型应用中,定时器T1选用定时器模式2,此时n=8,设定时器的初值为X: 于是,X=256 - (2)T2作波特率发生器 在增强型单片机中,还可以使用T2作为波特率发生器。当寄存器T2CON的位TCLK=1和(或)RCLK=1时,允许串行口从T2获得发送和(或)接收的波特率。 串行口方式1、3的波特率=T2溢出率/16 定时器2作波特率发生器时,计数在每个状态周期递增。这样: 方式1、3的波特率= 主要内容

    展开全文
  • UART串行口简介

    千次阅读 2019-04-27 16:57:40
    Written by CalmCat Date: 2019/4/11 0:54 数据链路层 ...从数据发送点到数据接收点(点到点 point to point)所经过的传输途径。 物理层 作为数据的传输媒介,如电缆,用以建立、维护和拆除物理...

    Written by CalmCat

    Date: 2019/4/11 0:54

    数据链路层

    一条物理线路之上,通过一些规程或协议来控制这些数据的传输,以保证被传输数据的正确性。实现这些规程或协议的硬件和软件加到物理线路,这样就构成了数据链路。从数据发送点到数据接收点(点到点 point to point)所经过的传输途径。

    物理层

    作为数据的传输媒介,如电缆,用以建立、维护和拆除物理链路连接,简单说就是实质上可以看到的承载数据传输的物理介质

    网络层

    主要功能是将网络地址与物理地址对应,并决定数据包从哪里发送到接收方,为数据包提供逻辑地址、选路等

    简单介绍了物理层和网络层的功能,那么数据链路层介于两者之间,主要是将物理层的数据比特流封装成帧,控制帧在物理信道上的传输,包括纠错,调节发送速率等,另外提供两个实体之间数据链路的建立、维持和释放的管理工作。

    计算机与UART

    计算机内部采用并行数据,不能直接把数据发到Modem,必须经过UART整理才能进行异步传输,其过程为:CPU先把准备写入串行设备的数据放到UART的寄存器(临时内存块)中,再通过FIFO(First Input First Output,先入先出队列)传送到串行设备,若是没有FIFO,信息将变得杂乱无章,不可能传送到Modem。

    UART功能

    将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部并行数据的器件使用。

    在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。

    在输出数据流中加入启停标记,并从接收数据流中删除启停标记。

    处理由键盘或鼠标发出的中断信号(键盘和鼠标也是串行设备)。

    可以处理计算机与外部串行设备的同步管理问题。

     

    UART是计算机中串行通信端口的关键部分UART相连于产生兼容RS232规范信号的电路。RS232标准定义逻辑“1”信号相对于地为-3到-15伏,而逻辑 “0”相对于地为+3到+15伏。所以,当一个微控制器中的UART相连于PC时,它需要一个RS232驱动器来转换电平。

    Uart这里指的是TTL电平的串口;RS232指的是RS232电平的串口。

    TTL电平是5V的,而RS232是负逻辑电平,它定义+5~+12V为低电平,而-12~-5V为高电平。

    Uart串口的RXD、TXD等一般直接与处理器芯片的引脚相连,而RS232串口的RXD、TXD等一般需要经过电平转换(通常由Max232等芯片进行电平转换)才能接到处理器芯片的引脚上,否则这么高的电压很可能会把芯片烧坏。

    UART通信

    UART首先将接收到的并行数据转换成串行数据来传输。消息帧从一个低位起始位开始,后面是5~8个数据位,一个可用的奇偶位和一个或几个高位停止位。接收器发现开始位时它就知道数据准备发送,并尝试与发送器时钟频率同步。如果选择了奇偶,UART就在数据位后面加上奇偶位。奇偶位可用来帮助错误校验。

    在接收过程中,UART从消息帧中去掉起始位和结束位,对进来的字节进行奇偶校验,并将数据字节从串行转换成并行。UART也产生额外的信号来指示发送和接收的状态。例如,如果产生一个奇偶错误,UART就置位奇偶标志。

    UART通信速率

    数据传输可以首先从最低有效位(LSB)开始。然而,有些UART允许灵活选择先发送最低有效位或最高有效位(MSB)微控制器中的UART传送数据的 速度范围为每秒几百位到1.5Mb。例如,嵌入在ElanSC520微控制器中的高速UART通信的速度可以高达1.152Mbps。UART波特率还受 发送和接收线对距离(线长度)的影响。

    目前,市场上有只支持异步通信和同时支持异步与同步通信的两种硬件可用于UART。前者就是UART名字本身的含义,在摩托罗拉微控制器中被称为串行通信 接口(SCI);

    UART通信协议

    UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。

    其中各位的意义如下:

    起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。

    资料位:紧接着起始位之后。资料位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。

    奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。

    停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供 计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

    空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。

    波特率:是衡量资料传送速率的指标。表示每秒钟传送的二进制位数。例如资料传送速率为120字符/秒,而每一个字符为10位,则其传送的波特率为10×120=1200位/秒=1200波特。

    UART的作用

    发送/接收逻辑

    发送逻辑对从发送FIFO 读取的数据执行“并→串”转换。控制逻辑输出起始位在先的串行位流,并且根据控制寄存器中已编程的配置,后面紧跟着数据位(注意:最低位 LSB(LSB:Least Significant Bit) 最低有效位(LSB))先输出)、奇偶校验位和停止位。

    在检测到一个有效的起始脉冲后,接收逻辑对接收到的位流执行“串→并”转换。此外还会对溢出错误、奇偶校验错误、帧错误和线中止(line-break)错误进行检测,并将检测到的状态附加到被写入接收FIFO 的数据中。

    波特率的产生

    波特率除数(baud-rate divisor)是一个22 位数,它由16 位整数和6 位小数组成。波特率发生器使用这两个值组成的数字来决定位周期。通过带有小数波特率的除法器,在足够高的系统时钟速率下,UART 可以产生所有标准的波特率,而误差很小。

    数据收发

    发送时,数据被写入发送FIFO。如果UART 被使能,则会按照预先设置好的参数(波特率、数据位、停止位、校验位等)开始发送数据,一直到发送FIFO 中没有数据。一旦向发送FIFO 写数据(如果FIFO 未空),UART 的忙标志位BUSY 就有效,并且在发送数据期间一直保持有效。BUSY 位仅在发送FIFO 为空,且已从移位寄存器发送最后一个字符,包括停止位时才变无效。即 UART 不再使能,它也可以指示忙状态。BUSY 位的相关库函数是UARTBusy( )

    在UART 接收器空闲时,如果数据输入变成“低电平”,即接收到了起始位,则接收计数器开始运行,并且数据在Baud16 的第8 个周期被采样。如果Rx 在Baud16 的第8 周期仍然为低电平则起始位有效,否则会被认为是错误的起始位并将其忽略。

    如果起始位有效,则根据数据字符被编程的长度,在 Baud16 的每第 16 个周期对连续的数据位(即一个位周期之后)进行采样。如果奇偶校验模式使能,则还会检测奇偶校验位。

    最后,如果Rx 为高电平,则有效的停止位被确认,否则发生帧错误。当接收到一个完整的字符时,将数据存放在接收FIFO 中。

    中断控制

    出现以下情况时,可使UART 产生中断:

    FIFO 溢出错误

    线中止错误(line-break,即Rx 信号一直为0 的状态,包括校验位和停止位在内)

    奇偶校验错误

    帧错误(停止位不为1

    接收超时(接收FIFO 已有数据但未满,而后续数据长时间不来)

    由于所有中断事件在发送到中断控制器之前会一起进行“或运算”操作,所以任意时刻 UART 只能向中断产生一个中断请求。通过查询中断状态函数UARTIntStatus( ),软件可以在同一个中断服务函数里处理多个中断事件(多个并列的if 语句)。

    FIFO 操作

    FIFO 是“First-In First-Out”的缩写,意为“先进先出”,是一种常见的队列操作。 Stellaris 系列ARM 的UART 模块包含有2 个16 字节的FIFO:一个用于发送,另一个用于接收。可以将两个FIFO 分别配置为以不同深度触发中断。可供选择的配置包括:1/8、 1/4、1/2、3/4 和7/8 深度。例如,如果接收FIFO 选择1/4,则在UART 接收到4 个数据时产生接收中断。

    发送FIFO的基本工作过程: 只要有数据填充到发送FIFO 里,就会立即启动发送过程。由于发送本身是个相对缓慢的过程,因此在发送的同时其它需要发送的数据还可以继续填充到发送 FIFO 里。当发送 FIFO 被填满时就不能再继续填充了,否则会造成数据丢失,此时只能等待。这个等待并不会很久,以9600 的波特率为例,等待出现一个空位的时间在1ms 上下。发送 FIFO 会按照填入数据的先后顺序把数据一个个发送出去,直到发送 FIFO 全空时为止。已发送完毕的数据会被自动清除,在发送FIFO 里同时会多出一个空位。

    接收FIFO的基本工作过程: 当硬件逻辑接收到数据时,就会往接收FIFO 里填充接收到的数据。程序应当及时取走这些数据,数据被取走也是在接收FIFO 里被自动删除的过程,因此在接收 FIFO 里同时会多出一个空位。如果在接收 FIFO 里的数据未被及时取走而造成接收FIFO 已满,则以后再接收到数据时因无空位可以填充而造成数据丢失。

    收发FIFO 主要是为了解决UART 收发中断过于频繁而导致CPU 效率不高的问题而引入的。在进行 UART 通信时,中断方式比轮询方式要简便且效率高。但是,如果没有收发 FIFO,则每收发一个数据都要中断处理一次,效率仍然不够高。如果有了收发FIFO,则可以在连续收发若干个数据(可多至14 个)后才产生一次中断然后一并处理,这就大大提高了收发效率

    完全不必要担心FIFO 机制可能带来的数据丢失或得不到及时处理的问题,因为它已经帮你想到了收发过程中存在的任何问题,只要在初始化配置UART 后,就可以放心收发了, FIFO和中断例程会自动搞定一切。

    回环操作

    UART 可以进入一个内部回环(Loopback)模式,用于诊断或调试。在回环模式下,从Tx 上发送的数据将被Rx 输入端接收。

    串行红外协议

    在某些 Stellaris 系列 ARM 芯片里,UART 还包含一个 IrDA 串行红外(SIR)编码器/ 解码器模块。IrDA SIR 模块的作用是在异步UART数据流和半双工串行SIR 接口之间进行转换。片上不会执行任何模拟处理操作。SIR 模块的任务就是要给UART 提供一个数字编码输出和一个解码输入。UART 信号管脚可以和一个红外收发器连接以实现IrDA SIR物理层连接。

    UART的寄存器介绍

    1.UART线性控制寄存器ULCONn(ULCON0, R/W, Address = 0xEC00_0000

    ULCONn

    描述

    初始状态

    Reserved

    [7]

     

    0

    Infra-Red Mode

    [6]

    是否使用红外模式

    0=正常模式

    1=红外模式

    0

    Parity Mode

    [5:3]

    校验方式

    0XX=无奇偶校验

    100=奇校验

    101=偶校验

    110=校验位强制为1

    111=校验位强制为0

    000

    Number of Stop Bit

    [2]

    停止位数量

    0=1个停止位

    1=2个停止位

    0

    Word Length

    [1:0]

    数据位个数

    00=5bit 01=6bit

    10=7bit 11=8bit

    00

    2.UART控制寄存器UCONn(UCON0,R/W Address = 0xEC00_0004

    UCONn

    描 述

    初 始 值

    Clock Selection

    [11:10]

    x0PCLK 做比特率发生

    01UART_CLK

    11 = SCLK_UART

    0

    Tx Interrupt Type

    [9]

    0Tx 中断脉冲触发

    1Tx 中断电平触发

    0

    Rx Interrupt Type

    [8]

    0Rx 中断脉冲触发

    1: Rx 中断电平触发

    0

    Rx Time Out Enable

    [7]

    0:接收超时中断不允许

    1: 接收超时中断允许

    0

    Rx Error Status

    Interrupt Enable

    [6]

    0:不产生接收错误中断

    1: 产生接收错误中断

    0

    Loopback Mode

    [5]

    0:正常模式

    1: 发送直接传给接收方式(Loopback

    0

    Reserved

    [4]

    0:正常模式发送

    1: 发送间断信号

    0

    Transmit Mode

    [3:2]

    发送模式选择

    00:不允许发送

    01:中断或查询模式

    10DMA0请求

    11DMA1 请求

    00

    Receive Mode

    [1:0]

    接收模式选择

    00:不允许接收

    01:中断或查询模式

    10DMA0请求

    11DMA1请求

    00

    3.UART FIFO 控制寄存器UFCONn(UFCON0,R/W,ADDRESS = 0xEC00_0008

    UFCONn

    描 述

    初 始 值

    Tx FIFO Trigger Level

    [7:6]

    决定发送FIFO的触发位置

    00=0个字节时触发

    01=16个字节时触发

    10=32个字节时触发

    11=48个字节时触发

    00

    Rx FIFO Trigger Level

    [5:4]

    决定接收FIFO的触发位置

    00=1个字节时触发

    01=8个字节时触发

    10=16个字节时触发

    11=32个字节时触发

    00

    Reserved

    [3]

    保留

    0

    Tx FIFO Reset

    [2]

    Tx FIFO复位后是否清零

    0=不清零 1=清零

    0

    Rx FIFO Reset

    [1]

    Rx FIFO复位后是否清零

    0=不清零 1=清零

    0

    FIFO Enable

    [0]

    使能FIFO功能

    0=不使能 1=使能

    0

    4.UART MODEM控制寄存器UMCONn(UMCON0,R/W,ADDRESS = 0xEC00_000C

    UMCONn

    RTS trigger Level

    [7:5]

    如果自动流控制位使能,

    则以下位将决定失效nRTS信号:

    000 = RX FIFO 填充63字节

    001 = RX FIFO 填充56字节

    010 = RX FIFO 填充48字节

    011 = RX FIFO 填充40字节

    100 = RX FIFO 填充32字节

    101 = RX FIFO 填充24字节

    110 = RX FIFO 填充16字节

    111 = RX FIFO 填充8 字节

    000

    Auto Flow Control (AFC)

    [4]

    0:不允许使用AFC模式

    1:允许使用AFC 模式

    0

    Reserved

    [3:1]

    保留,必须全为0

    00

    Request to Send

    [0]

    0:不激活nRTS

    1:激活nRTS

    0

    5.发送寄存器UTXHn和接收寄存器URXHn

    这两个寄存器存放着发送和接收的数据,在关闭FIFO的情况下只有一个字节8位数据。需要注意的是,在发生溢出错误时,接收的数据必须被读出来,否则会引发下次溢出错误。

    6.比特率分频寄存器UBRDIVn

    用于串口比特率的设置。S5PC100引入了UDIVSLOTn,使得波特率的设置比早期处理器更加精确。下面以设置波特率为115200为目标,介绍设置方法。

    DIV_VAL = (PCLK / (bps*16 ) ) -1

    =66.75M/115200*16 - 1      //PCLK由系统时钟提供,此为设定66.75M

    =35.214

    UBRDIVn = 35(DIV_VAL的整数部分)。

    (UDIVSLOTn中1的数量)/16 = 0.2。

    (UDIVSLOTn中1的数量) = 3。

    根据手册中的建议3 0x0888(0000_1000_1000_1000b)11 0xDDD5(1101_1101_1101_0101b)选择"UDIVSLOTn = 0x0888; "。

    7.串口状态寄存器UTRSTATn(UTRSTAT0,R,ADDRESS = 0xEC00_0010

    UTRSTATn

    描 述

    初 始 值

    Transmitter empty

    [2]

    发送缓冲和发送移位寄存器是否都为空

    0=11

    1=

    1

    Transmit buffer empty

    [1]

    关闭FIFO的情况下,发送缓冲是否为空

    0=不为空

    1=

    1

    Receive buffer data ready

    [0]

    关闭FIFO的情况下,接收缓冲是否为空

    0=

    1=不为空

    0

     

    UART设计思想

    数据发送的思想是,当启动字节发送时,通过TxD先发起始位,然后发数据位和奇偶数效验位,最后再发停止位,发送过程由发送状态机控制,每次中断只发送1个位,经过若干个定时中断完成1个字节帧的发送。

    数据接收的思想是,当不在字节帧接收过程时,每次定时中断以3倍的波特率监视RxD的状态,当其连续3次采样电平依 次为1、0、0时,就认为检测到了起始位,则开始启动一次字节帧接收,字节帧接收过程由接收状态机控制,每次中断只接收1个位,经过若干个定时中断完成1 个字节帧的接收。

    为了提高串口的性能,在发送和接收上都实现了FIFO功能,提高通信的实时性。FIFO的长度可以进行自由定义,适应用户的不同需要。

    波特率的计算按照计算公式进行,在设置最高波特率时一定要考虑模拟串口程序代码的执行时间,该定时时间必须大于模拟串口的程序的规定时间。单片机的执行速度越快,则可以实现更高的串口通讯速度

    UART的特征

    一般uart控制器在嵌入式系统里面都做在cpu一起,像飞思卡尔的IMX6芯片就是这样,有多个uart控制器。

    引脚介绍(COM口比较多pin,但是常用的也是这几个):

    VCC:供电pin,一般是3.3v,在我们的板子上没有过电保护,这个pin一般不接更安全

    GND:接地pin,有的时候rx接受数据有问题,就要接上这个pin,一般也可不接

    RX:接收数据pin

    TX:发送数据pin

    在调试的时候, 多数情况下我们只引出rx,tx即可。 比如调试gps模块, IC数据直接通过uart上报,我就直接用了两个线连出了rx,tx,连上串口转USB小板, 电脑从串口直接获取数据,这样跳过了开发板,测试了gps的数据有没有问题。

    UART有4个pin(VCC, GND, RX, TX), 用的TTL电平, 低电平为0(0V),高电平为1(3.3V或以上)。

    DMA

    (Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。

    Auto Flow Control (AFC) 自动流控制

    这里讲到的“流”,当然指的是数据流。数据在两个串口之间传输时,常常会出现丢失数据的现象,或者两台计算机的处理速度不同,如台式机与单片机之间的通讯,接收端数据缓冲区已满,则此时继续发送来的数据就会丢失。现在我们在网络上通过MODEM进行数据传输,这个问题就尤为突出。流控制能解决这个问题,当接收端数据处理不过来时,就发出“不再接收”的信号,发送端就停止发送,直到收到“可以继续发送”的信号再发送数据。因此流控制可以控制数据传输的进程,防止数据的丢失。 PC机中常用的两种流控制是硬件流控制(包括RTS/CTS、DTR/CTS等)和软件流控制XON/XOFF(继续/停止),下面分别说明。

    硬件流控制

    硬件流控制常用的有RTS/CTS流控制和DTR/DSR(数据终端就绪/数据设置就绪)流控制。硬件流控制必须将相应的电缆线连上,用RTS/CTS(请求发送/清除发送)流控制时,应将通讯两端的RTS、CTS线对应相连,数据终端设备(如计算机)使用RTS来起始调制解调器或其它数据通讯设备的数据流,而数据通讯设备(如调制解调器)则用CTS来起动和暂停来自计算机的数据流。这种硬件握手方式的过程为:我们在编程时根据接收端缓冲区大小设置一个高位标志(可为缓冲区大小的75%)和一个低位标志(可为缓冲区大小的25%),当缓冲区内数据量达到高位时,我们在接收端将CTS线置低电平(送逻辑0),当发送端的程序检测到CTS为低后,就停止发送数据,直到接收端缓冲区的数据量低于低位而将CTS置高电平。RTS则用来标明接收设备有没有准备好接收数据。

    常用的流控制还有还有DTR/DSR(数据终端就绪/数据设置就绪)。我们在此不再详述。

    软件流控制

    由于电缆线的限制,我们在普通的控制通讯中一般不用硬件流控制,而用软件流控制。一般通过XON/XOFF来实现软件流控制。常用方法是:当接收端的输入缓冲区内数据量超过设定的高位时,就向数据发送端发出XOFF字符(十进制的19或Control-S,设备编程说明书应该有详细阐述),发送端收到XOFF字符后就立即停止发送数据;当接收端的输入缓冲区内数据量低于设定的低位时,就向数据发送端发出XON字符(十进制的17或Control-Q),发送端收到XON字符后就立即开始发送数据。一般可以从设备配套源程序中找到发送的是什么字符。 

     

    当软件里用了流控制时,应做详细的说明,如何接线,如何应用。应该注意,若传输的是二进制数据,标志字符也有可能在数据流中出现而引起误操作,这是软件流控制的缺陷,而硬件流控制不会有这个问题。

    ARM 的FIFO机制,数据缓冲区

    看来许多人还没有真正理解FIFO的作用和优点,仍然停留在每收发一个字符就要中断处理一次的老思路上。UART收发FIFO主要是为了解决收发中断过于频繁而导致的CPU效率不高的问题。

    FIFO的必要性。在进行UART通信时,中断方式比轮询方式要简便且效率高。但是,如果没有收发FIFO,则每传输一个数据(5~8位)都要中断处理一次,效率仍然不高。如果有了收发FIFO,则可以在连续收发若干个数据(可多至14个)后才产生一次中断,然后一起处理。这就大大提高了收发效率。

    接收超时问题。如果没有接收超时功能,则在对方已经发送完毕而接收FIFO未填满时并不会触发中断(FIFO满才会触发中断),结果造成最后接收的有效数据得不到处理的问题。有了接收超时功能后,如果接收FIFO未填满而对方发送已经停,则在不超过3个数据的接收时间内就会触发超时中断,因此数据会照常得到处理。

    发送时,只要发送FIFO不满,数据只管往里连续放,放完后就直接退出发送子程序。随后,FIFO真正发送完成后会自动产生中断,通知主程序说:我已经完成真正的发送。  接收时,如果对方是连续不间断发送,则填满FIFO后会以中断的方式通知主程序说:现在有一批数据来了,请处理。

    如果对方是间断性发送,也不要紧,当间隔时间过长时(2~3个字符传输时间),也会产生中断,这次是超时中断,通知主程序说:对方可能已经发送完毕,但FIFO未满,也请处理。

    展开全文
  • MCS-51单片机的串行口

    千次阅读 2010-01-09 18:21:00
    MCS-51串行口具有两条独立的数据线:发送端TXD、接收端RXD,允许数据同时往两个相反的方向传输。一般通信时发送数据由TXD端输出,接收数据由RXD端输入。一、串行口的控制寄存器MCS-51单片机串行口是由缓冲器SBUF、...

    MCS-51串行口具有两条独立的数据线:发送端TXD、接收端RXD,允许数据同时往两个相反的方向传输。一般通信时发送数据由TXD端输出,接收数据由RXD端输入。

    一、串行口的控制寄存器

    MCS-51单片机串行口是由缓冲器SBUF、移位寄存器、串行口控制寄存器SCON、电源控制寄存器PCON及波特率发生器T1组成。

    1.串行口数据缓冲器SBUF

    MCS-51单片机内的串行接口部分,具有两个物理上独立的缓冲器:发送缓冲器和接收缓冲器,以便能以全双工的方式进行通信。串行口的接收由移位寄存器和接收缓冲器构成双缓冲结构,能避免在接收数据过程中出现帧重叠。发送时因为CPU是主动的,不会发生帧重叠错误,所以发送结构是单缓冲的。

    在逻辑上,串行口的缓冲器只有一个,它既表示接收缓冲器,也表示发送缓冲器。两者共用一个寄存器名SBUF,共用一个地址99H

    即:在完成串行口初始化后,发送数据时,采用MOV  SBUF,A指令,将要发送的数据输入SBUF,则CPU自动启动和完成串行数据的输出;接收数据时,采用MOV A,SBUF指令,CPU就自动将接收到的数据从SBUF中读出。

    2.串行口控制寄存器SCON

    串行口控制寄存器SCON包含:串行口工作方式选择位、接收发送控制位、以及串行口状态标志位。其格式如下:

    D7

    D6

    D5

    D4

    D3

    D2

    D1

    D0

    SM0

    SM1

    SM2

    REN

    TB8

    RB8

    TI

    RI

    SM0 SM1SCON.7SCON.6):串行口的工作方式选择位,其编码见表6-1

    6-1   串行口的工作方式

    SM0 SM1 SM1

    工作方式

    说 明

    波特率

    0  0

    方式0

    同步移位寄存器

    fosc/12

    0  1

    方式1

    10位异步收发

    由定时器控制

    1  0

    方式2

    11位异步收发

    fosc/32fosc/64

    1  1

    方式3

    11位异步收发

    由定时器控制

    SM2SCON.5):多机通信控制位。在方式2或方式3中,若SM21,则只有当接收到的第9位数据(RB8)1时,才能将接收到的数据送入SBUF,并使接收中断标志RI置位向CPU申请中断,否则数据丢失;若SM20,则不论接收到的第9位数据为1还是为0,都将会把前8位数据装入SBUF中,并使接收中断标志RI置位向CPU申请中断。在方式1,如SM21,则只有收到有效的停止位时才会使RI置位。在方式0时,SM2必须为0

    RENSCON.4):串行口接收允许位。由软件置位以允许接收,由软件清0来禁止接收。

    TB8SCON.3):在方式2和方式3中为发送的第9位数据。在多机通信中,常以该位的状态来表示主机发送的是地址还是数据。通常协议规定:TB8为“0”表示主机发送的是数据,为“1”表示发送的是地址。

    RB8SCON.2):在方式2和方式3中为接收到的第9位数据。它和SM2TB8一起用于通信控制。

    TISCON.1):发送中断标志。由硬件在方式0串行发送第8位结束时置位,或在其他方式串行发送停止位的开始时置位,必须由软件清“0”。

    RISCON.0):接收中断标志。由硬件在方式0串行接收到第8位结束时置位,或在其他方式串行接收到停止位的中间时置位,必须由软件清“0”。

    3.电源控制寄存器PCON

    电源控制寄存器PCON的格式如下:

    D7

    D6

    D5

    D4

    D3

    D2

    D1

    D0

    SMOD

     

     

     

     

     

     

     

    D7SMOD是串行口波特率倍增位。SMOD1时,串行口工作方式1、方式2、方式3的波特率加倍。具体值见各种工作方式下的波特率计算公式。

    二、串行口的工作方式

    ()方式0

    方式0为同步移位寄存器输入输出方式。其工作方法是:串行数据通过RXD端输入/输出,TXD则用于输出移位时钟脉冲。方式0时,收发的数据为8位,低位在前,高位在后。波特率固定为fosc/12,其中fosc为单片机的晶振频率。

    6-6  方式0发送、接收电路

    a) 发送接口电路       b) 接收接口电路

    利用此工作方式,可以在串行口外接移位寄存器以扩展I/O接口,也可以外接串行同步输入输出的设备。图6-6所示为串行口外接一片移位寄存器74LS164的输出接口电路和74LS165的输入接口电路的情况。

    数据的发送是以写SBUF寄存器指令开始的,8位数据由低位至高位顺序由RXD端输出,同时由TXD端输出移位脉冲,且每个脉冲输出一位数据。8位数据输出结束时TI被置位。在图6-6a所示串行口输出电路中,74LS164为一串入并出的移位寄存器,据此通过串行口方式0发送数据可编程如下:

     

     

     

     

    WAIT

    MOV

    SETB

    MOV

    MOV

    JNB

    CLR

    CLR

    SCON,00H

    P1.0

    A,#DATA

    SBUF,A

    TI,WAIT

    TI

    P1.0

     

    ;选通74LS164

    ;置要发送的数据

    ;数据写入SBUF并启动发送

    ;等待一个字节数据发送完

    ;清除TI

    ;关闭74LS164

    6-6 b是串行口在方式0下利用并入串出芯片74LS165来完成数据的接收。接收是在REN=1RI=0同时满足时开始的,在移位时钟同步下,将数据字节的低位至高位一位一位地接收下来并装入SBUF中,结束时RI置位。

    ()方式1

    串行接口工作于方式1时,被定义为10位的异步通信接口,即传送一帧信息为10位。一位起始位“0”,8位数据位(先低位后高位),一位停止位“1”。其中起始位和停止位是在发送时自动插入的。

    串行接口以方式1发送时,数据由TXD端输出。CPU执行一条数据写入发送缓冲器SBUF的指令(即:MOV SBUFA指令),将数据字节写入SBUF后,便启动串行口发送,发送完一帧信息,发送中断标志TI置“1”。

    方式1的波特率是可变的,可由以下公式计算得到:

    方式1波特率=2SMOD·(定时器1的溢出率)/32

    ()方式2和方式3

    串行接口工作于方式2和方式3时,被定义为11位的异步通信接口,即传送一帧信息为11位。一位起始位“0”,8位数据位(从低位至高位)、一位附加的第9位数据(可程控为10),一位停止位“1”。其中起始位和停止位是在发送时自动插入的。

    方式2或方式3发送时,数据由TXD端输出,发送一帧信息为11位,附加的第9位数据就是SCON中的TB8CPU执行一条数据写入发送缓冲器SBUF的指令(即指令MOV SBUF,A),就启动串行口发送,发送完一帧信息,发送中断标志TI置位。

    方式2和方式3的操作过程是一样的,所不同的是它们的波特率。

    方式2波特率=2SMOD·fosc/64

    方式3波特率=2SMOD·(定时器1的溢出率)/32

    三、波特率的设置

    MCS-51单片机串行口通信的波特率取决于串行口的工作方式。当串行口被定义为方式0时,其波特率固定等于 。当串行口被定义为方式2时,其波特率= ,即当SMOD=0时,波特率= ;当SMOD=1时,波特率= SMODPCON寄存器的最高位,通过软件可设置SMOD=0l。因为PCON无位寻址功能,所以,要想改变SMOD的值,可通过执行以下指令来完成:

    ANL   PCON#7FH         ;使SMOD=0

    ORL   PCON#80H         ;使SMOD=1

    当串行口被定义为方式1或方式3时,其波特率=2SMOD×定时器T/C1的溢出率/32。定时器T/C1的溢出率,取决于计数速率和定时器的预置值。下面说明T/C1溢出率的计算和波特率的设置方法。

    1T/C1溢出率的计算

    在串行通信方式1和方式3下,使用定时器T/C1作为波特率发生器。T/C1可以工作于方式0、方式1和方式2,其中方式2为自动装入时间常数的8位定时器,使用时只需进行初始化,不需要安排中断服务程序重装时间常数,因而在用T/C1作波特率发生器时,常使其工作于方式2

    前面我们介绍过定时器定时时间的计算方法,同样,我们设X为时间常数即定时器的初值; 为晶振频率,当定时器T/C1工作于方式2时,则有:

    溢出周期=(28-X)×12/

    溢出率=1/溢出周期= /[12(28-X)]

    2.波特率的设置

    由上述可得,当串行口工作于方式1或方式3、定时器T/C1工作于方式2

    波特率=2SMOD×定时器T/C1溢出率/32

    =2SMOD× /[32×12(28-X)]

    =6MHzT/C1工作于方式2时,波特率的范围为61.0431250b/s

    由上式可以看出,当X=255时,波特率为最高。如 =12MHzSMOD=0,则波特率为31.25Kb/s,若SMOD=1,则波特率为62.5Kb/s。这是 =12MHz时波特率的上限。若需要更高的波特率,则需要提高主振频率

    在实际应用中,一般是先按照所要求的通信波特率设定SMOD,然后再算出T/C1的时间常数。即:

    X=28-2SMOD× /(384×波特率)

    例如,某8051单片机控制系统,主振频率为12MHz,要求串行口发送数据为8位、波特率为1200b/s,编写串行口的初始化程序。

    我们设SMOD=1,则T/C1的时间常数X的值为:

    X=28-2SMOD× /(384×波特率)

    =256-2×12×106/(384×1200)

    =256-52.08=203.92≈0CCH

    初始化程序为:

              MOV    SCON#50H        ;串行口工作于方式1

              ORL    PCON#80H        SMOD=1

              MOV    TMOD#20H        T1工作于方式2,定时方式

              MOV    TH1#0CCH        ;设置时间常数初值

              MOV    TL1#0CCH

              SETB   TR1               ;启动T/C1

    再如,要求串行通信波特率为2400b/s,假设 =6MHzSMOD=1,则T/C1的时间常数为:

    X=28-21×6×106/(384×2400)

    =242.98≈243=F3H

    定时器T/C1和串行口的初始化程序如下:

    MOV   TMOD#20H        ;设T/C1为方式2定时

    MOV   THl#0F3H        ;置时间常数

    MOV   TLl#0F3H

    SETB  TRl               ;启动T/C1

    ORL   PCON#80H        SMOD=1

    MOV   SCON#50H        ;设串行口方式1

    执行上面的程序后,即可使串行口工作于方式1,波特率为2400b/s

    需要指出的是,在波特率的设置中,SMOD位数值的选择直接影响着波特率的精确度。以上例所用数据来说明,波特率=2400b/s =6MHz,这时SMOD可以选为10。由于对SMOD位数值的不同选择,所产生的波特率误差是不同的。

    1)选择SMOD=1,由上面计算已得T/C1时间常数X=243,按此值可算得T/C1实际产生的波特率及误差为

    波特率=2SMOD× /[2×12(28-X)]

    21× /[32×12(256-243)]

    2403.85b/s

    波特率误差=(2403.85-2400)/24000.16

    2)选择SMOD0,此时

    X28-2×6×10/(384×2400)249.49≈249

    由此值可以算出T/C1实际产生的波特率及误差为:

    波特率=2×6×10/[32×12(256249)]2232.14b/s

    波特率误差=(24002232.14)/24006.99

    上面的分析计算说明了SMOD值虽然可以任意选择,但在某些情况下它会使波特率产生误差。因而在波特率设置时,对SMOD值的选取也需要予以考虑。

    6-2列出了常用波特率的设置方法。

    6-2  常用波特率设置方法

    波特率 /Hz

     /MHz

    SMOD

    定时器1

    C/

    方式

    重新装入值

    方式0最大:1M

    方式2最大:375k

    方式1362.5k

    19.2k

    9.6k

    4.8k

    2.4k

    1.2k

    110

    12

    12

    12

    11.0592

    11.0592

    11.0592

    11.0592

    11.0592

    12

    X

    1

    1

    1

    0

    0

    0

    0

    0

    X

    X

    0

    0

    0

    0

    0

    0

    0

    X

    X

    2

    2

    2

    2

    2

    2

    1

    X

    X

    FFH

    FDH

    FDH

    FAH

    F4H

    E8H

    0FEEH

     

    展开全文
  • Chapter8:串行口 8.1 串行通信的基本概念 在数据采集or工业控制的过程中,很多个小的单片机送往前方采集数据【工业现场等】,远离主机。现场数据采用串行通信方式发往主机进行处理,以降低通信成本,提高通信可靠性...
  • [专业课笔记] 第七章 8951串行口正文基本知识数据通信并行通信串行通信串行口及其应用8951之间的点对点异步通信8951和pc的机间通信无线单片机及其点到多点通信RFID技术和物联网的应用 正文 基本知识 数据通信 本机的...
  • 串行口 一 串口基础知识 串口概念 串行接口(Serial port)"同步/异步串行接收/发送器。"又称“串口”USART,也称串行通信接口(通常指COM接口),是采用串行通信方式的扩展接口。 2、USART的用处 基于ARM ...
  • 基于FPGA的RS232异步串行口IP核设计

    千次阅读 2020-10-25 15:07:20
    因此收、发双方必须保持字符同步,以使接收方能够从接收数据比特流中正确区分出与发送方相同的一个一个的字符。这是串行传输必须解决的问题。串行传输只需要一条传输信道,易于实现,是目前主要采用的一种传输方式...
  • SPI:高速同步串行口

    千次阅读 2015-04-01 08:54:06
    SPI:高速同步串行口。是一种标准的四线同步双向串行总线。  SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在...
  • SPI:高速同步串行口---讲的到位

    千次阅读 2019-02-20 10:01:58
    SPI:高速同步串行口 2010年12月16日 21:36:00 你来吻 阅读数:4583 SPI:高速同步串行口。是一种标准的四线同步双向串行总线。  SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备...
  • 因而这种传输方式的用途有限,常用于串行口的打印数据传输与简单系统间的数据采集。半双工方式:数据可实现双向传送,但不能同时进行,实际的应用采用某种协议实现收/发开关转换。全双工方式:允许双方同时进行数据...
  • 随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。通信有并行通信和串行通信两种方式。...一 串行...
  • 梳理顺序是按照书籍的实际顺序梳理,转载请注明出处。 作者:sumjess 一、并行与串行基本通信方式:       随着单片机系统的广泛应用和计算机网络技术的普及,单片机...
  • Matlab与单片机的串行通信及数据处理 http://hi.baidu.com/20066203/blog/item/891edf52f73278040df3e360.html   摘要:结合单片机和Matlab两者优点,基于事件驱动中断通信机制,提出一种Matlab...
  • 行口或RS-232串行口直接对接两台机器,以此来实现通信、数据和文件传输及软、硬件 资源共享。采用端口连接双机进行数据传输,不需要网卡,不需要调制解调器,也不用 软磁盘作媒介,是通信和数据传输的...
  • 74HC164、74HCT164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。 数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接...
  • 类型有三种:即同步并行接口(SPI) 改:SPI全称是"Serial Peripheral Interface",意为串行外围接口,不是什么 同步并行接口 ,是串行的.、异步串行接口(ASI)和同步串行接口(SSI)。  其中,ASI和SPI接口较常用。  ASI...
  • 下面教大学如何使用模拟串行通信,即可以使用任意引脚进行数据收发。 1.计算传输一位数据所需要的时间,这与通信的波特率有关,在这里以波特率为1200bps为例。 波特率为1200,意思就是每秒传输的位数是...
  • 参考书目:《嵌入式系统原理及应用 第3版》 马维华 北京邮电大学出版社 ...USART通用同步/异步串行收发传输器,既可以用于同步串行通讯,也能用于异步串行通讯。 UART即通用异步收发传输器,只能用于异步串行通信。
  • 串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,...而在接收端,却要把接收到的串行数据转换为并行数据串行通信___异步传送方式 起止式异步通信的特点:传输不连续,以字...
  • 利用串行接口传输各种数值数据

    千次阅读 2015-03-05 12:48:14
    利用串行接口传输各种数值数据 天津滨海职业学院机电系 刘景文 胥宝萍 300451 摘 要:介绍了一种无应答数值发送、接收的协议,如何利用MCS-51单片机进行各种数值发送、在VC下借助 MSComm通信控件进行数值接收 ,...
  • 前言:计算机与计算机之间或者...如果数据是逐位顺序传送,则称为串行通信。计算机与外设间的接口按照通信方式的不同,相应地分为并行接口和串行接口。并行通信和串行通信是指接口与外部设备一侧的通信方式,与C...
  • 串口接收并口发送FIFO

    2012-01-04 23:20:41
    一个串行接收,并行发送的缓存器,其...并根据读数请求,按接收数据顺序,将接收完整的32位数据发送出去,并标记该缓存器位置为空,又可以放置新的串行输入数据。 在接收方式上,设计了同步串行接收和异步串行接收
  • 能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。与之前一样,首先我们来...
  • 串口收发数据实验

    千次阅读 2018-11-14 15:44:34
    实验环境  1.硬件:通用节点、USB仿真器、USB电缆、PC机;  2.... (一)串口发送数据---打印字符串 ...接收节点发送的字符串数据并打印   二.实验内容  1.调试串口驱动; 2.使用IA...
  • C系列单片机有一个全双工的串行口.ppt80C51系列单片机有一个全双工的串行口,这个口既可以用于网络通信,也可以实现串行异步通信,还可以作为同步移位寄存器使用。 2、串行控制寄存器SCON 3、电源控制寄存器PCON ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,975
精华内容 2,790
关键字:

串行口接收数据顺序