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

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.rhkb.cn/news/17278.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性代数 第七讲 二次型_标准型_规范型_坐标变换_合同_正定二次型详细讲解_重难点题型总结

文章目录 1.二次型1.1 二次型、标准型、规范型、正负惯性指数、二次型的秩1.2 坐标变换1.3 合同1.4 正交变换化为标准型1.5 可逆线性变换和正交变换1.6 二次型化标准形,二次型化规范形的联系思考1.8 两个二次型联系的思考1.9 对于配方法问题的深入思考 2.二次型的主…

vue学习9

1.文章分类页面-element-plus表格 基本架子-PageContainer封装 按需引入的彩蛋&#xff0c;components里面的内容都会自动注册 用el-card组件&#xff0c;里面使用插槽或具名插槽 文章分类渲染 & loading处理 序号&#xff1a; <el-table-column type"index"…

Spring Boot整合DeepSeek实现AI对话(API调用和本地部署)

本篇文章会分基于DeepSeek开放平台上的API&#xff0c;以及本地私有化部署DeepSeek R1模型两种方式来整合使用。 本地化私有部署可以参考这篇博文 全面认识了解DeepSeek利用ollama在本地部署、使用和体验deepseek-r1大模型 Spring版本选择 根据Spring官网的描述 Spring AI是一…

硬件电路(10)-二极管

一、概述 二极管是用半导体材料(硅、硒、锗等)制成的一种电子器件。它具有单向导电性能&#xff0c; 即给二极管阳极和阴极加上正向电压时&#xff0c;二极管导通。 当给阳极和阴极加上反向电压时&#xff0c;二极管截止。 因此&#xff0c;二极管的导通和截止&#xff0c;则相…

智慧农业-虫害及生长预测

有害生物防控系统是一个综合性的管理体系&#xff0c;旨在预防和控制对人类生活、生产甚至生存产生危害的生物。这些生物可能包括昆虫、动物、植物、微生物乃至病毒等。 一、系统构成 1、监测预警系统&#xff1a;利用智能传感器、无人机、遥感技术等手段&#xff0c;实时监测…

在 PyCharm 中接入deepseek的API的各种方法

在 PyCharm 中接入 DeepSeek 的 API&#xff0c;通常需要以下步骤&#xff1a; 1. 获取 DeepSeek API 密钥 首先&#xff0c;确保你已经在 DeepSeek 平台上注册并获取了 API 密钥&#xff08;API Key&#xff09;。如果没有&#xff0c;请访问 DeepSeek 的官方网站注册并申请 …

DeepSeek 助力 Vue 开发:打造丝滑的返回顶部按钮(Back to Top)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

Github自定义readme文件 个人主页简介 模版

自己写的 样式 # &#x1f44b; Hi bro , Im Dduo ! Glad to meet you &#x1f601;&#x1f60d;&#x1f61c;- &#x1f4da; Im Dduo, a student. Feel free to reach out if youd like to chat or collaborate! &#x1f60a; - &#x1f4ac; Dont hesitate to reach …

【工业安全】-CVE-2022-35561- Tenda W6路由器 栈溢出漏洞

文章目录 1.漏洞描述 2.环境搭建 3.漏洞复现 4.漏洞分析 4.1&#xff1a;代码分析 4.2&#xff1a;流量分析 5.poc代码&#xff1a; 1.漏洞描述 漏洞编号&#xff1a;CVE-2022-35561 漏洞名称&#xff1a;Tenda W6 栈溢出漏洞 威胁等级&#xff1a;高危 漏洞详情&#xff1…

CondaValueError: Malformed version string ‘~‘: invalid character(s)

CondaValueError: Malformed version string ‘~‘: invalid character(s) 送一张 GPT plus 、 deepseek-R1 满血 体验卡&#xff5e; https://bbs.csdn.net/topics/619568415 ​ 报错原因 使用conda安装一些库时出现以下报错&#xff1a; CondaValueError: Malformed versio…

渗透利器:YAKIT 工具-基础实战教程.

