ESP8266毫秒微秒延时测量

陈拓 chentuo@ms.xab.ac.cn 2020/06/19-2020/06/22

1. 概述

在实际工作中我们经常用到较为精确的延时,比如在读取温度传感器DS18B20时。

ESP8266 Non-OS SDK的延时函数os_delay_us的最大值是65535us,我们可以通过循环来增加延时。

我们用来测量的样品是ESP8266-01S,测试仪器是广州致远的LA1016逻辑分析仪。

2. 毫秒级延时

  • 测试代码
#include "gpio.h"

LOCAL void ICACHE_FLASH_ATTR delay_ms(u32 x)
{
    for(;x>0;x--) {
        os_delay_us(1000);
    }
}

void user_init(void)
{
    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U,FUNC_GPIO2);

	while(1) {
		GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 1);
		delay_ms(1);
		GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 0);
		delay_ms(1);
	}
}

代码写在文件user_main.c的void user_init(void)函数中。

  • 逻辑分析仪设置

  • 测试

ESP8266先上电,在逻辑分析仪界面上点击“启动(单次)”按钮

查看波形,测量时间。

高电平延时:

一个周期延时:

可以看到1ms的延时很准确。

3. 微秒级延时

  • 1us测试代码
    while(1) {
        GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 1);
        os_delay_us(1);
        GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 0);
        os_delay_us(1);
    }
  • 逻辑分析仪设置

  • 波形和时间测量

高电平延时:

低电平延时:

可以看到1us延时实测超过2us,而且高低电平延时有差异。

一个周期的测量:

  • 10us测试代码
 while(1) {

        GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 1);

        os_delay_us(10);

        GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 0);

        os_delay_us(10);

}
  • 10us波形和测量

高电平延时:

一个周期延时:

由此可以看出微秒延时误差大约是+1us~+2us。时间越短误差越大。


http://www.niftyadmin.cn/n/1733244.html

相关文章

数据库中索引会失效的几种情况(oracle)

文章目录数据库中索引会失效的几种情况(oracle)1. 没有 WHERE 子句2. 使用 IS NULL 和 IS NOT NULL3. WHERE 子句中使用函数4. 使用 LIKE ‘%T’ 进行模糊查询5. WHERE 子句中使用不等于操作6. 等于和范围索引不会被合并使用7. 比较不匹配数据类型8. 复合…

挂接Windows文件共享

挂接Windows文件共享Windows网络共享的核心是SMB/CIFS,在linux下要挂接(mount)windows的磁盘共享,就必须安装和使用samba 软件包。现在流行的linux发行版绝大多数已经包含了samba软件包,如果安装linux系统时未安装samba请首先安装samba。当然…

RabbitMQ第一个实操小案例

文章目录二、RabbitMQ实操小案例2.1 Hello World!2.2 Spring AMQP二、RabbitMQ实操小案例 进入RabbitMQ的官网。选择 Document 菜单项,然后点击Tutorials下的 Get Started。我们可以看看官网给我们的案例实操。 里面一共有7个Demo,下面我们…

Log4j的配置文件

Log4j支持两种配置文件格式,一种是java属性文件(键—值),一种是xml格式文件。 这里仅介绍下java属性文件的配置方法。先看看个配置文件:log4j.properties log4j.rootCategorydebug,stdout,R log4j.appender.stdoutorg.…

lombok插件各个注解介绍

内容參考網址:https://blog.csdn.net/sunsfan/article/details/53542374 文章目录lombok插件各个注解介绍一、IDEA下载和配置lombok二、Lombok各注解介绍2.1 NonNull2.2 Cleanup2.3 Getter/Setter2.4 ToString2.5 EqualsAndHashCode2.6 NoArgsConstructor/RequiredA…

修改placeholder的样式

在input框中有时想将输入的字和placeholder设为不同的颜色或其它效果,这时就可以用以下代码来对placeholder进行样式设置了。 1 ::-webkit-input-placeholder{} /* 使用webkit内核的浏览器 */ 2 :-moz-placeholder{} /* Firefox版本4-18 */ 3 :…

使用命令设置ubuntu的ip地址

使用命令设置ubuntu的ip地址新装了ubuntu,虽然使用图形界面明明已经设置好了ip,网关等等,但是不能上网。一个朋友提醒说,也许是设置的问题,试试命令行的设置。于是搜索了一下怎么设置,结果还真的成功了。具…

RabbitMQ第三个实操小案例——发布者/订阅者(Publish/Subscribe)、广播交换器(FanoutExchange)

文章目录RabbitMQ第三个实操小案例——发布者/订阅者(Publish/Subscribe)、广播交换器(FanoutExchange)写法一、配置类配置方式写法二、注解方式(RabbitListener)RabbitMQ第三个实操小案例——发布者/订阅者…