用逻辑分析仪观察串口Uart数据波形
一、概述
只讨论嵌入式编程中较为常用的异步串行接口(Universal Asynchronous Receiver/Transmitter, UART),TTL电平。
串口的参数一般有:
1.波特率,数据传输速率,单位bps(bits per second),即每秒传输的位数,常见的波特率有9600bps、19200bps、115200bps等;如果波特率为115200bps,则传输一个bit的时间是1/115200s≈8.68us;
2.空闲位,当总线处于空闲状态时信号线的状态为‘1’即高电平,表示当前线路上没有数据传输;
3.起始位,总线空闲时为高电平,所以开始一次通信时先发送一个明显区别于空闲状态的信号即低电平’0’,来表示传输字符的开始;
4.数据位,起始位之后,跟着要传输的数据,数据可以是5、6、7、8、9等位,构成一个字符,一般是8位;一般先发送最低位,最后发送最高位(LSB),使用低电平表示‘0’高电平表示‘1’完成数据位的传输;
5.校验位,校验数据传送的正确性,分为以下几种方式:
①无校验(no parity),即不使用校验位;
②奇校验(odd parity),如果数据位中“1”的数目是偶数,则校验位为“1”,如果“1”的数目是奇数,校验位为“0”;
③偶校验(even parity),如果数据为中“1”的数目是偶数,则校验位为“0”,如果为奇数,校验位为“1”;
④ Mark校验,校验位始终为1;
⑤Space校验,校验位始终为0;
6.停止位,表示数据传输结束,高电平,可为1、1.5或2位,
7.传输方向,即数据是从高位(MSB)开始传输,还是从低位(LSB)开始传输;
下面通过逻辑分析仪抓取的串口通信的数据波形,直观地感受、理解各个参数的含义。
二、Uart通信数据波形
1.串口配置:9600bps,8数据位,无校验,1个停止位,从低位开始传输(LSB),数据为0xAA:

从上图可看出,BEGIN为起始位,低电平,然后是8位数据位,从低到高位依次是0、1、0、1、0、1、0、1,即二进制10101010,十六进制为0xAA,没有校验位,紧跟着一个END,为停止位,高电平,之后保持高电平(空闲);起始位、数据位、停止位共10位,时间间隔约为1.042ms,经测量,传输每一位的时间是一致、平均的,则传输每1位的时间为0.1042ms,波特率为9596.9bps≈9600bps,误差较小。
2.串口配置:19200bps,8数据位,奇校验,1个停止位,从低位开始传输(LSB),数据为0xAA、0xBA:

从上图可看出,加上校验位后,11位传输用时572us,则平均每位用时52us,即19230.8bps≈19200bps;数据0xAA中,共有4个“1”,是偶数,所以校验位为1,而0xBA中共有5个“1”,奇数,所以校验为是0,图中的“Right”表示校验正确。
将配置改为偶校验,其他不变,校验位如下图,对照偶校验的定义,可知校验正确:
将配置分别改为Mark校验、Space校验,其他不变,校验位分别如下面两图,可知校验正确:
Mark校验,校验位是1:
Space校验,校验位是0:

3.串口配置:19200bps,8数据位,无校验,2个停止位,从低位开始传输(LSB),数据为0xAA:

由前文可知,19200bps时每位的时间约52us,而上图中停止位END所占时间为M1与M2之间的间隔,104us,因此停止位为2位。
4.串口配置:19200bps,8数据位,无校验,1个停止位,从高位开始传输,即MSB方式(瑞萨的RL78系列MCU可以设置LSB或者MSB模式),数据为0xAA:

上图与前面几张图对比,LSB模式下,数据0xAA在BEGIN起始位之后,是按照从低到高位即0、1、0、1、0、1、0、1的顺序传输的,而上图是按照1、0、1、0、1、0、1、0的顺序传输的,逻辑分析仪也设置为按照MSB的模式接收,即可正确识别出数据0xAA。
5.串口配置:19200bps,7数据位,无校验,1个停止位,从低位开始传输(LSB),数据为0xAA:

上图中,传输的数据是0xAA,正常情况下,BEGIN起始信号后面应该是0、1、0、1、0、1、0、1,然后是停止位END,但实际上缺失了最后的1,即0xAA的最高位1,只有7位,数据变成了0x2A;
再试着发送数据0xFF,其他配置不变:

数据变为0x7F,仍然是最高位的1缺失;
接下来,发送数据0x7E:

虽然数据只有7位,但是正确的,因此在数据只有7位的情况下,传输小于0x7F的数据,即最高位本来就是0的情况,数据是可以正确传输的,例如传输ASCII码。
51单片机支持9位数据模式,可通过SCON寄存器的SM0、SM1、TB8、RB8位设置:

我们以51单片机STC8G1K08为例来观察9位数据的的波形;将串口配置数据为改为9位,其他不变,单片机串口1模式3,TB8位置0(即第9位数据为0),SBUF中的数据为0xAA:
从上图可看出,正确发出了9位数据;
下面将TB8位置1(即第9位数据为1),其他不变,数据波形第9位是1:

