使用 keil 仿真调试和 SaleaeLogic16 逻辑仪观察 uC/OS-III 多任务系统信号的波形

文章内容
上篇文章中,在掌握 Keil 的仿真调试代码功能之外,也学习使用仪器对代码运行进行故障排查和功能调测。

  1. 练习使用示波器去观察 LED 输出电平和串口通信的波形,分析故障;
  2. 分别使用 Keil 虚拟仿真逻辑仪和真实逻辑仪( SaleaeLogic16 )抓取 LED 输出电平串口通信的波形,进行协议分析。

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

1.1 调试前配置

  • 打开 keil 代码工程
    这里的过程代码用的是上篇文章中实现三个任务的工程文件。
  • 调试前配置
    ① 在 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

② 将文件后缀改为:.ini
如下:
在这里插入图片描述
③ 将文件添加到工程项目
在这里插入图片描述

1.2 调试观测

  • 进入调试界面
    点击 Debug,进入调试。
    在这里插入图片描述
  • 选择逻辑分析仪
    在这里插入图片描述
  • 点击 Setup...
    在这里插入图片描述
  • 添加和设置引脚和串口
    将 3 个观测信号的的 Display Type 改为 Bit 显示,并可以为其配置颜色,最后点击 Close。
    在这里插入图片描述
  • 点击左上角的 Run ,全速运行
    在这里插入图片描述
  • 结果
    在这里插入图片描述

1.3 结果分析

观察上面的示波器逻辑分析仪结果可以看到:
PC13 引脚输出电平周期为 1s,PA3 引脚输出电平周期为 3s,串口输出周期为 2s。
对比 main.c 中的代码:
PC13 引脚:
在这里插入图片描述
PA3 引脚:
在这里插入图片描述
USART1 串口:
在这里插入图片描述
可以看到,代码中的周期设置与逻辑分析仪的波形电平周期一致。

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

2.1 SaleaeLogic16 软件安装

2.2 选择和配置演示通道

  • 选择演示模式的通道
    在这里插入图片描述
    这里自己选择需要的通道个数。

  • 每个通道的设置
    第一项是波形幅值比例,可以通到进行修改不同的比例。
    在这里插入图片描述

  • 触发方式选择
    上升沿、下降沿、双边沿,主要跟协议信号有关系,比如串口接收数据,起始位是低电平,配置为下降沿触发就可以。
    在这里插入图片描述

  • 选择信号观测
    Analyzers 选项里面包含了很多协议,常用的串口、SPI、IIC、CAN 等等,都可以进行测量。
    点击选择需要观测的输出:
    在这里插入图片描述
    依次保存 3 个通道观测,包括 PC13、PA3 两个 LED 引脚和 1 个 USART1 串口:
    在这里插入图片描述

2.3 逻辑仪连接

在这里插入图片描述

逻辑分析仪开发板
CH0PA9
CH1PC13
CH2PA3
GNDGND

连接逻辑分析仪后,左上角的采集按钮由以前的 START STMULTAR
在这里插入图片描述
变成了 START:
在这里插入图片描述
此外可以看到,标题从逻辑分析仪无连接:
在这里插入图片描述变成了有连接:
在这里插入图片描述
这时便可以进行数据采集,观测信号逻辑波形。

2.4 效果观测

点击左上角的 START 进行采集数据之后,可以看到下面波形
在这里插入图片描述
图中,
在右下角显示着串口发送的数据,
Channel 0 观测的是 USART1 串口信号波形,可见,电平变化周期是 2s ;
Channel 1 观测的是 PC13 引脚信号波形,可见,电平 1s 变化一次(亮 1s 灭 1s );
Channel 2 观测的是 PA3 引脚信号波形,可见,电平 3s 变化一次(亮 3s 灭 3s )。
与之前的 keil 仿真观测结果相比较可以看出,二者的波形基本对应一致,且均符合代码中设置的电平变化要求。

2.5 LED 波形分析

  • LED 波形观察
    ① PC13 引脚的 LED 信号波形:
    在这里插入图片描述
    图中的 PC13 引脚的 LED 控制周期信号的实际周期为:0.999…s,与设置的 1s 周期有一点误差,波形电压幅度一致。
    ② PA3 引脚的 LED 信号波形:
    在这里插入图片描述
    图中的 PA3 引脚的 LED 控制周期信号的实际周期为:3.00132…s,与设置的 3s 周期有一点误差,波形电压幅度一致。
  • LED 波形分析
    造成理论周期与实际测量存在较小误差的原因可能是逻辑分析仪连接或实验工具质量问题等,产生了时间较小误差。

2.6 串口波形结合串口通信协议分析

2.6.1 串口波形观察

USART1 串口输出时的具体数据如下图:
在这里插入图片描述

2.6.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。
    可见,串口波形符合串口通信的数据传输格式。
    在这里插入图片描述

  • 串口通信协议数据传送速率用波特率来表示,即每秒钟传送的二进制位数。
    数据的波特率为 1s 传送的码元符号的个数。
    从逻辑分析仪的波形可以看到,实际传输一个比特时间为 8.75 us,而之前设置的波特率为 115200,即理论上传输一个比特时间为 1/115200=8.68 us,可见串口通信的实际传输速率与理论相近,只存在一点点误差,可能是设备问题造成的。
    在这里插入图片描述

3 总结

本篇文章主要是对上篇博客中的信号波形进行了仿真示波器分析和真实逻辑分析仪观测,通过 keil 仿真示波器和逻辑分析仪来观测引脚波形之后,可见观测波形与实际代码中设置的要求基本一致。此外主要对结合串口通信协议进行了波形分析。
文章如有问题,敬请读者指正。

4 参考资料

  1. Saleae Logic 16 逻辑分析仪的安装并对信号进行测量
  2. 逻辑分析仪的简单使用介绍(附带i2c、串口、spi数据分析)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值