`

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

 

分享到:
评论

相关推荐

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

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

    基于stm32的uart串口modbus通讯协议源码+说明文档+界面截图

    基于stm32的uart串口modbus通讯协议源码+说明文档+界面截图 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载...

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

    # 基于stm32的uart串口modbus通讯协议 # modbus-RTU协议 **Modbus报文帧结构** 一个报文就是一帧数据,一个数据帧就一个报文: 指的是一串完整的指令数据,本质就是一串数据 Modbus协议在串行链路上的报文格式如下...

    I2C,SPI,UART和CAN等常见通信协议的区别

    SPI--Serial Peripheral Interface,(Serial Peripheral Interface:串行外设接口)串行外围设备接口,是Motorola公司推出的一种同步串行通讯方式,是一种三线同步总线,因其硬件功能很强,与SPI有关的软件就相当简单...

    51单片机程序下载、ISP及串口基础知识

    串行接口按电气标准及协议来分还包括UART、RS232、RS422、RS485等。 老式的台式计算机和部分笔记本上则有RS232串口,这里RS232指的是RS232电平的串口。后来由于这种串口使用很少、速度较慢、体积较大而逐渐在笔记本...

    UART-WIF与电脑通信

    WIF管理工具“UART-WIFI2.0.exe”点击“搜索模块”按钮,如下图会显示搜索结果,工作模式选择“基础网络—STA”网络名字为所连接无线路由器的名字“123”,启用“DHCP”,启用“自动工作模式”,协议类型“TCP”如图...

    Microbrain道闸产品上位机,以MahApps库为基础搭建界面,集成了串口(UART)、CAN、WIFI通信,十六进制协议

    Microbrain道闸产品上位机,以MahApps库为基础搭建界面,集成了串口(UART)、CAN、WIFI通信,十六进制协议解析

    10天学会AVR和C语言_异步串口UART

    第十讲:异步串口UART的简介和程序的编写 1、 UART简介 2、 AVR单片机内部与UART相关的寄存器的配置 3、 编写程序控制AVR单片机和电脑进行通信 4、 讲解串行通信时数字和字符之间的区别 第十一讲:PS2键盘、DS1302的...

    uart wifi 串口wifi 程序 单片机可以用的串口wifi模块

    SOC芯片,性价比极高,质量稳定,内置WiFi协议栈和串口传输协议, 接口信号5V、地、RX 、TX 四线连接; ◆ 模块简洁、体积小,22*60*7 mm; ◆ 用户接口开发简单快捷,串口驱动 ; ◆ MSC51/PIC/ARM7 等 8、32 位...

    cc2541 串口透传.rar

    该串口透传程序是基于SimpleBLECentral主机和SimpleBLEPeripheral从机(协议栈自带的主从机demo)的基础上开发。 当主机与从机连接之后即可完成双向串口透传 1、主机到从机 uart数据转入--》SimpleBLECentral...

    串口wifi模块使用手册和驱动协议

    串口Wifi模块是基于Uart接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户串口数据到无线网络之间的转换。通过Uart-Wifi模块,传统的串口设备也能轻松接入...

    嵌入式硬件通信接口协议-IIC(一):协议基础

    相比于UART串口协议和SPI串行外设接口协议,这个IIC又有其独特之处。  简介  IIC(Inter-Integrated Circuit),集成电路总线。  IIC 即Inter-IntegratedCircuit(集成电路总线),这种总线类型...

    Linux 蓝牙协议栈的USB+设备驱动

    持标准的套接口,并提供了串行仿真 TTY 接口,这使串行端 口应用程序和协议可以不加更改地运行在蓝牙设备上,例如 通过点对点协议 PPP 可实现基于 TCP/IP 协议簇的所有网络 应用。BNEP 层实现了蓝牙的以太网仿真,...

    串口wifi-03模块例程代码

    03串口Wifi模块是基于Uart接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户串口数据到无线网络之间的转换。通过Uart-Wifi模块,传统的串口设备也能轻松接...

    串口WIFI-串口转WIFI模块

    UART、GPIO、U.FL(WLAN)接口 1.功能概述 硬件部分 项目 指标 模块 串口电平 TTL/UART 3.3v 连接器 插针(8PIN,兼容以前的4PIN连接),具有防插反设计 5 - VCC(IN),8 - GND(OUT) 7 - TX(IN)...

    串口wifi模块 第三代串口wifi模块使用技巧

    03串口Wifi模块是基于Uart接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户串口数据到无线网络之间的转换。通过Uart-Wifi模块,传统的串口设备也能轻松接...

    串口转WIFI模块 uart转wifi模块 (HSWIFIM03)资料

    基础网(Infra)和自组网(Adhoc) 支持多种安全认证机制: WEP64/WEP128/ TKIP/CCMP(AES) WEP/WPA-PSK/WPA2-PSK 支持快速联网 支持无线漫游 其它 支持多种网络协议: TCP/UDP/ICMP/DHCP/DNS/HTTP 支持自动和命令两...

    串口wifi 即插即用,不需要编程,能直接跟iphone通信

    接口 双排(2 x 4)插针式接口 支持波特率范围:1200~115200bps 支持硬件 RTS/CTS 流控 单 3.3V 供电 无线 支持 IEEE802.11b/g 无线标准 支持频率范围:2.412~2.484 GHz 支持两种无线网络类型: 基础网(Infra)和...

    GP232RL国产USB串口如何兼容FT232RL开发资料

    32r是最新加入 ftdi 系列 usb 接口集成电路设备的设备。 232r是一个 usb 到串行 uart 接口,带有可选的时钟...• uart 接口支持7或8个数据位、1或2个停止位和奇数/偶数/标记/空格/无奇偶校验。* 充分辅助的硬件或 x-o

    无线网卡串口接口 单片机wifi模块

    ◆ SOC 芯片,性价比极高,质量稳定,内置WiFi 协议栈和串口传输协议,接口信号5V、地、RX 、TX 四线连 接;(注意:模块通讯电平有RS232 和 TTL 两种接口,具体参数联系供应商) ◆ 模块简洁、体积小,22*60*7 mm;...

Global site tag (gtag.js) - Google Analytics