示波器解析串口数据

2023-05-16

文章目录

  • 前言
  • 一、示波器准备
  • 二、硬件介绍
  • 三、软件
  • 四、串口TTL数据协议
    • 1.波特率
    • 2.数据起始和停止信号
    • 3.数据有效位
    • 4.数据校验位
  • 五、示波器探头连接
  • 五、串口数据波形捕获。
    • 方式1:示波器自带的decode进行解码
    • 方式2:根据示波器波形比对测量出数据的有效位
  • 总结

前言

学习MCU串口发送数据,配合示波器观察TTL数据波形可以加深对协议的理解

一、示波器准备

一般的示波器即可,我采用的示波器是鼎阳的200MHZ带宽,1G/S的采样率。
请添加图片描述

二、硬件介绍

使用乐鑫的ESP32。
ESP32引脚图

三、软件

使用VScode PIO ESP32 Arduino框架

代码如下(示例):

#include <Arduino.h>
HardwareSerial mySerial1(1);   //虚拟串口
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  mySerial1.begin(9600,SERIAL_8N1,32,33);  //初始化虚拟串口 32-RX 33--TX
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.printf("hello2");
  mySerial1.printf("B");   //虚拟串口打印字符'B'
  delay(1000);
}

四、串口TTL数据协议

1.波特率

每秒钟传输的码元,常用的有9600和115200。

2.数据起始和停止信号

数据包的起始信号由一个逻辑0的数据位表示,而数据包的停止信号可由0.5、1、1.5或2个逻辑1的数据位表示。

3.数据有效位

在数据包的起始位之后紧接着就是要传输的主体数据内容,也称为有效数据为。有效的长度5-8位长

4.数据校验位

在有效数据后,有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致数据出现偏差,可以在传输过程中加上校验位来解决这个问题。
奇校验:数据加上校验位的1的数要为奇数。
偶校验:数据加上校验位的1的数要为偶数。
0校验:校验位总为0。
1校验:校验位总为1。
无校验:数据包不含校验位。

五、示波器探头连接

示波器通道1探头老虎钳咬住 ESP32 GND,ESP32 TX GPIO33是虚拟串口发送引脚,示波器探头夹住GPIO33。
黄色线是GND
钳子夹住GPIO33
请添加图片描述

五、串口数据波形捕获。

mySerial1.printf(“B”); //虚拟串口打印字符’B’,GPIO33串口发送引脚间隔1000ms发送‘B’
字符‘B’的ASCII表对应的hex是0x42。bit也就是100 0010。

方式1:示波器自带的decode进行解码

不同厂商的示波器可能操作不一,我以鼎阳的操作为列。
请添加图片描述
请添加图片描述
操作步骤
1.Decode 翻译按钮。
2.配置解码通道选择。
3.总线类型选择 UART。
4.信号选择通道1RX触发阈值3V。
5.编码格式可以选择:二进制、十进制、十六进制、ASCII。

方式2:根据示波器波形比对测量出数据的有效位

请添加图片描述

总结

通过示波器捕获UART波形,可以帮助加深学习和理解串口的协议,有用的是在工程调试中可以直接判断MCU串口发送数据是否有效,是一个很好的验证方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

