文章内容
:
在上篇文章中,在掌握 Keil 的仿真调试代码功能之外,也学习使用仪器对代码运行进行故障排查和功能调测。
- 练习使用示波器去观察 LED 输出电平和串口通信的波形,分析故障;
- 分别使用 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 软件安装
- 下载安装包
点击下面链接,下载安装包。
SALEAELOGIC16_(逻辑分析仪软件与说明书-可安装最新版软件,但须先看旧版软件目录下中文指南中的串口分析案例):https://pan.baidu.com/s/1LXJIvDVQwKM71V82eapegw
提取码:luha - 安装
根据自己的电脑操作系统选择对应的版本安装。
这里我用的操作系统是 win10 ,所以安装了Logic+Setup+1.1.34.exe
。
之后一直回车,安装比较简单,这里不再啰嗦。 - 安装完毕后,即可开启软件,显示出如下界面:
2.2 选择和配置演示通道
-
选择演示模式的通道
这里自己选择需要的通道个数。 -
每个通道的设置
第一项是波形幅值比例,可以通到进行修改不同的比例。
-
触发方式选择
上升沿、下降沿、双边沿,主要跟协议信号有关系,比如串口接收数据,起始位是低电平,配置为下降沿触发就可以。
-
选择信号观测
Analyzers 选项里面包含了很多协议,常用的串口、SPI、IIC、CAN 等等,都可以进行测量。
点击选择需要观测的输出:
依次保存 3 个通道观测,包括 PC13、PA3 两个 LED 引脚和 1 个 USART1 串口:
2.3 逻辑仪连接
逻辑分析仪 | 开发板 |
---|---|
CH0 | PA9 |
CH1 | PC13 |
CH2 | PA3 |
GND | GND |
连接逻辑分析仪后,左上角的采集按钮由以前的 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 仿真示波器和逻辑分析仪来观测引脚波形之后,可见观测波形与实际代码中设置的要求基本一致。此外主要对结合串口通信协议进行了波形分析。
文章如有问题,敬请读者指正。