• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

示波器串口数据

武飞扬头像
不会飞De鸟
帮助1

前言

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

一、示波器准备

一般的示波器即可,我采用的示波器是鼎阳的200MHZ带宽,1G/S的采样率。
学新通

二、硬件介绍

使用乐鑫的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串口发送数据是否有效,是一个很好的验证方式。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgkiaeh
系列文章
更多 icon
同类精品
更多 icon
继续加载