【杂谈理解】STM32F103引脚反转速度时间

前言

  事情的起因是最近我在使用F103编写WS2812彩灯的时序时遇到了一些小问题。具体来说,我发现WS2812的'1'码的低电平部分的时序无法达到要求的220ns~380ns,而只能到大约580ns左右。因此,我开始对引脚的反转速度进行了一些测试。下面数据仅是我通过逻辑分析仪检测,如有偏差或错误的地方欢迎指出。

环境

  • STM32C8T6系统板,主频72MHz
  • 空载,代指只有反转引脚函数运行的环境
  • 下述提到的HAL库代码,都是基于STM32CubeMX生成的
  • '0’码,'1’码,我对WS2812时序电平的称呼,每个码都是有不同时长的高低电平组成的

检测

  • 标准库,上电默认的主频,空载

    高电平:200ns 低电平:380ns 周期:580ns

    在这里插入图片描述

  • HAL库,72MHz,空载

    高电平:375ns 低电平:292ns 周期:667ns

    在这里插入图片描述

  • HAL库,72MHz,函数中

    高电平:375ns 低电平:542ns 周期:917ns

    在这里插入图片描述

  • 总结

      通过上述测试截图以及我实际测试可以看出的是,引脚电平反转在空载的时候才能刚好满足220ns~380ns这个延时段,看似可以满足WS2812时序,但是别忘了发送时序的过程中,还有经历高低位的定位及电平判断之类的,无疑会延长上一个电平的时间,导致时序不是很标准,明显存在在误差,从我发的最后一张图就能看出来。

      我对WS2812的时序的函数上优化判断位,和减少不必要函数跳转等等上,却始终到不到标准时序要求,要么是’1’码标准了,程序时序对于’0’码来说就超时了,要么就相反。

  • 我的WS2812程序实际测到的时序

    '1’码:(低电平部分未满足,取值应当为220ns~380ns,过长了)

    在这里插入图片描述

    '0’码:(满足)

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值