示波器解析串口数据 的相关文章

  • 基于容器训练OpenPCdet

    基于容器训练OpenPCdet 1 先拉取一个运行的镜像 docker pull djiajun1206 pcdet pytorch1 6 2 基于镜像创建一个容器 nvidia docker run it name pcdet privi
  • 【CUDA入门笔记】概述

    1 xff0c CUDA架构 xff08 1 xff09 一个GPU包含多个多核处理器 xff1b xff08 2 xff09 一个多核处理器包含多个线程处理器 xff08 3 xff09 线程处理器是最基本的计算单元 xff0c 有自己的
  • 【CUDA入门笔记】CUDA内核与线程配置

    1 CUDA核函数 在GPU上调用的函数成为CUDA核函数 Kernel function xff0c 核函数会被GPU上的多个线程执行 每个线程都会执行核函数里的代码 xff0c 当然由于线程编号的不同 xff0c 执行的代码路径可能会有
  • 【CUDA入门笔记】GPU存储结构模型(1)

    GPU存储结构模型 1 CPU可以读写GPU设备中的Global Memory Constant Memory以及Texture Memory内存储的内容 xff1b 主机代码可以把数据传输到设备上 xff0c 也可以从设备中读取数据 xf
  • 【CUDA入门笔记】GPU存储结构模型(2)

    GPU存储结构模型 1 CPU可以读写GPU设备中的Global Memory Constant Memory以及Texture Memory内存储的内容 xff1b 主机代码可以把数据传输到设备上 xff0c 也可以从设备中读取数据 xf
  • 基于多二维码识别的无人机运动真值获取

    基于多二维码识别的三维运动真值获取 1 背景介绍2 原理2 1 二维码基础2 2图像预处理2 3 定位标轮廓提取2 4 多二维码鲁棒识别 3 运行结果3 1对单张图片进行多二维码识别3 2 获取一系列静止图片的轨迹3 3 相机做圆周运动的轨
  • c++实现简单http服务器

    http基于tcp协议的应用层协议 xff0c 说白了就是写死的自定义协议 xff0c 代码实现了简单的get请求 xff0c 打开服务后 xff0c 可以通过网站访问本地资源 xff0c 适合新手学习的简单代码 xff0c 有助于理解ge
  • 基于NRF24L01的CAN数据透传

    闲谈 xff1a 闲来无聊 xff0c 恰好公司又经常用CAN数据的传输 xff0c 自己觉得要是用无线传送多好 xff0c 然后 xff0c 就是一个奇想 xff0c 就想做一个无线数据的透传 xff0c 恰好身边又有NRF24L01 那
  • 倾斜补偿的电子罗盘(1):地磁场,磁传感器,倾斜补偿

    倾斜补偿的电子罗盘 1 xff1a 地磁场 xff0c 磁传感器 xff0c 倾斜补偿 地磁场和磁传感器 地磁场可以用于获取方位信息 以北半球为例 xff0c 地磁场方向不是与地面水平 xff0c 而是与水平方向有一定的倾角 xff08 指
  • vscode常用插件

    vscode常用插件 1 Markdown All In One 在所有拓展插件中 xff0c 这个插件基础功能最全 xff0c 快捷键多 xff0c 方便使用 2 Markdown Toc 这个插件是用来生成目录 xff0c 这个插件我用
  • typescript中使用字典Dictionary

    key为string value为number var map key string number 61 34 t 34 3 34 o 34 5 34 g 34 10 for let k in map egret log map k
  • Qt Design Studio社区版安装与使用

    Qt Design Studio社区版免费下载 由于登录官网不能下载 xff0c 找到镜像网站进行下载 xff1a 基于msvc 2019 64位 xff1a http iso mirrors ustc edu cn qtproject o
  • vscode用conda配置Python虚拟环境

    1 到官网下载Anaconda2 下载vscode中Python插件3 以管理员身份运行vscode4 利用conda创建python虚拟环境5 在vscode中配置Setting json添加Python路径6 最后检验运行Python项
  • 阿里云搭建ftp服务器+FileZilla客户端查看文件

    文章目录 1 阿里云搭建ftp服务器1 1 安装ftp服务器1 2 设置阿里云ECS的安全组 2 FileZilla客户端查看文件 1 阿里云搭建ftp服务器 1 1 安装ftp服务器 1 安装vsftp xff0c sudo span c
  • QtCreator+windows崩溃定位分析

    文章目录 一 Qt程序Release版本记录崩溃信息 xff0c 并定位问题代码1 Release版本程序中生成pdb调试信息文件2 添加代码将程序崩溃时的堆栈保存为crash dmp文件3 使用 WinDbg 分析crash dmp文件
  • Qt项目入门

    一个简单的项目 该项目涉及tcp服务端客户端通信 xff0c 数据库操作 xff0c Log4Qt日志打印 xff0c 不过是关于工业与上位机的一个简单项目处理 xff0c 过程不一定容易理解 xff0c 附上通讯协议 Qt5 12 Min
  • delete this注意事项

    参考资料 在类中调用delete this问题
  • c++较常用的库函数

    不知道原创是谁 xff0c 转载自 xff1a https blog csdn net laozhuxinlu article details 51878947 C 43 43 常用库函数 如图1所示 xff0c 常用数学函数 头文件 in
  • 学习c++的50个网站

    原 xff1a http blog chinaunix net uid 20548989 id 2979724 html 大家都说学Java好找工作 xff0c 可是Java我都遗忘好久了 xff0c 大一大二荒废了 xff0c 没好好练编
  • 数据预处理-数据清洗之numpy创建及属性

    什么是数据预处理 xff1f 数据预处理 xff08 data preprocessing xff09 是指在主要的处理以前对数据进行的一些处理 一般我们得到的数据会存在有缺失值 重复值等 xff0c 在使用之前需要进行数据预处理 它是一系