相关文章:
用逻辑分析仪观察串口Uart数据波形
一、概述 只讨论嵌入式编程中较为常用的异步串行接口(Universal Asynchronous Receiver/Transmitter, UART),TTL电平。 串口的参数一般有: 1.波特率,数据传输速率,单位bps(bits per…...
数据结构-栈应用括号匹配
1、顺序栈的定义 2、顺序栈的入栈,出栈,取出栈顶元素,匹配判断函数 3、顺序栈的运行测试 4、实现代码 #include<iostream> using namespace std; #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; #define M…...
leetcode做题笔记209. 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: 输入&#…...
【机器学习】几种常用的机器学习调参方法
在机器学习中,模型的性能往往受到模型的超参数、数据的质量、特征选择等因素影响。其中,模型的超参数调整是模型优化中最重要的环节之一。超参数(Hyperparameters)在机器学习算法中需要人为设定,它们不能直接从训练数据…...
使用免费 FlaskAPI 部署 YOLOv8
目标检测和实例分割是计算机视觉中关键的任务,使计算机能够在图像和视频中识别和定位物体。YOLOv8是一种先进的、实时的目标检测系统,因其速度和准确性而备受欢迎。 Flask是一个轻量级的Python Web框架,简化了Web应用程序的开发。通过结合Fla…...
不使用屏幕在树莓派4B安装Ubuntu22.04桌面版(64位)
因为时间有限只说一下基本路径: 1首先安装Ubuntu22.04server版本 2设置服务器版本的SSH和WiFi 3通过服务器版本安装Ubuntu-desktop升级到Ubuntu22.04桌面版 4在桌面版上安装远程控制软件:xrdp; 5使用Windows自带的远程桌面连接访问Ubuntu 6完成...
Pymysql模块使用操作
一、pymysql模块安装 二、测试数据库连接 测试数据库连接.py from pymysql import Connectioncon None try:# 创建数据库连接con Connection(host"localhost",port3306,user"root",password"XXXXX")# 测试链接print(con.get_host_info())print…...
8+双疾病+WGCNA+多机器学习筛选疾病的共同靶点并验证表达
今天给同学们分享一篇双疾病WGCNA多机器学习的生信文章“Shared diagnostic genes and potential mechanism between PCOS and recurrent implantation failure revealed by integrated transcriptomic analysis and machine learning”,这篇文章于2023年5月16日发表…...
springboot如何获取前端请求头的值并加入ThreadLocal
依赖: <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.7</version> </dependency>示例: public class ThreadLocalUtil {private static ThreadLoc…...
程序员想要网上接单却看花了眼?那这几个平台你可得收藏好了!
现在经济压力这么大,但是生活成本还在上升,相信大家都知道“四脚吞金兽”的威力了吧!话虽如此,但是生活总得继续,为了家庭的和谐幸福,为了孩子的未来,不少人选择多干几份工作,赚点外…...
前端食堂技术周刊第 102 期:Next.js 14、Yarn 4.0、State of HTML、SEO 从 0 到 1
美味值:🌟🌟🌟🌟🌟 口味:肥牛宽粉 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 大家好,我是童欧巴。欢迎来到前端食堂技术周刊,我们先来看下…...
GPT与人类共生:解析AI助手的兴起
随着GPT模型的崭新应用,如百度的1和CSDN的2,以及AI助手的普及,人们开始讨论AI对就业市场和互联网公司的潜在影响。本文将探讨GPT和AI助手的共生关系,以及我们如何使用它们,以及使用的平台和动机。 GPT和AI助手…...
HTML脚本、字符实体、URL
HTML脚本: JavaScript 使 HTML 页面具有更强的动态和交互性。 <script> 标签用于定义客户端脚本,比如 JavaScript。<script> 元素既可包含脚本语句,也可通过 src 属性指向外部脚本文件。 JavaScript 最常用于图片操作、表单验…...
UOS安装Jenkins
一,环境准备 1.安装jdk 直接使用命令行(sudo apt install -y openjdk-11-jdk)安装jdk11 2.安装maven 参考此篇文章即可 UOS安装并配置Maven工具_uos 安装maven_蓝天下的一员的博客-CSDN博客 不过要注意这篇文章有个小错误,我…...
纯CSS实现卡片上绘制透明圆孔
<template><div class"dot-card-wrapper"><div class"top-wrapper"><slot name"top"></slot></div><!-->核心是下面这部分</--><div class"dot-row"><div class"left-…...
用前端框架Bootstrap的AdminLTE模板和Django实现后台首页的页面
承接博文 用前端框架Bootstrap和Django实现用户注册页面 继续开发实现 后台首页的页面。 01-下载 AdminLTE-3.1.0-rc 并解压缩 以下需要的四个文件夹及里面的文件百度网盘下载链接: https://pan.baidu.com/s/1QYpjOfSBJPmjmVuFZdSgFQ?pwdo9ta 下载 AdminLTE-3.1…...
Linux驱动 编译乱序和执行乱序
编译乱序 现代的高性能编译器在目标码优化上都具备对指令进行乱序优化的能力。编译器可以对访存的指令进行乱序,减少逻辑上不必要的访存,以及尽量提高Cache命中率和CPU的Load/Store单元的工作效率。 因此在打开编译器优化以后,看到生成的汇编…...
京东大数据平台(京东数据分析):9月京东牛奶乳品排行榜
鲸参谋监测的京东平台9月份牛奶乳品市场销售数据已出炉! 9月份,牛奶乳品市场销售呈大幅上涨。鲸参谋数据显示,今年9月,京东平台牛奶乳品市场的销量为2000万,环比增长约65%,同比增长约3%;销售额为…...
Hadoop RPC简介
数新网络-让每个人享受数据的价值https://www.datacyber.com/ 前 言 RPC(Remote Procedure Call)远程过程调用协议,一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。RPC它假定某些协议的存在,例…...
你没有见过的 git log 风格
背景 git大家都不陌生,git log 也是大家经常用的指令,今天分享三种 git log的美化格式,大家看看哪种更易读。 git log -15 --graph --decorate --oneline 带有 pretty 格式的git log 风格 log --color --graph --prettyformat:‘%Cred%h%C…...
AI编程助手Cursor Pro功能扩展指南:开源解决方案实现开发效率提升
AI编程助手Cursor Pro功能扩展指南:开源解决方案实现开发效率提升 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reach…...
如何快速上手Jable视频下载工具:新手必备的完整指南
如何快速上手Jable视频下载工具:新手必备的完整指南 【免费下载链接】jable-download 方便下载jable的小工具 项目地址: https://gitcode.com/gh_mirrors/ja/jable-download 还在为无法保存Jable上的精彩视频而烦恼吗?今天我要为你介绍一款简单实…...
STM32控制步进电机复位的三种实用方法及适用场景分析
1. 步进电机复位的基本原理与挑战 步进电机作为工业控制和智能硬件中常见的执行元件,其复位功能直接关系到设备的重复定位精度。所谓复位,就是让电机轴回到预设的零位参考点。我在调试3D打印机时发现,哪怕只有0.1mm的复位误差,都…...
QMCDecode:3分钟快速解锁QQ音乐加密文件,实现跨平台音乐自由
QMCDecode:3分钟快速解锁QQ音乐加密文件,实现跨平台音乐自由 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录…...
Intv_AI_MK11 服务端错误处理:全面应对 403 Forbidden 等常见 HTTP 状态码
Intv_AI_MK11 服务端错误处理:全面应对 403 Forbidden 等常见 HTTP 状态码 1. 为什么需要关注API错误处理 在调用Intv_AI_MK11这类AI服务API时,开发者经常会遇到各种HTTP状态码返回。这些状态码就像是服务端给你的"小纸条",告诉你…...
Graphormer一键部署与运维监控实战
Graphormer一键部署与运维监控实战 1. 企业级AI模型运维挑战 在AI技术快速落地的今天,Graphormer作为图神经网络领域的先进模型,已经在推荐系统、分子属性预测等场景展现出强大能力。但很多企业在实际部署后常常面临运维难题:服务突然崩溃找…...
终极指南:如何将danger-js与Webpack集成实现自动化代码审查
终极指南:如何将danger-js与Webpack集成实现自动化代码审查 【免费下载链接】danger-js ⚠️ Stop saying "you forgot to …" in code review 项目地址: https://gitcode.com/gh_mirrors/da/danger-js Danger JS是一个强大的自动化代码审查工具&a…...
intv_ai_mk11步骤详解:从curl验证到浏览器交互,完整闭环操作演示
intv_ai_mk11步骤详解:从curl验证到浏览器交互,完整闭环操作演示 1. 模型概述与核心能力 intv_ai_mk11是基于Llama架构的中等规模文本生成模型,专为通用文本处理任务优化。这个开箱即用的解决方案特别适合以下场景: 智能问答系…...
为什么钉钉、飞书、企微都在做 CLI?这个开源项目给出了最极致的答案
❝AI Agent 很聪明,但面对真实的专业软件,它就是个"睁眼瞎"。CLI-Anything 说:我来治。❞先说一个扎心的事实2026年了,AI Agent 能写代码、能做分析、能聊天能画画——但你让它打开 Blender 建个模?让它用 G…...
Wan 3D Causal VAE:一篇讲清视觉 token、时间压缩、3D Causal 卷积
从 Emu3.5、Show-o2、Show-o、Chameleon,到 Wan 3D Causal VAE:一篇讲清视觉 token、时间压缩、3D Causal 卷积和数据量估算的入门分析 0. 先说这篇文章要解决什么问题 这篇文章想回答 6 个问题: Emu3.5、Show-o2、Show-o、Chameleon 这几类 UMM,到底是怎么表示图像和视频…...
