目录
一、keil5仿真
分析背景:基于stm32cubemx下移植的uC/Os操作系统,并实现三个task任务,两个LED任务加上串口输出任务。
具体工程可查看博客
基于stm32cubemx移植uC/OS-III操作系统_Laul Ken-Yi的博客-CSDN博客
1.1 新建debug.ini文件
新建文本文件
输入以下debug配置,否则keil仿真会报错
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 打开keil小魔法棒
在②处将刚刚创建的debug文件加入。
1.3 进入调试界面
设置要观察对应的引脚,在前面博客提到的使用串口1,PB0,PB1口。
- 知识点:
GPIOB_IDR是GPIO的IDR寄存器功能为读对应的I/O口的状态:
如:GPIOA->IDR & 0x0001 即为 PA-1的电平状态,IDR寄存器的16位对应了该GPIO的P0-P15
1.4 波形结果
分析:先看串口输出,一个格子对应1s当经过两个格子即2s串口输出一次信号,对于PB0,在工程中设置的是1s亮1s熄灭,由仿真图可以看出刚好是1s为高电平,1s为低电平。对于PB1,通过数格子可以看到是3s一次高电平,3s一次低电平,与工程中设置3s一次对应。
串口详情:
二、逻辑分析仪真实抓取分析
2.1 插入逻辑分析仪
可以看到标题处变成了connected,start simulation也变成了start。
设置成下降沿输出
2.2 实物连线图
2.3 抓取串口数据
将对应管道夹道对应的管脚
可以看到串口真实输出波形与仿真波形一致,它的间隔也是接近于2s,虽然它是1.999s有1ms的差距。
2.4 抓取LED0,PB0的数据
可以看出它的高电平低电平持续时间是1s钟,它的频率是0.5HZ,T=2s,占空比为50%,与仿真波形完全吻合。
2.5 抓取LED1,PB1的数据
可以看出它的高电平和低电平持续时间是3s钟,有一定的误差这里是3.001s,有1ms的偏差,占空比为50.02%,T=6S,频率为0.1667HZ。
2.6 抓取I2C协议
基于I2C的AHT20温度采集工程。具体过程参考博客:基于I2C的AHT20温度采集器以及基于SPI协议OLED显示_Laul Ken-Yi的博客-CSDN博客
这里设置要分析的I2C协议,这样可以设计想通过哪些通道观察对应的SDA和SCL通道。
逻辑分析仪与电路板接线图:
逻辑分析仪 | 开发板 |
CH0 | PB8(SCL) |
CH2 | PB9(SDA) |
GND | GND |
- 结果:
由图中绿色小点代表信号开始采集,红色代表结束
当 SCL 线是高电平时 SDA 线从高电平向低电平切换,这个情况表示通讯的起始。当 SCL 是高电平时 SDA线由低电平向高电平切换,表示通讯的停止。
对于I2C协议前面有所提到,当SCL为高电平时,SDA才有作用, 每一个上升沿读取一个bit,则第一个波形对应的二进制信号为01110001,而最后一个是I2C协议的一个应答信号,当SDA为低电平时表示ACK希望继续接收信号,当SDA为高电平表示NAK表示不接收信号了。
但是相比之前博客,在真实抓取过程中出现了毛刺现象
这个毛刺是由于悬空时并且还插着杜邦线所造成的容性串扰(串饶是两条信号线之间的
耦合、信号线之间的互感和互容引起线上的噪声。)但在这里表示的是ACK信号。
2.7 抓取SPI协议
基于SPI的OLED显示工程。具体过程参考博客:基于I2C的AHT20温度采集器以及基于SPI协议OLED显示_Laul Ken-Yi的博客-CSDN博客
逻辑分析仪与电路板接线图:
逻辑分析仪 | 开发板 |
CH0 | PB15(MOSI) |
CH2 | PB13(CLK) |
CH3 | PB12(NSS) |
GND | GND |
Analyzers选择SPI协议
- 结果:
当CH3即NSS为低电平时SPI协议开始工作,而当CH2即时钟信号在上升沿则MOSI和MISO同步开始发送和采集信号。占空比为67.09%,频率为101.3kHZ。
三、总结
通过对波形的仿真与通过逻辑分析仪抓取最真实的波形,更加深层次的理解了协议的工作原理,可以看出仿真波形与实际波形基本是一致的,心里还是挺高兴的,一次就成功了,加强了自己的动手能力,以及查阅资料的能力。
参考文献:零死角玩转 STM32F103—指南者.pdf