当前位置: 首页 > news >正文

逻辑分析仪的使用-以STM32C8T6控制SG90舵机为例

1.逻辑分析仪作用

        逻辑分析仪在嵌入式开发中的作用非常重要,它是开发、调试和排错过程中的一个不可或缺的工具。具体来说,逻辑分析仪的作用包括以下几个方面:
1.信号捕获和分析: 逻辑分析仪能够实时捕获多个数字信号,并对其进行详细分析。对于嵌入式系统,尤其是硬件和软件交互复杂时,能够监控微处理器的I/O引脚、外设的工作状态及总线通信(如SPI、I2C、UART等),从而帮助开发人员快速诊断系统的问题。
2.时序分析: 在嵌入式开发中,时序问题是非常常见的,尤其是涉及到多任务并发执行或者高频信号的处理时。逻辑分析仪可以精确地捕捉信号的时序关系,帮助开发者验证硬件和软件是否按预期工作,特别是时钟信号、数据传输的时序等。
3.协议分析: 对于串行通信协议(如I2C、SPI、CAN等),逻辑分析仪可以解析和显示协议中的数据内容,帮助开发人员检查协议是否正确实现,数据是否传输正确。这对于嵌入式系统开发中的调试非常有帮助,避免了人工手动分析数据包的繁琐。
4.故障排查: 在嵌入式系统开发过程中,硬件或软件的故障往往难以直接判断。使用逻辑分析仪可以捕捉到异常信号或状态,帮助开发人员定位问题的根源。例如,电路中的短路、干扰、数据丢失等问题,逻辑分析仪都能提供重要线索。
5.性能优化: 对嵌入式系统进行性能优化时,逻辑分析仪可以帮助开发人员检查信号传输的速度和延迟,发现瓶颈并优化电路设计或代码逻辑。特别是在处理实时数据时,时延问题可以通过逻辑分析仪进行详细监控和优化。
6.硬件和软件调试结合: 逻辑分析仪可以与软件调试器配合使用,进行硬件和软件的联合调试。比如,在嵌入式系统中,软件在控制硬件时可能会遇到一些不可预见的情况,逻辑分析仪能够在硬件层面捕获到数据,提供给软件开发人员更详细的信息。

2.逻辑分析仪选型

        选型逻辑分析仪时,需要根据具体的嵌入式开发需求、项目的复杂程度以及预算等因素来综合考虑。以下是选型时需要关注的几个关键指标:
1.通道数
        通道数决定了逻辑分析仪能够同时监控多少个信号。对于大多数嵌入式系统,至少需要8个通道,复杂的系统可能需要更多通道(如16、32甚至64通道)。选择时应考虑系统中的信号数量,尤其是高并发和多总线的情况。
2. 采样率(Sample Rate)
        采样率就是一秒钟能采样多少个点,决定了分析仪捕捉信号变化的精度,。高采样率可以更精确地捕捉高频信号。低速应用:一般来说,1-2 GS/s(十亿次/秒)就足够;高速应用:对于需要更高精度的应用,特别是调试高速信号时,可能需要更高的采样率(如10 GS/s以上)。
3. 采样深度(Memory Depth)
        采样深度就是一次采样最多能存储多少个点,决定了逻辑分析仪能捕捉到的数据量,也即它能够存储多长时间的信号数据。较大的采样深度有助于分析长时间的信号波形,而不容易丢失信息。如果涉及到长时间的数据采集和复杂信号分析,选择采样深度大的模型是很有必要的。
4. 信号电压范围
        逻辑分析仪需要与待测设备的信号电压范围匹配。常见的信号电压标准包括 3.3V、5V、TTL、CMOS等。如果你的嵌入式系统使用的是特定的电压级别,需要确保选择的逻辑分析仪支持这些电压范围。还需注意是否需要支持差分信号(如LVDS、RS-485等),这些信号可能需要额外的探头或特定的硬件支持。

3.以Kingst LA1010型号逻辑分析仪为例分析

3.1 逻辑分析仪的连接

购买了逻辑分析仪后,商家会给你发一份资料,主要包括逻辑分析仪驱动程序和使用指南,成功安装好逻辑分析仪的驱动后,将逻辑分析仪的USB端接入电脑,在此电脑->设备->设备管理器->通用串行总线控制器里可以看到逻辑分析仪的驱动,如下图所示。

然后打开逻辑分析仪客户端,会自动识别逻辑分析仪,并且此时左下角显示设备未连接

 设备连接成功后,客户端的左上角和左下角会同时显示设备已连接,并且显示设备型号。