随机推荐

  • 数据预处理-数据清洗之numpy访问与计算

    如何访问numpy数组中的元素 xff1f 采用索引或者切片的方式 span class token comment 导入包 span span class token keyword import span numpy span clas
  • Unity Spine 换图(通过外部图片)

    在spine中 xff0c 如果想通过外部一张单独的来替换动画中的某个部位 xff0c 需要手动创建Attachment using UnityEngine using System Collections using Spine Unit
  • stm32 esp8266 ota升级-hex合并-烧录-bin生成

    stm32 esp8266 ota系列文章 xff1a stm32 esp8266 ota 快速搭建web服务器之docker安装openresty stm32 esp8266 ota升级 tcp模拟http stm32 esp8266 o
  • 字符串与字符数组的大小

    验证字符串与字符数组的大小 xff0c 代码如下 xff1a include lt stdio h gt int main 字符串与字符数组的区别 int data 61 1 2 3 4 5 char cdata 61 39 h 39 39
  • 数据预处理-数据清洗之pandas库的简单使用

    创建一个series span class token comment 导入包 span span class token keyword import span numpy span class token keyword as span
  • Minimum Snap轨迹规划详解(1)轨迹规划

    一 轨迹规划是什么 xff1f 在机器人导航过程中 xff0c 如何控制机器人从A点移动到B点 xff0c 通常称之为运动规划 运动规划一般又分为两步 xff1a 1 路径规划 xff1a 在地图 xff08 栅格地图 四 八叉树 RRT地
  • RealsenseD415/D435深度相机常用资料汇总

    1 Realsense SDK 2 0 Ubuntu 16 04 安装指导网址 https github com IntelRealSense librealsense blob master doc distribution linux
  • C++STL详解三:迭代器

    C 43 43 STL详解三 xff1a 迭代器 文章目录 C 43 43 STL详解三 xff1a 迭代器前言一 迭代器是什么二 迭代器的案例 xff1a List迭代器的简化版代码1 简单分析List的储存方式2 List的迭代器 三
  • cpp-httplib库的简介与工作流程

    A C 43 43 11 single file header only cross platform HTTP HTTPS library It s extremely easy to setup Just include the htt
  • audiowrite函数用法(matlab)

    audiowrite函数用法 xff08 matlab xff09 一 xff0c 语法 1 2 audiowrite filename y Fs audiowrite filename y Fs Name Value 二 xff0c 解释
  • 5G协议 基本架构 专有名词简称和缩写

    1 先来两个5G架构图 专有名词解释 xff1a 5GC 5G generation core Network 5G核心网络 NG RAN Next generation radio access network 下一代无线接入网络 AMF
  • 加速度计和陀螺仪互补滤波(转载)

    简单易懂的理解 xff1a 这么说吧 xff0c 加速度计计算出来的角度干扰比较大 xff0c 波形比较杂乱 xff0c 陀螺仪融合出来的波形比较平稳但是存在积分漂移 xff0c 所以二者结合 陀螺仪测量角速度积分的基础上利用加速度计测量的
  • 关于精度、分辨率、LSB的理解

    1 精度 是用来描述物理量的准确程度的 精度有关的有两个很重要的指标 xff1a DNL INL DNL xff1a Differencial NonLiner 微分非线性度INL xff1a Interger NonLiner 积分非线性
  • MPU6050教程(转载)

    如果你想玩四轴 xff0c 想搞什么空中鼠标 xff0c 平衡车等待 xff0c 那么MPU6050真的是太强大了 xff0c 能做很多东西 但是论坛上MPU6050整个教学过程基本上是没有的 xff0c 资源共享 xff0c 不应该只在自
  • Swift 中使用SDWebImage

    SDWebImage是开发中常用的插件 xff0c 主要用于加载外部图片 xff0c 具有缓存图片资源的功能 xff0c 然而SDWebImage是由Object C所写 步骤 xff1a 下载SDWebImage https github
  • VSCode的多个(C/C++)源文件的编译运行(Linux)

    引言 VSCode作为微软推出的一款免费的轻量级的集成开发环境 xff0c 可谓是良心之作 它拥有VS的高颜值 xff0c 而且像瑞士军刀一样 xff0c 拥有丰富的插件 xff0c c c 43 43 java python js htm
  • Android 任务栈简介

    Android 任务栈简介 一个Android应用程序功能通常会被拆分成多喝Activity xff0c 而各个Activity之间通过Intent进行连接 xff0c 而Android系统 xff0c 通过栈结构来保存整个App的Acti
  • Error: Invalid character in header content [“Authorization“]

    GET https xxxxxx com api getToken Body 34 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 eyJleHAiOjE2NzkzMTM5MDB9 VgZnHxBUqR3I PZD
  • 标准C++库有哪些

    C 43 43 标准库的内容基本可以分以下为10类 xff1a C1 标准库中与语言支持功能相关的头文件 C2 支持流输入 输出的头文件 C3 与诊断功能相关的头文件 C4 定义工具函数的头文件 C5 支持字符串处理的头文件 C6 定义容器
  • 示波器解析串口数据

    文章目录 前言一 示波器准备二 硬件介绍三 软件四 串口TTL数据协议1 波特率2 数据起始和停止信号3 数据有效位4 数据校验位 五 示波器探头连接五 串口数据波形捕获 方式1 xff1a 示波器自带的decode进行解码方式2 xff1