观察信号波形——Keil仿真调试 / SaleaeLogic16逻辑仪

本文详细介绍了如何使用Keil仿真示波器和SaleaeLogic16逻辑分析仪观测STM32引脚及串口波形。在Keil中配置.ini文件进行仿真调试,观测到PC13、PA3引脚及串口的周期性变化。使用SaleaeLogic16进行真实测量,虽有微小误差,但波形与预期相符。通过对串口通信协议的分析,验证了波形的正确性。总结了两种方法的波形观测结果,并分析了误差产生的可能原因。
摘要由CSDN通过智能技术生成

一、使用 Keil 仿真示波器逻辑分析引脚变化

1.1 调试前配置

  1. 打开 Keil 工程
    这里的过程代码是基于HAL库STM32F103C8T8移植uCOS中实现三个任务的工程文件
  2. 在工程的MDK-ARM文件夹下创建一个.txt文件,添加以下内容:
map 0x40000000, 0x40007FFF read write // APB1
map 0x40010000, 0x400157FF read write // APB2
map 0x40020000, 0x4007FFFF read write // AHB1
map 0x50000000, 0x50060BFF read write // AHB2
map 0x60000000, 0x60000FFF read write // AHB3
map 0xE0000000, 0xE00FFFFF read write // CORTEX-M4 internal peripherals
  1. 将.txt文件后缀名改为.ini
    在这里插入图片描述
    若更改后“文件类型”没有变为配置设置 ,则可在最上面的文件->选项打开文件夹选项,
    在这里插入图片描述
    查看取消勾选 隐藏已知文件的扩展名,即可直接把**.txt修改为.ini**;
    在这里插入图片描述

  2. 将文件添加到工程项目
    点击魔法棒,在Dubug界面,将创建的.ini文件添加到工程中,点击OK即可;
    在这里插入图片描述

1.2 调试观测

  1. 点击右上方的Debug按钮,进入调试界面;
    在这里插入图片描述

  2. 选择Logic Analyzer
    在这里插入图片描述

  3. 点击Setup…
    在这里插入图片描述

  4. 添加并设置引脚和串口
    添加如图所示的3个引脚和串口,将这 3 个观测信号的Display Type改为Bit显示,可配置颜色,最后点击Close关闭设置窗口;
    在这里插入图片描述

  5. 点击左上角的Run按钮,全速运行;
    在这里插入图片描述

  6. 运行结果
    在这里插入图片描述
    观察上面的逻辑分析仪波形结果可以看到:
    PC13 引脚输出电平周期为 1s,PA3引脚输出电平周期为 3s,串口输出周期为 2s。

1.3 结果分析

对比main.c中的引脚和串口代码:

  1. PC13 引脚:在这里插入图片描述

  2. PA3 引脚:
    在这里插入图片描述

  3. USART1 串口:
    在这里插入图片描述
    分析上述代码可知,代码中的周期设置与逻辑分析仪的波形电平周期一致。

二、使用真实逻辑仪 SaleaeLogic16 观测波形

2.1 SaleaeLogic16 软件的安装

链接:https://pan.baidu.com/s/1Zpg5V44uO_Ly907CdCtm5A
提取码:bstv
根据自己电脑的操作系统选择对应的版本安装,开始安装之后一直next即可,可修改软件的安装位置。
具体使用操作可参考:
逻辑分析仪的简单使用介绍(附带i2c、串口、spi数据分析)

2.2 LED波形观测结果

波形采集后保存,进入观测:

  1. PC13引脚:
    在这里插入图片描述
    图中的 PC13 引脚的 LED 控制周期信号的实际周期为:0.999…s,与设置的 1s 周期有一点误差,波形电压幅度一致。

  2. PA3引脚:
    在这里插入图片描述
    图中的 PA3 引脚的 LED 控制周期信号的实际周期为:3.00132…s,与设置的 3s 周期有一点误差,波形电压幅度一致。

  3. 误差分析
    造成理论周期与实际测量存在较小误差的原因可能是逻辑分析仪连接或实验工具质量问题等,产生了较小的时间误差。

2.3 串口波形观测结果

  1. UART串口输出:
    在这里插入图片描述
  2. 结合串口通信协议分析
    UART 使用的是异步串行通信。
    异步通信以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,然而在同一个字符中的两个相邻位间的时间间隔是固定的。
    串口通信协议数据传送时,每一个字符为10 位1 个起始位,7 个数据位,1 个校验位,1 个结束位
    在这里插入图片描述

起始位—先发出一个逻辑“ 0 ”信号,表示传输字符的开始;
数据位—可以是 5~8 位逻辑“ 0 ”或“ 1 ”;
校验位—数据位加上这一位后,使得“ 1 ”的位数应为偶数(偶校验)或奇数(奇校验);
停止位—它是一个字符数据的结束标志。可以是 1 位、1.5 位、2 位的高电平;
空闲位—处于逻辑“ 1 ”状态,表示当前线路上没有资料传送。

从逻辑分析仪的波形可以看到,每一个字符为 10 位,有一个逻辑“ 0 ”的起始位,7 位数据位,1 为奇偶校验位,1 位高电平停止位,1 为处于逻辑“ 1 ”的空闲位。其中的数据位:1101000 即十六进制数 0x68。
可见,串口波形符合串口通信的数据传输格式。

三、小结

本文主要是对上篇博客中的信号波形进行了仿真示波器分析和真实逻辑仪观测,分别通过 keil 仿真示波器和逻辑分析仪来观测引脚波形,结果显示波形周期与代码设置的要求基本一致。另外还结合串口通信协议对UART进行了波形分析,加深对串口通信协议的理解与记忆。用逻辑分析仪观测周期时,与设置的周期稍有偏差,其原因可能是逻辑分析仪连接或实验工具质量问题等,但对结果影响不大,还是能通过波形比对,得出结论。

四、参考

  1. https://blog.csdn.net/xiaoyujiale/article/details/109009207
  2. 逻辑分析仪的简单使用介绍(附带i2c、串口、spi数据分析)
  3. https://blog.csdn.net/m0_58892312/article/details/121627183
  4. https://blog.csdn.net/qq_54496810/article/details/121701313?spm=1001.2014.3001.5501
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值