3.2 单片机控制SG90舵机的原理

        我们本次是以STM32C8T6控制SG90舵机为例分析逻辑分析仪的使用,SG90舵机的控制逻辑就是单片机发出PWM波,控制舵机的转动。通俗的说就是一个PWM波的周期是20ms,舵机在0度的时候对应的是高电平0.5ms,低电平19.5ms;45度的时候对应的是高电平1.0ms,低电平19ms;90度的时候对应的是高电平1.5ms,低电平18.5ms;135度的时候对应的是高电平2.0ms,低电平18ms;180度的时候对应的是高电平2.5ms,低电平17.5ms。

3.3 硬件电路接线

 

与单片机的接线

STM32C8T6单片机 PA1黄线PWM
STM32C8T6单片机 5V红线5V
STM32C8T6单片机 GND棕线GND
STM32C8T6单片机  5V0.96寸OLED屏幕VCC
STM32C8T6单片机  GND0.96寸OLED屏幕GND
STM32C8T6单片机  PB60.96寸OLED屏幕SCL
STM32C8T6单片机  PB70.96寸OLED屏幕SDA

3.3 源代码讲解

代码详解请看B站上传的源码讲解视频:

3.4 逻辑分析仪看分析PWM波形

因为我们这次只是抓单片机PA1产生的PWM波形去驱动SG90舵机,所以将PA1引脚焊接处一根信号线接到逻辑分析仪的任意一个通道上,我选择接到通道0上,任何被测信号都要接GND,所以从单片机上的GND引脚焊接处一根线接到逻辑分析仪的GND通道。

接好后打开客户端,重点看通道0,根据奈奎斯特采样定理,采样需要必须要是被测信号的2倍以上才可以正确采样到信号,但是工程中一般采用5倍或者10倍,我们的舵机PWM波信号周期是20ms,那么频率是周期的倒数,就是1/20ms=50Hz,所以10倍以上就是500Hz,我们的逻辑分析仪最低采样频率是200KHz,所以我们选择20KHz就可以满足要求,那么采样时间是采样深度/采样频率,所以采样深度选择20KSa,采样时间就是20K/20K=1S,1秒钟足够了,因为我们的周期是20ms,一秒钟就有50个20ms。然后就是选择触发方式,我们选择下降沿触发,因为在定时器初始化里是默认高电平,那么PWM开始由高电平到低电平才是下降沿开始。

 然后点击上面的绿色三角号开始采样,采样完毕后屏幕上就会出现波形,看通道0的波形,我们通过右边的时间标尺A1和A2量出一个周期确实是20ms

 此时我们的舵机角度是0度。

        根据舵机的控制原理,0度的时候高电平在一个周期内是0.5ms,也就是500us,我们再次通过时间标尺也测量出一个周期内的高电平占的时间就是500us。

 

我们通过按键改变舵机控制角度为90度,此时屏幕上显示90度,舵机也实际转动到了90度。

         根据舵机的控制原理,90度的时候高电平在一个周期内是1.5ms,也就是1500us,我们再次通过时间标尺也测量出一个周期内的高电平占的时间就是1.5ms。

除此之外,我们还可以通过逻辑分析仪支持的常见通信协议直接配置,并且能导出测量的波形数据,常见的通信协议支持如下图

 选择客户端右边的解析器+号,然后选择PWM协议,选择通道0,选择高电平计数。

 然后通过解析器旁边的小齿轮设置,把数据导出CSV格式,用excel打开

打开后可以看到在1S时间内采集了49个数据,舵机的PWM周期是20ms,所以1秒内就能采集到50个数据,实际是采集到了49个数据,误差可以接受 。

 

4.源代码获取方式

 源代码链接如下:

 

 


http://www.mrgr.cn/news/90585.html

相关文章:

  • Linux系统调用
  • MySQL 入门大全:数据类型
  • DataBase【MySQL基础夯实使用说明(下)】
  • 浏览器网络请求全流程深度解析
  • Llama_Index核心组件介绍
  • 【设计模式】【行为型模式】状态模式(State)
  • Redis7.0八种数据结构底层原理
  • Spring Boot + ShardingSphere 踩坑记
  • 前缀树算法篇:前缀信息的巧妙获取
  • 动态规划LeetCode-416.分割等和子集
  • 动态规划LeetCode-1049.最后一块石头的重量Ⅱ
  • 计算机网络和操作系统常见面试题目(带脑图,做了延伸以防面试官深入提问)
  • 小白零基础如何搭建CNN
  • UGUI Canvas为Overlay模式下的UI元素的position和localPosition
  • 【Matlab算法】基于人工势场的多机器人协同运动与避障算法研究(附MATLAB完整代码)
  • C++病毒(^_^|)(2)
  • 变化检测相关论文可读list
  • 位运算算法篇:异或运算
  • 2、k8s 二进制安装(详细)
  • Ubuntu 22.04 - OpenLDAP安装使用(服务器+LAM+客户端)