keil仿真和使用逻辑分析仪调波形

目录

  • 一、使用keil仿真调试
    • 1.相关设置
    • 2.调试
  • 二、使用示波器查看
    • 1.下载软件
    • 2.软件介绍
    • 3.分析
  • 三、总结
  • 参考资料

基于上一篇博客STM32F103C8T6移植uCOS(HAL库)和STM32CubeMX HAL库 :RTC时钟

一、使用keil仿真调试

1.相关设置

(1)Target界面中,选择跟正确的晶振大小,我使用的是8MHz的外部晶振。这个选项在软件仿真中起到很重要的作用,如果选择错误,那么波形一定是错误的,因为时间不准确。
keil仿真和使用逻辑分析仪调波形_第1张图片
(2)Debug页的设置:
keil仿真和使用逻辑分析仪调波形_第2张图片
一般情况下这样设置后就可以调试出波形了,但是这次出现了错误:error 65: access violation at 0x40023800 : no 'read' permission
查阅相关资料,根本原因是:map地址空间权限映射有问题。部分地址空间没有读写的权限,造成程序不能自动运行。有两个解决办法:

  • 方法一:
    工程文件中新建“debug,ini”文件,在文件中添加map地址权限映射代码
    keil仿真和使用逻辑分析仪调波形_第3张图片
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文件:
keil仿真和使用逻辑分析仪调波形_第4张图片

然后再调试就不会有问题了。

  • 方法二:
    调试页面下,在DEBUG选项卡下选择Memory Map 选项如下图
    keil仿真和使用逻辑分析仪调波形_第5张图片
    keil仿真和使用逻辑分析仪调波形_第6张图片

2.调试

(1)点击Debug,进入调试界面:
在这里插入图片描述
(2)选择逻辑分析仪:
keil仿真和使用逻辑分析仪调波形_第7张图片
(3)选择要观察的引脚:
①点击Setup Logic Analyzer
keil仿真和使用逻辑分析仪调波形_第8张图片
②添加要观察的引脚:
输入PORTX.xx(X为A.B…;xx为引脚号,比如:PORTB.14)然后按回车;
输入USARTx_SR(x为数字)然后回车
keil仿真和使用逻辑分析仪调波形_第9张图片

(4)相关设置
在这里插入图片描述
(5)运行程序:
keil仿真和使用逻辑分析仪调波形_第10张图片

(6)观察波形
①uCOS移植
PB14:
keil仿真和使用逻辑分析仪调波形_第11张图片
PB15:
keil仿真和使用逻辑分析仪调波形_第12张图片

串口:
keil仿真和使用逻辑分析仪调波形_第13张图片

放大串口竖线部分的波形,可以看到它其实是很多条线:
keil仿真和使用逻辑分析仪调波形_第14张图片

再放大一点儿,其实刚才的也不是普通的一条竖线:
keil仿真和使用逻辑分析仪调波形_第15张图片

②RTC时钟
keil仿真和使用逻辑分析仪调波形_第16张图片

同样,放大竖线的部分看看,是由很多条宽度不完全相同的波形组成,:
keil仿真和使用逻辑分析仪调波形_第17张图片

二、使用示波器查看

1.下载软件

链接:https://pan.baidu.com/s/1ycY6O-N0oK-Wj74uQRn0fg
提取码:0526
选择合适的版本安装即可,安装时一直next就好了(当然改改路径最好了),我安装的是1.1.34的。

2.软件介绍

打开软件后的界面:
keil仿真和使用逻辑分析仪调波形_第18张图片

在安装软件的同时,驱动程序已经被注册到系统了了,当插入 SALEAE 16 逻辑分析仪后就可以自动安装安装驱动。

打开界面如下图,软件界面基本是左中右的布局,左边主要是采集和显示设置,右边是分析和解析设置,中间是波形显示区域。
keil仿真和使用逻辑分析仪调波形_第19张图片

无逻辑分析仪的时候显示 Disconnected,左边是8个通道,使用的时候根据硬件连接选择对应通过进行配置,中间部分是显示我们逻辑波形的区域,右边是添加一些协议数据格式,数据分析区域。
点 Start Simulation,可以在波形区域模拟显示出一些软件生成的数据,如果您设置了解析(解析设置方法在下面讲),可以根据所设置的协议,生成一些符合协议解析要求的模拟数值。

  • 由于默认的演示模式是 8 通道的,我们可以设置成 16 通道的。
    点击左上角的符号,之后弹出选择演示的设备:

  • 我们选择 LOGIC16 ,之后界面会出现一些 SALEAE16 的设置。
    keil仿真和使用逻辑分析仪调波形_第20张图片

  • 每个通道的设置
    第一项是波形幅值比例,可以通到进行修改不同的比例。
    keil仿真和使用逻辑分析仪调波形_第21张图片

  • 触发方式选择
    上升沿、下降沿、双边沿,主要跟协议信号有关系。
    keil仿真和使用逻辑分析仪调波形_第22张图片

  • Annotations 选项
    可以增加测量电平时间的组数,此处测量两组,类似示波器测量时间的标线。
    keil仿真和使用逻辑分析仪调波形_第23张图片

  • Analyzers 选项
    里面包含了很多协议,常用的串口、SPI、IIC、CAN 等等,都可以进行测量。
    keil仿真和使用逻辑分析仪调波形_第24张图片

3.分析

3.1 连线
GND----GND
PA9(串口)-----CH0(可以自己随便选通道)
PB15(LED)-----CH1
PB14(LED)----CH2
经硬件插到电脑上后,start simulation会变为start。
3.2 Analyzerss设置
添加3个Async Serial(波特率设为115200,与程序对应)
keil仿真和使用逻辑分析仪调波形_第25张图片

keil仿真和使用逻辑分析仪调波形_第26张图片

点击左上角start的右边的小三角设置好通道参数:主要是时间
3.2 开始观测波形
点击start后会弹出一个框,等进度条走完后就可以看到波形了
keil仿真和使用逻辑分析仪调波形_第27张图片
在右下角显示着串口发送的数据,
Channel 0 观测的是 USART1 串口信号波形,可见,电平变化周期是 2s ;
Channel 1 观测的是 PB15 引脚信号波形,可见,电平变化周期是 3s (亮 0.5s 灭 2.5s );
Channel 2 观测的是 PB14 引脚信号波形,可见,电平 0.5s 变化一次(亮 0.5s 灭 0.5s )。
与之前的 keil 仿真观测结果相比较可以看出,二者的波形基本对应一致,且均符合代码中设置的电平变化要求。

放大转折部分看看:
在这里插入图片描述

可以看到接串口的通道的输出内容(中文不行)。
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,可见串口通信的实际传输速率与理论相近,只存在一点点误差,可能是设备问题造成的。

在这里插入图片描述

三、总结

在进行仿真调试时,最开始没有设置debug.ini的时候波形不太好调出来(不能全速运行,想得到波形恐怕得点几万次,点到手废),在注意到左下角的错误后,在网上查找了相关资料,引入了debug.ini文件后就能完美得到波形了。

参考资料

STM32F4 MDK5软件仿真 error : no ‘read’ permission - 0111always - 博客园 (cnblogs.com)
https://blog.csdn.net/m0_58892312/article/details/121411070

你可能感兴趣的:(stm32,c++,物联网)