UART串口协议_UART通信协议

UART串口协议_UART通信协议UART串口协议

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器。将数据由串行通信与并行通信间做传输转换,作为并行输入称为串行输出的芯片。

UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。

1、UART通信协议

      UART作为异步串口通信协议的一种,工作原理是将传输数据的每一个字符一位一位地传输。其中每一位(bit)的意义如下:

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

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

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

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

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

如下图所示UART串口协议_UART通信协议

 

2、UART工作原理

      发送数据过程:空闲状态,线路处于高电平;当收到发送指令后,拉低线路的一个数据位的时间T,接着数据按低位到高位依次发送,数据发送完毕后,接着发送奇偶校验位和停止位,一帧数据发送完成。

      数据接收过程:空闲状态,线路处于高电平;当检测到线路的下降沿(高电平变为低电平)时说明线路有数据传输,按照约定的波特率从低位到高位接收数据,数据接收完毕后,接着接收并比较奇偶校验位是否正确,如果正确则通知后续设备接收数据或存入缓冲。

      由于UART是异步传输,没有传输同步时钟,为了保证数据的正确性,UART采用16倍数据波特率的时钟进行采样。每个数据有16个时钟采样,取中间的采样值,以保证采样不会滑码或误吗。一般UART一帧的数据位数为8,这样即使每个数据有一个时钟的误差,接收端也能正确地采样到数据。

      UART的接收数据时序为:当检测到数据的下降沿时,表明线路上有数据进行传输,这是计数器CNT开始计数,当计数器为24=16+8时,采样的值为第0位数据;当计数器的值为40时,采样的值为第一位数据,依次类推,进行后面6个数据的采样。如果需要进行奇偶校验,则当计数器的值为152时,采样的值即为奇偶位;当计数器的值为168时,采样的值为“1”表示停止位,数据接收完成。

      一个标准的10位异步串行通信协议(1个起始位、1个停止位和8个数据位)收发时序,

如下图所示:

UART串口协议_UART通信协议

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222970.html原文链接:https://javaforall.net

(0)
上一篇 2025年7月1日 下午5:22
下一篇 2025年7月1日 下午6:01


相关推荐

  • mysql 拼接字符_mysql将字符串和数字拼接

    mysql 拼接字符_mysql将字符串和数字拼接数据准备CREATETABLE`user`(`id`int(11)NOTNULLAUTO_INCREMENT,`account`varchar(100)DEFAULTNULL,`password`varchar(100)DEFAULTNULL,`type`tinyint(4)DEFAULTNULL,PRIMARYKEY(`id`),UNIQUEKEY`acc…

    2026年4月19日
    5
  • 通过bindservice方法开启的服务,通过什么方法解绑_controller调用多个service

    通过bindservice方法开启的服务,通过什么方法解绑_controller调用多个service绑定本地服务AndroidManifest.xml中声明服务:<serviceandroid:name=".TestLocalService"><intent-filter><actionandroid:name="maureen.intent.action.BIND_LOCAL…

    2026年1月16日
    4
  • JavaScript 之自定义播放器

    JavaScript 之自定义播放器自定义播放器自定义播放器自定义播放器自定义播放器的练习就是对事件的练习 html head metacharset utf 8 title 自定义播放器 title style progress height 30px border 2pxsoliddark progress gt bar height 100 style metacharset utf 8 head html

    2026年3月17日
    1
  • ES 5.x Bulk update重复的文档id性能低下

    ES 5.x Bulk update重复的文档id性能低下现在很多公司 包括我们自己 将 ES 用作数据库数据的索引 将多个数据库的数据同步到 ES 是非常常见的应用场景 所以感觉这个问题可能会困扰不止一个用户 而官方的文档也没有对 update 的底层机制及局限做特别说明 特将该问题的讨论和结论整理成文 供社区用户参考 问题描述在 ES5 x 里通过 bulkupdate 将数据从数据库同步到 ES 如果短时间更新的一批数据里存在相同的文档 ID 例如一个 bulk

    2026年3月16日
    2
  • C#桌面文案小工具 ,详细带解说图(带源码)

    C#桌面文案小工具 ,详细带解说图(带源码)新手!新手!新手!有什么不对的地方可以交流交流最近无聊,写了一个小工具,每隔一段时间随机刷新一下文案,并且还可以连接数据库思路:1窗体的隐藏:在属性上面把BackCoor和TransprencyKey设置成一样的就可以隐藏窗口了2日期时间的刷新:在窗体上创建一个label标签,这个没什么好说,直接获取时间然后创建一个计时器一直刷新他,频率设置成1—900都可以,代码记得写在计时器label2.Text=DateTime.Now.ToString();//20

    2022年5月18日
    52
  • CentOS Stream 10安装教程(2025版图文教程)

    CentOS Stream 10安装教程(2025版图文教程)

    2026年3月15日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号