串口UART串行总线协议
发布日期:2021-06-30 18:54:28
浏览次数:2
分类:技术文章
本文共 1260 字,大约阅读时间需要 4 分钟。
串口UART
串行端口是异步的(不传输时钟相关数据),两个设备在使用串口通信时,必须先约定一个数据传输速率,并且这两个设备各自的时钟频率必须与这个速率保持相近,某一方的时钟频率相差很大都会导致数据传输混乱。
###1 硬件连接
UART可以理解为可以用一线总线就可以完成数据的传输,连接图如下- VCC 用来给设备提供电源的,如果设备有电源,可以省略
- TX 顾名思义 就是CPU发送数据给设备-对应接设备的RX
- RX 顾名思义 就是CPU接收设备的数据-对应接设备的TX
- GND 地线的作用,做嵌入式的应该必须要了解,没有GND怎么有参考信号
UART协议定义,如下图
其中各位的意义如下:
- 起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。
- 资料位:紧接着起始位之后。资料位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。
- 奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。
- 停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
- 空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。
- 波特率:是衡量资料传送速率的指标。表示每秒钟传送的符号数(symbol)。一个符号代表的信息量(比特数)与符号的阶数有关。例如资料传送速率为120字符/秒,传输使用256阶符号,每个符号代表8bit,则波特率就是120baud,比特率是120*8=960bit/s。这两者的概念很容易搞错。
- 波特率计算示例
- 如图:
- 第一个字节的10位(1位起始位,8位数据位和1位停止位)共占约1.05ms,这样可计算出其波特率约为:10bit / 1.05ms X 1000 ≈ 9600 bit/s
一般UART设置窗口如下图
##3 示波器逻辑分析仪测量UART波形
如果你是一个做嵌入式软件的,但是你不会量波形,会很丢脸,至少我可以知道示波器有一个AutoSet的按钮,当然,你也可以用逻辑分析仪,这个对软件工程师来说更加方便。 下面列举协议分析的图片 连续的数据波形:0xFF,0x00,…,0x80的波形。可以看出,如果要发送0b0000 0001, 按时间顺序则是,低(起始位),高(1),低(0),低(0),低(0),低(0),低(0),低(0),低(0)。但是后面的7个连续的低电平连接在一起,就形成了一个较长低电平。更具体的可以查看这个网站
喜欢可以关注微信公众号:嵌入式Linux
转载地址:https://linus.blog.csdn.net/article/details/82699881 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月28日 20时55分55秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Oracle 自定义函数实现split功能,支持超长字符串和clob类型的分隔
2019-04-30
Oracle 的循环中的异常捕捉和处理
2019-04-30
Oracle通过pivot和unpivot配合实现行列转换
2019-04-30
给Oracle数据库换一个1522端口的监听
2019-04-30
Excel表格数据生成ECharts图表
2019-04-30
阿里云短信服务python版,pyinstaller打包运行时缺少文件
2019-04-30
Oracle的pfile和spfile的一点理解和笔记
2019-04-30
WebService的简单案例记录(Java)
2019-04-30
Html利用PHP与MySQL交互
2019-04-30
dos简单命令
2019-04-30
mysql的安装与卸载与Navicat远程连接
2019-04-30
java实现稀疏数组及将稀疏数组存入硬盘中
2019-04-30
2021-05-18
2019-04-30
Flutter 使用插件打开相册、相机
2019-04-30
libuv实现tcp代理服务器
2019-04-30
libuv使用不当导致的内存泄漏
2019-04-30
libuv实现ping包发送和接收
2019-04-30
基础架构系列篇-CENTOS7安装NGINX
2019-04-30
基础架构系列篇-系统centos7安装docker+COMPOSE
2019-04-30