`

UART串口协议基础1

 
阅读更多

 

Louis

kaly.liu@163.com
串口协议基础

1 串口概述

串口由收发器组成。发送器是通过TxD引脚发送串行数据,接收器是通过RxD引脚接收串行数据。发送器和接收器都利用了一个移位寄存器,这个移位寄存器可以将数据进行“并转串”和“串转并”。虽然一个UART接口通常都包含了发送器和接收器,而实际上一个全双工串口UART控制器需要独立的发送和接收通道。这是因为每个控制通道只控制了一个pin(一个通道要么配置成发送器,要么配置成接收器,不能同时配置成接收器和发送器)。没有严格规定哪个通道可以是发送器、哪个通道可以使接收器。

UART协议(串口协议)允许选择一个校验位来检测简单的通信错误(transmission errors)。校验位可以通过两种不同的方式进行产生和检测(generated and checked):奇校验和偶校验(odd and even parity)。UART协议功能支持所有的校验方式。

串口协议对每个字节数据的bit数并不是固定不变的。尽管8-bit的字节是经常用到的,但是一些应用也用到7-bit、9-bit、或者更多bit的字节数据。串口功能可以使用每个字节长达1~23bit长度的字节数据。另外,串口协议还需要1个开始位(1 start bit)(发送一个从“高到低”动作,低电平需要保持1 bit的时间)和1个停止位(1 stop bit)(发送一个从“底到高”动作,高电平需要保持1 bit的时间)来封装数据。

串口功能是双缓冲的。不论是发送器还是接收器,它们都包含有一个移位寄存器和一个数据寄存器。Host CPU可以在数据正在发送时,将新数据写入到发送器的数据寄存器;也可以在数据被接收时,从接收器的数据寄存器读取数据。

串口发送器通过对通道的“中断标志位”和数据发送器“需求标志位”置位来指示数据已经从“发送数据寄存器”传送到“发送移位寄存器”了。发送器的CIS标志位和DTRS被置位时,标志着发送数据寄存器已经准备就绪可以接收新数据了。假如中断标志位将被用于轮询环境(polling environment),CIS标志位就必须在新数据被写入发送器前被清零。同样的,如果一个DMA通道被用于UART通道服务,那么DTRS标志位就应被DMA通道描述符清零(should be cleared by theDMA channel descriptor)。当数据别写入到数据发送寄存器时,这24-bit的数据发送寄存器MSB必须写为0。这个是iTPU串口的一个握手信号,这个握手信号表明了新的发送数据进行串行移位输出已经写好。

同样的,串口接收器通过对CIS和DTRS标志位进行置位,来表明新数据已经到了。当数据从接收移位寄存器传送到接收数据寄存器后,CIS和DTRS标志位就被置位了。假如中断标志位将被用于轮询环境(polling environment),接收器的CIS标志位就必须在新数据被读取后被清零。如果一个DMA通道被用于UART通道服务,那么DTRS标志位就应被DMA通道描述符清零(should be cleared by theDMA channel descriptor)。为了避免数据丢失或者重复读取同样的数据,所以必须在接收后续的数据前完成 检测新接收到的数据、读取数据、和清除接收CIS标志位和DRTS标志位。同样的,在随后数据接收前,与每个已接收到的数据位相关的“错误条件”(error condition必须被检测或者保存好,否则errorcondition将会丢失。

串口功能可以进行连续的传输(back-to-back transfer)。如果数据及时,发送器不会产生空闲信号(idle line signal),而是在一个stop位后,紧跟着下一帧数据的star位。空闲信号只有在传送数据已经被串行移位输出,发送数据寄存器为空时才会产生。发送器的空闲信号时间都是1 bit时间的整数倍。接收器可以处理任何长度的空闲信号。

每个数据都是由1个start位开始的,开始位始终是逻辑0。跟随在开始位后面的是特定长度的数据,数据是LSB模式发送的;如果校验位被使能,那么1个校验位也将产生,并被发送。数据的最后一位由1个stop位标志,结束位始终是逻辑1。一个空闲line就是由连续多个的stop位组成的,这也就意味着空闲信号其实就是信号线一直保持在逻辑1。

例子:一个ASCII字符“A”(8-bit,hex码为0x41)一直都是以如下的方式进行传送的。注意:数据是LSB first发送方式

 

如图2更多详细内容:(注意:时序图显示0x41数据串行输出时序,LSB first。)

文中用到的“bittime”位时间,指的是传送或接受1bit数据所需要的时间。位时间是由波特率决定的,如下公式:

Bittime = 1/Baud Rate

接收器通过感知start位的下降沿,来检测数据。因为UART功能总是把服务请求初始化后的第一个下降沿作为有效的起始条件,此时若line是空闲的,就必须使能接收器。接收位只采样一次,大约半个bit time。在每次start bit时,接收器都将出现同步。

 

2 基本时序

如图2展示了TX和RX数据,以及串行数据的时序。任何写入到tx数据寄存器的数据,必须将msb位置为0(其实就是开始位,startbit)。这表明UART的新数据已经准备好,可以进行移位输出了。所有接收的数据通过API接收函数fs_etpu_uart_read _receive _data()进行右对齐。传送的数据总是由1开始位(1 bittime low)和1停止位(1 bit time high)封装。数据总是LSB FIRST移位输出。当所有数据被传送出去后,根据校验位是否被使能,校验位也将被选择性的输出。数据宽度被限制在23bits以内。这就意味着最大的数据大小、加上校验位,以及开始位、结束位,一帧数据最长将达到26bits。接收到的数据MSB总是0

 

分享到:
评论

相关推荐

    UART串口通信实验报告.docx编程资料

    - 设计并实现一个UART串口通信协议。 - 实现串行到并行(“串并”)的数据转换电路。 - 掌握通用异步收发器的工作原理和使用方法。 ### 三、实验原理 #### UART通信的基本要素 - **起始位**:标志数据帧的开始,...

    UART.zip_uart_串口 协议_串口 协议_串口协议解析_通信协议解析

    总的来说,UART协议是串行通信的基础,理解和掌握其工作原理对于开发涉及串口通信的硬件和软件项目至关重要。通过编写或使用串口接收程序,我们可以实现设备间的数据交互,完成诸如数据采集、控制指令发送等功能。

    UART串口协议详解.docx

    UART(通用异步接收器/发射器)是...总的来说,UART串口协议是一种基础但实用的通信方式,适用于短距离、低速率的设备间通信。理解和掌握UART的工作原理对于任何涉及嵌入式系统或微控制器设计的工程师来说都至关重要。

    嵌入式系统概论单片机基础单片机之UART串行接口PPT学习教案.pptx

    掌握UART串行接口的工作原理、编程方法和应用是嵌入式系统开发的基础技能,对于理解嵌入式系统中的串行通信和单片机操作至关重要。通过深入学习和实践,开发者可以解决各种通信问题,实现高效的嵌入式系统设计。

    基于stm32的uart串口modbus通讯协议源码+说明文档.zip

    基于stm32的uart串口modbus通讯协议源码+说明文档.zip modbus-RTU协议 **Modbus报文帧结构** 一个报文就是一帧数据,一个数据帧就一个报文: 指的是一串完整的指令数据,本质就是一串数据 Modbus协议在串行链路上...

    UART串口协议详解.pdf

    总的来说,UART串口协议是一种基础但实用的通信方式,尤其适用于那些对实时性要求不高,但需要简单、灵活连接的场景。理解和掌握UART的工作原理对于任何从事计算机科学(CS)领域的开发者来说都是非常重要的。

    UART_串口通信_UARTprotocol_uart协议_

    一、UART协议基础 1. 数据帧结构:UART的数据传输以帧为单位,一个完整的数据帧通常包含起始位、数据位、奇偶校验位(可选)和停止位。起始位是低电平,数据位从低位到高位发送,停止位通常是高电平,用于标记数据...

    ESP32的UART串口通信(基于micropython)所有代码.zip

    ESP32是一款强大的微控制器...通过学习和实践以上知识点,你将能够熟练地在ESP32上使用MicroPython进行UART串口通信,从而实现与各种外部设备的交互。记得在实际项目中根据具体需求进行调整,以满足不同场景下的应用。

    UART.zip_UART protocol_uart协议_串口通信协议_异步串口vhdl

    通过这样的实践,你可以深入理解UART的工作原理,掌握如何在VHDL中编写高效的串口通信代码,这对于嵌入式系统开发者来说是一项基础且重要的技能。 在压缩包中的"UART"文件可能包含详细的UART协议介绍、VHDL代码示例...

    UART.zip_uart_uart 协议_uart协议verilog

    UART协议的基础在于数据帧结构,它通常包含起始位(通常为低电平)、数据位(通常5到9位)、奇偶校验位(可选)、停止位(通常1或2位)。数据位是实际传输的信息,奇偶校验位用于检测数据传输中的错误,而起始和停止...

    UART串行接口PPT学习教案.pptx

    UART串行接口PPT学习教案 UART串行接口是计算机系统中的一种常用的通信方式,广泛应用于计算机网络、工业控制、自动化设备等领域。...了解串行通信的基础知识和原理是学习和应用UART串行接口的基础。

    使用Verilog+quartus2+ModelSim仿真UART串口通信(32位)

    总的来说,通过使用Verilog、Quartus II和ModelSim,我们可以设计和验证一个32位UART串口通信系统。这个系统对于多字节通信提供了可靠的解决方案,确保了数据在FPGA设备之间的高效、准确传输。在实际应用中,这样的...

    usart.rar_STM32 串口通信_stm32 串口协议_uart_自定义协议

    STM32串口通信是嵌入式开发中的基础部分,主要依赖于通用异步收发传输器(UART),也就是我们常说的串行通信接口。在本项目"usart.rar"中,开发者创建了一个针对STM32微控制器的自定义串口通信协议,这涉及到硬件...

    MCU初学者Uart串口操作入门程序参考-重发/超时/ACK等

    在MCU(Microcontroller Unit)...总的来说,MCU的串口通信涉及硬件配置、数据传输、错误检测和纠正等多个环节,初学者通过学习和实践Uart串口操作,可以逐步掌握MCU通信的基础,并为更复杂的通信协议打下坚实的基础。

    test_uart.rar_fpga_fpga 串口_uart fpga_uart串口_串口通信

    在这个"test_uart.rar_fpga_fpga 串口_uart fpga_uart串口_串口通信"项目中,我们聚焦于如何在FPGA上实现UART协议,以便进行64位数据的传输。以下将详细介绍UART通信协议以及如何在FPGA中实现这一功能。 UART协议是...

    基于 单片机 UART串口(合集)

    这个合集包含了关于UART串口通信的多个源代码实例,非常适合学习和应用。 **UART的基本原理** UART是一种异步串行通信协议,数据以起始位、数据位、奇偶校验位和停止位的形式传输。起始位通常为低电平,表示数据...

    UART文档基础资料

    3. MAX3110E 的 UART 部分:MAX3110E 的 UART 部分包括兼容于 SPI 的串行接口、可编程波特率发生器、发送缓冲器及发送移位寄存器、接收缓冲器及接收移位寄存器、8 字节接收 FIFO 以及有四种可屏蔽中断源的中断产生器...

    AMRQt5.7-uart串口

    1. **UART基础**:UART是一种异步通信协议,它不需要时钟线,而是依赖于起始位、停止位和数据位来同步发送和接收端的数据流。 2. **波特率**:UART的速度是通过波特率设定的,它定义了每秒传输的位数。波特率必须在...

    uart.rar_51 串口协议_51串口控制

    标题中的“uart.rar_51 串口协议_51串口控制”表明这是一个关于51单片机使用串行通信(UART)进行控制的资料包。51单片机是微控制器的一种,广泛用于教育、工业控制和嵌入式系统中。串口协议,即通用异步收发传输器...

    UART串口数据收发应用程序

    UART(通用异步接收发送器)是一种常见的串行通信接口,广泛应用于嵌入式系统、单片机以及PC等设备间的数据传输。在Linux环境中,UART串口的收发可以通过用户态程序实现,无需深入内核空间。下面将详细介绍如何在...

Global site tag (gtag.js) - Google Analytics