ESP32-S3 GPIO翻转速度怎么这么慢呢?

pyg111
Posts: 1
Joined: Sat May 21, 2022 3:01 am

ESP32-S3 GPIO翻转速度怎么这么慢呢?

Postby pyg111 » Sat May 21, 2022 3:27 am

示例代码改了改,基本上直接操作寄存器了,60ns翻转,请教各位高工正常么?是否还能提高?实际项目中要模拟一个通信协议,至少要20到30ns翻转才行。
Attachments
逻辑分析仪测量esp32-s3翻转.png
逻辑分析仪测量翻转
逻辑分析仪测量esp32-s3翻转.png (13.25 KiB) Viewed 7894 times
esp32-s3翻转代码.png
测量翻转的代码
esp32-s3翻转代码.png (27.79 KiB) Viewed 7894 times

ESP_morris
Posts: 290
Joined: Wed Sep 05, 2018 6:23 am

Re: ESP32-S3 GPIO翻转速度怎么这么慢呢?

Postby ESP_morris » Sat May 21, 2022 4:07 am

可以试试用CPU指令去翻转GPIO:https://docs.espressif.com/projects/esp ... _gpio.html

想要活的最高的翻转速率,记住直接写内联汇编

ESP_morris
Posts: 290
Joined: Wed Sep 05, 2018 6:23 am

Re: ESP32-S3 GPIO翻转速度怎么这么慢呢?

Postby ESP_morris » Sat May 21, 2022 4:09 am

另外,真不建议使用gpio去模拟任何协议,尤其是在一个RTOS环境下。你可以看看能否用RMT硬件构造出你要的时序:https://docs.espressif.com/projects/esp ... s/rmt.html

ESP_Yake
Posts: 111
Joined: Mon Mar 06, 2017 12:23 pm

Re: ESP32-S3 GPIO翻转速度怎么这么慢呢?

Postby ESP_Yake » Wed May 25, 2022 1:52 am

同意,RMT 硬件非常灵活,协议一般的格式 RMT 都可以搞的定,GPIO模拟翻转的太频繁容易导致系统不稳定

Finna_zu
Posts: 2
Joined: Fri Feb 14, 2025 9:47 am

Re: ESP32-S3 GPIO翻转速度怎么这么慢呢?

Postby Finna_zu » Fri Feb 14, 2025 9:52 am

可以直接反转io引脚寄存器,当前测试,反转io大概需要3个时钟周期,我是用esp32-s3,240mhz工作频率下,大概只有8ns左右。
参考

Code: Select all

GPIO.out_w1ts = (1 << BLINK_GPIO);
GPIO.out_w1tsc = (1 << BLINK_GPIO);

Finna_zu
Posts: 2
Joined: Fri Feb 14, 2025 9:47 am

Re: ESP32-S3 GPIO翻转速度怎么这么慢呢?

Postby Finna_zu » Fri Feb 28, 2025 11:13 am

补充一下,在社区中有人之前已经提过相关的话题了,参考:https://esp32.com/viewtopic.php?t=27963
根据我的了解,大致的思路主要有四个:
1. 类似题主,使用hal库来提高反转的速度。优点是,方便,配置内容少。缺点是,操作还是不够底层,速度上不去。
2. 直接操作寄存器。相关寄存器为:GPIO.out_w1tc GPIO.out_w1ts GPIO.out1_w1ts.val GPIO.out1_w1tc.val 。至于为什么是四个,和引脚的序号有关,前32个引脚使用GPIO.out_w1tc GPIO.out_w1ts,33-34使用GPIO.out1_w1ts.val GPIO.out1_w1tc.val,至于超过34引脚的,不太清楚有没有相关操作。
3.直接使用CPU调用,也就是cpu直接通过指令集操作io。需要使用#include "driver/dedic_gpio.h"库,并进行配置。这里的相关内容可以参考上述文章中大佬得回复。基本可以将io翻转时间降低到12ns(80MHZ主频下)。使用得相关配置可以参考官方示例中得软件i2c模拟示例代码。
4.如果是想要模拟时序和相关外设,使用rmt是不错得选择。我本来是打算作为步进电机驱动使用的,还在适配中,主要问题是步进电机的梯形加减法导致的脉冲周期是可变的。

Who is online

Users browsing this forum: No registered users and 78 guests