YAKIT 工具-基础实战教程. YAKIT&#xff08;Yak Integrated Toolkit&#xff09;是一款基于Yak语言开发的集成化网络安全单兵工具&#xff0c;旨在覆盖渗透测试全流程&#xff0c;提供从信息收集、漏洞扫描到攻击实施的自动化支持。其核心目标是通过GUI界面降低Yak语言的使用…

【Git版本控制器】:第一弹——Git初识,Git安装,创建本地仓库,初始化本地仓库,配置config用户名,邮箱信息

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux网络编程 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 ​ 相关笔记&#xff1a; https://blog.csdn.net/dj…

数据结构(6)

注意&#xff1a;只有前序和中序或者后序和中序才能还原二叉树。 1.创建一个二叉树 2.遍历一个二叉树&#xff08;前序遍历&#xff0c;后序和中序遍历与此类似&#xff09; 3.寻找二叉树的节点个数和层数 4.销毁二叉树 5.层序遍历

LabVIEW用户界面设计原则

在LabVIEW开发中&#xff0c;用户界面&#xff08;UI&#xff09;设计不仅仅是为了美观&#xff0c;它直接关系到用户的操作效率和体验。一个直观、简洁、易于使用的界面能够大大提升软件的可用性&#xff0c;尤其是在复杂的实验或工业应用中。设计良好的UI能够减少操作错误&am…

大语言模型入门

大语言模型入门 1 大语言模型步骤1.1 pre-training 预训练1.1.1 从网上爬数据1.1.2 tokenization1.1.2.1 tokenization using byte pair encoding 1.3 预训练1.3.1 context1.3.2 training1.3.3 输出 1.2 post-training1.2.1 token 1.2 SFT监督微调1.3 人类反馈强化学习1.3.1 人…

Windows 11 下 Ollama 安装与 OpenWebUI 调用 DeepSeek-R1 的详细指南

文章目录 Windows 11 下 Ollama 安装与 OpenWebUI 调用 DeepSeek-R1 的详细指南一、Ollama 的安装与配置1. 下载 Ollama2. 安装 Ollama3. 验证 Ollama 安装 二、部署 DeepSeek-R1 模型1. 拉取 DeepSeek-R1 模型2. 启动 DeepSeek-R1 模型 三、OpenWebUI 的安装与配置1. 安装 Pyt…

JVM ②-双亲委派模型 || 垃圾回收GC

这里是Themberfue 在上节课对内存区域划分以及类加载的过程有了简单的了解后&#xff0c;我们再了解其他两个较为重要的机制&#xff0c;这些都是面试中常考的知识点&#xff0c;有必要的话建议背出来&#xff0c;当然不是死记硬背&#xff0c;而是要有理解的背~~~如果对 JVM …

君海游戏岗位,需要私我

游戏岗位内推啦&#xff0c;需要找我哈 共14个职位 广告投放主管 社会招聘全国 广告投放 社会招聘全国 设计主管 社会招聘全国 海外投放 社会招聘广东省广州市 海外运营 社会招聘广东省广州市 产品运营专员 社会招聘广东省广州市 平台运营 社会招聘广东…

制药行业 BI 可视化数据分析方案

一、行业背景 随着医药行业数字化转型的深入&#xff0c;企业积累了海量的数据&#xff0c;包括销售数据、生产数据、研发数据、市场数据等。如何利用这些数据&#xff0c;挖掘其价值&#xff0c;为企业决策提供支持&#xff0c;成为医药企业面临的重大挑战。在当今竞争激烈的…

【BUUCTF逆向题】[WUSTCTF2020]level3(魔改base64)

一.[WUSTCTF2020]level3 打开IDA反汇编&#xff0c;发现就是base64加密 这里rand就是与&搭配设置奇偶数2分随机 但是根据提示不是标准base64加密 首先想到魔改密码表&#xff0c;追踪进去&#xff0c;发现没有什么变化啊 尝试对Base64字符串解码也不对 追踪密码表CtrlX发…