示波器串口数据
前言
学习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
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13